Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 2 Гостей просматривают эту тему.

*

arbuzzz

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

Кто сталкивался с такой проблемой. Как решить?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #1 : 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/) приводятся образцы  стандартов выгрузки информации о заказах, которые ожидает 1С.

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

*

arbuzzz

  • **
  • 80
  • +1/-0
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #2 : 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/) приводятся образцы  стандартов выгрузки информации о заказах, которые ожидает 1С.

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

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

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

*

admin

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


Если есть возможность, опишите подробнее, что именно исправляли.

*

arbuzzz

  • **
  • 80
  • +1/-0
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #4 : 20 Октября 2014, 13:01:56 »
Сейчас прорабатываю два варианта обмена. 1ый - штатный (для УТ 11.1), второй через обмен, который заточен для Битрикса. На каждом есть свои проблемы. Как только получу приемлемый вариант хотя бы по одному, то распишу что и как делал и какой результат получил.

Вообще 1С - это взрыв мозга. Такое ощущение, что там вообще никто толком ничего не понимает и не знает что и как работает... Даже бухгалтера не могу толком объяснить что и откуда берется.

*

webkonditer

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #5 : 08 Ноября 2014, 12:24:14 »
Здравствуйте, уважаемые форумчане!
Подскажите пожалуйста, можно ли при первичной выгрузке каталога из 1С на сайт автоматически устанавливать в категориях и подкатегориях каталога атрибут "Показывать подменю"? Если да, то как?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #6 : 08 Ноября 2014, 12:34:19 »
вам необходимо внести изменений в xsl файл по принципу, который описан в данной статье Изменение значений полей h1 и title при обновлении данных

толкь осуть ваших изменений будет такая:
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>

          ........

*

webkonditer

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #7 : 08 Ноября 2014, 15:25:42 »
Спасибо, все получилось. Только я вставил в
<xsl:template match="Группы/Группа" mode="groups">

*

nitoiti

  • *
  • 3
  • +1/-0
    • Просмотр профиля
    • Grey-cat
Re:Интеграция с 1С
« Ответ #8 : 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С, то он теперь и не создается при выгрузке. Помогите решить.

*

webkonditer

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #9 : 22 Января 2015, 16:35:51 »
Снова с просьбой о помощи, уважаемые форумчане!
При выгрузке из 1с у товара присутствует свойство "Наличие". Как сделать так, чтобы при значении данного свойства "Нет у поставщика", у товара атрибут "is-active" принимал значение "0".
Заранее благодарен.
Немного кода из import.xml, чтобы было понятно о чем речь:

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

<ЗначенияСвойств>
               <ЗначенияСвойства>
                  <Ид>d5cd3f30-6033-11e4-bd0b-001d09cd0cf8</Ид>
                  <Значение>Нет у поставщика</Значение>
               </ЗначенияСвойства>

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Интеграция с 1С
« Ответ #10 : 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>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

webkonditer

  • *
  • 5
  • +0/-0
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #11 : 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>


*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Интеграция с 1С
« Ответ #12 : 22 Марта 2015, 19:07:50 »
Что-то не срабатывает. Может не туда код вставил?
.........

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

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

P.S. Добавил // в самое начало выражения

*

aizul

  • **
  • 94
  • +0/-0
    • Просмотр профиля
Re: Интеграция с 1С
« Ответ #13 : 23 Сентября 2015, 14:53:50 »
Необходима интеграция с программой 1С автовокзала. Создается сайт по онлайн продаже билетов. На официальном сайте указано, что минимальный интервал обновления программы и сайта 30 мин, а это очень долго. Возможно ли сделать обновления быстрее?
И вообще стоит ли интегрировать именно с Umi?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Интеграция с 1С
« Ответ #14 : 01 Января 2016, 03:27:35 »
На официальном сайте указано, что минимальный интервал обновления программы и сайта 30 мин, а это очень долго. Возможно ли сделать обновления быстрее?

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