UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: arbuzzz от 15 Октября 2014, 13:52:36

Название: Интеграция с 1С
Отправлено: arbuzzz от 15 Октября 2014, 13:52:36
Установил на 1С модуль для интеграции с сайтом. Модуль при попытке обмена данными с магазином говорит:
Не удалось получить версию XML. Загрузка с сайта невозможна
Как я понял из форума битриксоидов дело в том что umi отдает данные в старом формате xml который как-то видоизменился в БУС 14.5

Кто сталкивался с такой проблемой. Как решить?
Название: Re:Интеграция с 1С
Отправлено: admin от 16 Октября 2014, 00:26:30
Как я понял из форума битриксоидов дело в том что umi отдает данные в старом формате xml который как-то видоизменился в БУС 14.5

Насколько я понимаю БУС 14.5 это код предназначенный для битрикс, а не для 1С и уж тем более umi или я ошибаюсь? Если нет то при чем он тут, если вы говорите о umi и 1С


Если вы говорите что umi что-то отдает 1С, то скорее всего вы говорите о выгрузке заказов из umi в 1С.

Ваша проблема может иметь несколько причин. Если отталкиваться от вашего предположения, что umi отдает xml который не нравиться 1С, то следует на сайте 1С найти спецификацию, которая ожидает ваша 1С. Точно утверждать не буду, но в самом низу данной статьи (http://v8.1c.ru/edi/edi_stnd/131/ (http://v8.1c.ru/edi/edi_stnd/131/)) приводятся образцы  стандартов выгрузки информации о заказах, которые ожидает 1С.

Осталось получить xml, который отдает umi и сравнить их. Для того чтобы посмотреть xml, который отдает umi.
- Открываем модуль "Обмен данными",
- заходим на вкладку "Экспорт"
- создаем новый экспорт (руководство можно посмотреть тут (http://help.docs.umi-cms.ru/rabota_s_modulyami/modul_obmen_dannymi/eksport_dannyh/))
- заполняем название экспорта и поле "Формат экспорта" (Список заказов в формате CommerceML 2.0) после чего сохраняем его
- возвращаемя на вкладку "Экспорт".
- выбираем наш экспорт (щелкните по строчке с нашим экспортом, но не по названию)
- сверху появится кнопка "выполнить экспорт"
- вас спросят в файл или тут же посмотреть результаты, после чего вы можете их сравнить с тем что ждет 1С
Название: Re:Интеграция с 1С
Отправлено: arbuzzz от 16 Октября 2014, 12:24:23
Как я понял из форума битриксоидов дело в том что umi отдает данные в старом формате xml который как-то видоизменился в БУС 14.5

Насколько я понимаю БУС 14.5 это код предназначенный для битрикс, а не для 1С и уж тем более umi или я ошибаюсь? Если нет то при чем он тут, если вы говорите о umi и 1С


Если вы говорите что umi что-то отдает 1С, то скорее всего вы говорите о выгрузке заказов из umi в 1С.

Ваша проблема может иметь несколько причин. Если отталкиваться от вашего предположения, что umi отдает xml который не нравиться 1С, то следует на сайте 1С найти спецификацию, которая ожидает ваша 1С. Точно утверждать не буду, но в самом низу данной статьи (http://v8.1c.ru/edi/edi_stnd/131/ (http://v8.1c.ru/edi/edi_stnd/131/)) приводятся образцы  стандартов выгрузки информации о заказах, которые ожидает 1С.

Осталось получить xml, который отдает umi и сравнить их. Для того чтобы посмотреть xml, который отдает umi.
- Открываем модуль "Обмен данными",
- заходим на вкладку "Экспорт"
- создаем новый экспорт (руководство можно посмотреть тут (http://help.docs.umi-cms.ru/rabota_s_modulyami/modul_obmen_dannymi/eksport_dannyh/))
- заполняем название экспорта и поле "Формат экспорта" (Список заказов в формате CommerceML 2.0) после чего сохраняем его
- возвращаемя на вкладку "Экспорт".
- выбираем наш экспорт (щелкните по строчке с нашим экспортом, но не по названию)
- сверху появится кнопка "выполнить экспорт"
- вас спросят в файл или тут же посмотреть результаты, после чего вы можете их сравнить с тем что ждет 1С

БУС 14.5 - Это Битрикс управление сайтом 14.5 Это их крайняя версия. Модуль обмена данными для импорта заказов в 1С заточили под эту версию.

Проблема оказалась в следующем:
На шаге инициализации модуль отправляет запрос к сайту для проверки версии CommerceML, который формируется сайтом. В полученном ответе он проверяет эту версию и именно её называет "версией xml". Для того что бы он начал принимать ответ от UMI надо исправлять метод auto модуля exchange. Так же надо вносить небольшие правки в формируемый файл экспорта, т.к. он отстает содержит реквизиты, которые видимо уже не актуальны для версии commerceML с которой хочет работать этот модуль.
Название: Re:Интеграция с 1С
Отправлено: admin от 16 Октября 2014, 15:14:15
Проблема оказалась в следующем:
На шаге инициализации модуль отправляет запрос к сайту для проверки версии CommerceML, который формируется сайтом. В полученном ответе он проверяет эту версию и именно её называет "версией xml". Для того что бы он начал принимать ответ от UMI надо исправлять метод auto модуля exchange. Так же надо вносить небольшие правки в формируемый файл экспорта, т.к. он отстает содержит реквизиты, которые видимо уже не актуальны для версии commerceML с которой хочет работать этот модуль.


Если есть возможность, опишите подробнее, что именно исправляли.
Название: Re:Интеграция с 1С
Отправлено: arbuzzz от 20 Октября 2014, 13:01:56
Сейчас прорабатываю два варианта обмена. 1ый - штатный (для УТ 11.1), второй через обмен, который заточен для Битрикса. На каждом есть свои проблемы. Как только получу приемлемый вариант хотя бы по одному, то распишу что и как делал и какой результат получил.

Вообще 1С - это взрыв мозга. Такое ощущение, что там вообще никто толком ничего не понимает и не знает что и как работает... Даже бухгалтера не могу толком объяснить что и откуда берется.
Название: Re:Интеграция с 1С
Отправлено: webkonditer от 08 Ноября 2014, 12:24:14
Здравствуйте, уважаемые форумчане!
Подскажите пожалуйста, можно ли при первичной выгрузке каталога из 1С на сайт автоматически устанавливать в категориях и подкатегориях каталога атрибут "Показывать подменю"? Если да, то как?
Название: Re:Интеграция с 1С
Отправлено: admin от 08 Ноября 2014, 12:34:19
вам необходимо внести изменений в xsl файл по принципу, который описан в данной статье Изменение значений полей h1 и title при обновлении данных (http://wiki.umisoft.ru/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_h1_%D0%B8_title_%D0%BF%D1%80%D0%B8_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)

толкь осуть ваших изменений будет такая:
1. скопировать в custom файл шаблон для товаров
<xsl:template match="Товары/Товар">
...
2. найти в нем описание свойств в группе common и в самое начало (это не принципиально, но чтобы вы не путались, давайте писать в начало), поместить код, для заполнения поля "Показывать подменю"
.......
<properties>
        <group name="common">
          <title>Основные параметры</title>

          <!-- наш код-->
          <property name="show_submenu" type="boolean">
            <title>Показывать подменю</title>
            <value>1</value>
          </property>

          ........
Название: Re:Интеграция с 1С
Отправлено: webkonditer от 08 Ноября 2014, 15:25:42
Спасибо, все получилось. Только я вставил в
<xsl:template match="Группы/Группа" mode="groups">
Название: Re:Интеграция с 1С
Отправлено: nitoiti от 11 Ноября 2014, 19:27:44
Тоже сижу над интеграцией с 1С и тоже все очень медленно, поскольку мне сами бухгалтеры толком никак не могут ответить, что и как у них работает сейчас и как все должно работать.

Есть вопрос.

Как мне при выгрузке(обновлении) товаров из 1С не менять название соответствующего товара на сайте.
пробовал в commerceML2.xsl Вот в этой части кода добавлять обрамляющий тег <default-value>:

...
<xsl:template match="Товары/Товар">
<xsl:param name="group_id" select="string(Группы/Ид)" />
<xsl:param name="name">
<xsl:choose>
<xsl:when test="string-length(ПолноеНаименование)">
<default-value><xsl:value-of select="ПолноеНаименование" /></default-value>
</xsl:when>
<xsl:otherwise>
<default-value><xsl:value-of select="Наименование" /></default-value>
</xsl:otherwise>
</xsl:choose>
</xsl:param>
...

Код получался вот такой:

...
<xsl:template match="Товары/Товар">
<xsl:param name="group_id" select="string(Группы/Ид)" />
<default-value>
<xsl:param name="name">
<xsl:choose>
<xsl:when test="string-length(ПолноеНаименование)">
<default-value><xsl:value-of select="ПолноеНаименование" /></default-value>
</xsl:when>
<xsl:otherwise>
<default-value><xsl:value-of select="Наименование" /></default-value>
</xsl:otherwise>
</xsl:choose>
</xsl:param>
</default-value>
...

Названия товаров действительно не менялись при выгрузке. Но это от того, что я их, видимо полностью отключил, поскольку, если на сайте нет товара из 1С, то он теперь и не создается при выгрузке. Помогите решить.
Название: Re:Интеграция с 1С
Отправлено: webkonditer от 22 Января 2015, 16:35:51
Снова с просьбой о помощи, уважаемые форумчане!
При выгрузке из 1с у товара присутствует свойство "Наличие". Как сделать так, чтобы при значении данного свойства "Нет у поставщика", у товара атрибут "is-active" принимал значение "0".
Заранее благодарен.
Немного кода из import.xml, чтобы было понятно о чем речь:

<Свойства>
         <Свойство>
            <Ид>d5cd3f30-6033-11e4-bd0b-001d09cd0cf8</Ид>
            <Наименование>Наличие</Наименование>
         </Свойство>
...

<ЗначенияСвойств>
               <ЗначенияСвойства>
                  <Ид>d5cd3f30-6033-11e4-bd0b-001d09cd0cf8</Ид>
                  <Значение>Нет у поставщика</Значение>
               </ЗначенияСвойства>
Название: Re:Интеграция с 1С
Отправлено: e.ioffe от 23 Января 2015, 02:01:13
Основа есть в wiki -
http://wiki.umisoft.ru/%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%B8%D0%BB%D0%B8_%D1%81%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BF%D1%80%D0%B8_%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%B8%D0%B7_1%D0%A1

<xsl:if test="ЗначенияСвойств/ЗначенияСвойства[Ид = current()/Свойства/Свойство[Наименование = 'Наличие']/Ид]/Значение = 'Нет у поставщика'">
  <xsl:attribute name="is-deleted">1</xsl:attribute>
</xsl:if>
Название: Re:Интеграция с 1С
Отправлено: webkonditer от 26 Января 2015, 15:41:15
Что-то не срабатывает. Может не туда код вставил?
<?xml version="1.0" encoding="UTF-8"?>
 
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"
xmlns:udt="http://umi-cms.ru/2007/UData/templates"
extension-element-prefixes="php"
exclude-result-prefixes="xsl php udt">
 

  <xsl:template match="Товары/Товар">
<xsl:param name="group_id" select="string(Группы/Ид)" />
<xsl:param name="name">
<xsl:choose>
<xsl:when test="string-length(ПолноеНаименование)">
<xsl:value-of select="ПолноеНаименование" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="Наименование" />
</xsl:otherwise>
</xsl:choose>
</xsl:param>

<page id="{Ид}" parentId="{$group_id}" type-id="{$group_id}">
<xsl:if test="Статус = 'Удален'">
<xsl:attribute name="is-deleted">1</xsl:attribute>
</xsl:if>
           
            <!--Мои вставки...-->
           <xsl:if test="ЗначенияСвойств/ЗначенияСвойства[Ид = current()/Свойства/Свойство[Наименование = 'Наличие']/Ид]/Значение = 'Нет у поставщика'">
  <xsl:attribute name="is-active">0</xsl:attribute>
</xsl:if>
            <!--...Мои вставки-->
                       
<xsl:if test="not(Группы/Ид)">
<xsl:attribute name="parentId"><xsl:value-of select="$catalog-id" /></xsl:attribute>
<xsl:attribute name="type-id">root-catalog-object-type</xsl:attribute>
</xsl:if>

<default-active><xsl:value-of select="$catalog_item_activity" /></default-active>
<default-visible><xsl:value-of select="$catalog_item_visible" /></default-visible>

<basetype module="catalog" method="object">Объекты каталога</basetype>

<name><xsl:value-of select="$name" /></name>

<xsl:if test="string-length($catalog_item_template)">
<default-template><xsl:value-of select="$catalog_item_template" /></default-template>
</xsl:if>

<properties>
<group name="common">
<title>Основные параметры</title>
<property name="title" type="string">
<title>Поле TITLE</title>
<default-value><xsl:value-of select="$name" /></default-value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<default-value><xsl:value-of select="$name" /></default-value>
</property>
</group>

<group name="product">
<title>1C: Общие свойства</title>
<xsl:if test="string-length(Описание)">
<property name="description" title="Описание" type="wysiwyg" allow-runtime-add="1">
<type data-type="wysiwyg" />
<title>Описание</title>
<value>
<xsl:choose>
<xsl:when test="Описание/@ФорматHTML = 'true'">
<xsl:value-of select="Описание"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="php:function('nl2br', string(Описание))" disable-output-escaping="yes" />
</xsl:otherwise>
</xsl:choose>
</value>
</property>
</xsl:if>
<property name="1c_catalog_id" type="string">
<title>Идентификатор каталога 1С</title>
<value><xsl:value-of select="$catalog-id" /></value>
</property>
<property name="1c_product_id" type="string">
<title>Идентификатор в 1С</title>
<value><xsl:value-of select="Ид" /></value>
</property>
<property name="artikul" type="string">
<title>Артикул</title>
<value><xsl:value-of select="Артикул" /></value>
</property>
<property name="bar_code" type="string">
<title>Штрих-код</title>
<value><xsl:value-of select="Штрихкод" /></value>
</property>
<property name="weight" type="float">
<title>Вес</title>
<value><xsl:value-of select="ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = 'Вес']/Значение"/></value>
</property>

<xsl:apply-templates select="Картинка" />


</group>

<xsl:apply-templates select="ЗначенияСвойств" />

</properties>
</page>
</xsl:template>
   
   
</xsl:stylesheet>

Название: Re:Интеграция с 1С
Отправлено: admin от 22 Марта 2015, 19:07:50
Что-то не срабатывает. Может не туда код вставил?
.........

сомнение вызывает xPath выражение
ЗначенияСвойств/ЗначенияСвойства[Ид = current()/Свойства/Свойство[Наименование = 'Наличие']/Ид]/Значение = 'Нет у поставщика'

так как это написано в шаблоне, который обрабатывает Товары/Товар, а ЗначенияСвойств/ЗначенияСвойства находиться в xml дереве в другой ветке (намного выше), то, возможно, вам надо поменять xPath выражение на такое
//ЗначенияСвойств/ЗначенияСвойства[Ид = current()/Свойства/Свойство[Наименование = 'Наличие']/Ид]/Значение = 'Нет у поставщика'

P.S. Добавил // в самое начало выражения
Название: Re: Интеграция с 1С
Отправлено: aizul от 23 Сентября 2015, 14:53:50
Необходима интеграция с программой 1С автовокзала. Создается сайт по онлайн продаже билетов. На официальном сайте указано, что минимальный интервал обновления программы и сайта 30 мин, а это очень долго. Возможно ли сделать обновления быстрее?
И вообще стоит ли интегрировать именно с Umi?
Название: Re: Интеграция с 1С
Отправлено: admin от 01 Января 2016, 03:27:35
На официальном сайте указано, что минимальный интервал обновления программы и сайта 30 мин, а это очень долго. Возможно ли сделать обновления быстрее?

А какой интервал нужен вам? и какой объем данный должен в этот интервал измениться, если ли какие-то кастомные макросы при синхронизации на стороне UMI?