Центр документации
Карта сайта

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


Расширенная настройка импорта товаров



Для импорта реквизита из 1С в каталог товаров необходимо произвести следующие шаги:

  1. Добавить необходимый реквизит к справочнику «Номенклатура» в 1С. Добавление реквизита описано в документации к модулю обмена «Интернет-магазин» на примере реквизита «ПубликоватьНаСайте» (пункт 8).
  2. Добавить информацию о реквизите в файл конфигурации XML1cV8ExchangeDriverСonfig.xml, находящийся в папке WMIMBase, в раздел справочника номенклатуры:

    <OBJECT>
    <!-- Справочник: Номенклатура -->
    ...
    <!-- выгружаемые реквизиты -->
    <ATTRIBS>
    ...
    <ATTRIB>
    <NAME-1C>Свойство1</NAME-1C>
    <NAME>FIELD_1</NAME>
    </ATTRIB>
    </ATTRIBS>
    </OBJECT>
    В примере выше Свойство1 – это имя созданного в 1С реквизита в справочнике «Номенклатура»; FIELD_1 – уникальный идентификатор реквизита
  3. Производим полную выгрузку из 1С и убеждаемся, что новый реквизит присутствует в выгрузке:

    <CatalogObject.Номенклатура>

    <Свойство1>Значение свойства</Свойство1>
    </CatalogObject.Номенклатура>


  4. Далее необходимо настроить импорт на стороне сайта. Для этого нужно внести дополнительную информацию в файл конфигурации XML1cV8ExchangeDriverСonfig.xml, который должен быть размещён в папке /_local на сайте.
    В каждый атрибут <attrib> для импортируемого поля добавляются дополнительные теги. Обязательным тегом является <ami-action>, который означает тип действия над полем при импорте. Он может иметь следующие значения: copy, replace, on_special, reference.
    Рассмотрим подробнее каждое действие.
    1. copy – выполняется при простом копировании значения реквизита в поле каталога товара. Дополнительно используются теги:

      <AMI-DB-FIELD> - содержит имя поля в каталоге товаров; Имена полей можно узнать в документации по API: описание общих полей, описание полей товаров.

      <AMI-CAT> - используется если нужно, чтобы значение реквизита было скопировано в поле категории. В таком случае значением тега должно быть true. Если значение реквизита импортируется в поле товара, то тег использовать не нужно.

      Приведём несколько примеров с объяснениями:
      1. Значение реквизита Свойство1 будет скопировано в поле custom_field_12 (Дополнительное поле номер 12) товара.

        <ATTRIB>
        <NAME-1C>Свойство1</NAME-1C>
        <NAME>FIELD_1</NAME>
        <AMI-ACTION>copy</AMI-ACTION>
        <AMI-DB-FIELD>custom_field_12</AMI-DB-FIELD>
        </ATTRIB>
      2. Значение реквизита Свойство1 будет скопировано в поле body (Описание) товара.

        <ATTRIB>
        <NAME-1C>Свойство1</NAME-1C>
        <NAME>FIELD_1</NAME>
        <AMI-ACTION>copy</AMI-ACTION>
        <AMI-DB-FIELD>body</AMI-DB-FIELD>
        </ATTRIB>
      3. Значение реквизита Свойство1 будет скопировано в поле announce (Анонс) категории.

        <ATTRIB>
        <NAME-1C>Свойство1</NAME-1C>
        <AMI-CAT>true</AMI-CAT>
        <NAME>FIELD_1</NAME>
        <AMI-ACTION>copy</AMI-ACTION>
        <AMI-DB-FIELD>announce</AMI-DB-FIELD>
        </ATTRIB>
    2. replace – при импорте реквизита его значения будут заменяться в соответствии с правилами в конфигурационном файле. Дополнительно используются теги:
      <AMI-DB-FIELD> - содержит имя поля в каталоге товаров;
      <AMI-MAPPING> - секция содержит соответствие значений полей при импорте, например:

      <AMI-MAPPING>
      <AMI-VALUE-1C>true</AMI-VALUE-1C>
      <AMI-VALUE-DB>Да</AMI-VALUE-DB>
      </AMI-MAPPING>
      <AMI-MAPPING>
      <AMI-VALUE-1C>false</AMI-VALUE-1C>
      <AMI-VALUE-DB>Нет</AMI-VALUE-DB>
      </AMI-MAPPING>
      <AMI-VALUE-1C> - значение реквизита в выгрузке;
      <AMI-VALUE-DB> - значение которое будет сохранено в каталог при импорте.
      В примере выше, значения реквизитов в файле выгрузки «true» и «false» при импорте будут заменены на «Да» и «Нет» соответственно.

      Пример использования:

      1. <ATTRIB>
        <NAME-1C>ПубликоватьНаСайте</NAME-1C>
        <NAME>PUBLIC</NAME>
        <AMI-ACTION>replace</AMI-ACTION>
        <AMI-DB-FIELD>public</AMI-DB-FIELD>
        <AMI-MAPPING>
        <AMI-VALUE-1C>true</AMI-VALUE-1C>
        <AMI-VALUE-DB>1</AMI-VALUE-DB>
        </AMI-MAPPING>
        <AMI-MAPPING>
        <AMI-VALUE-1C>false</AMI-VALUE-1C>
        <AMI-VALUE-DB>0</AMI-VALUE-DB>
        </AMI-MAPPING>
        </ATTRIB>
        В этом примере предполагается, что мы добавили в выгрузку реквизит ПубликоватьНаСайте, который может принимать значения true или false. Далее мы хотим импортировать реквизит во флаг товара «Публиковать», для чего настраиваем соответствие значений: true/false при импорте будут преобразованы в 1/0 соответственно.
        Таким образом, после импорта товары со значением реквизита равным false станут распубликованными.

        Аналогично можно настроить импорт признака публикации для категорий, добавив тег <AMI-CAT>true</AMI-CAT>. Не забывайте, что значение тега <NAME> должно быть уникальным!
    3. on_special – выполняется при импорте специальных признаков (Специальный, Товар дня итд.). Значение реквизита в выгрузке при этом должно быть true или false. Реквизит добавляется аналогично флагу ПубликоватьНаСайте. Дополнительно используется тег <AMI-SPECIAL-NUM>- содержит номер специального признака (нумерация начинается с нуля).

      1. <ATTRIB>
        <NAME-1C>Свойство1</NAME-1C>
        <NAME>SPECIAL0</NAME>
        <AMI-ACTION>on_special</AMI-ACTION>
        <AMI-SPECIAL-NUM>0</AMI-SPECIAL-NUM>
        </ATTRIB>
        В этом примере импортируется признак товара «Специальный» (номер 0).

Импорт справочника

Отдельно рассмотрим тип действия reference. Это действие предназначено для импорта значений справочника и соответствующих дополнительных свойств товаров.

Допустим, в 1С существует справочник «Производители» и он включён в план обмена (см. инструкцию по добавлению модуля обмена в конфигурацию 1С). Также создан соответствующий реквизит «Производитель» для товаров.
Значения реквизита берутся из справочника.

Настраиваем конфигурационный файл XML1cV8ExchangeDriverСonfig.xml в папке WMIMBase следующим образом:

В раздел <OBJECTS> добавляем новый объект (справочник):


<OBJECTS>

<OBJECT>
<!-- Справочник: Производители -->
<OBJECT-INFO>
<NAME-OBJECT-1C>CatalogObject.Производители</NAME-OBJECT-1C>
<NAME-OBJECT>REFERENCE</NAME-OBJECT>
<DATA_TYPE>VENDOR</DATA_TYPE>
</OBJECT-INFO>
<ATTRIBS>
<ATTRIB>
<NAME-1C>Ref</NAME-1C>
<NAME>ID_EXTERNAL</NAME>
</ATTRIB>
<ATTRIB>
<NAME-1C>Description</NAME-1C>
<NAME>VENDOR_NAME</NAME>
</ATTRIB>
</ATTRIBS>
</OBJECT>

<OBJECTS>

В раздел «Справочник: Номенклатура» добавляем информацию о реквизите товара:


<OBJECT>
<!-- Справочник: Номенклатура -->
...
<!-- выгружаемые реквизиты -->
<ATTRIBS>
...
<ATTRIB>
<NAME-1C>Производитель</NAME-1C>
<NAME>VENDOR_NAME</NAME>
</ATTRIB>
</ATTRIBS>
</OBJECT>
Здесь Производитель – это имя созданного в 1С реквизита в справочнике «Номенклатура», который будет заполняться значениями из справочника «Производители»;
VENDOR_NAME – идентификатор реквизита. Обратите внимание, что он совпадает с атрибутом из описания справочника.

Производим полную выгрузку из 1С и убеждаемся, что данные присутствуют в выгрузке.
Во-первых, в выгрузку должны попасть данные справочника:


<CatalogObject.Производители>
<Ref> cf5f183b-1g410-r1dh-a9u1-071b8hf28kj6 </Ref>
<DeletionMark> false </DeletionMark>
<Code> 0005 </Code>
<Description> Vendor1 </Description>
< /CatalogObject.Производители >

Во-вторых, для номенклатуры должен появиться новый реквизит:


<CatalogObject.Номенклатура>

<Производитель>cf5f183b-1g410-r1dh-a9u1-071b8hf28kj6</Производитель>
</CatalogObject.Номенклатура>

Обратите внимание, значением реквизита является ссылка на элемент справочника.

Переходим к настройке импорта на сайте. Поле настройки файл конфигурации XML1cV8ExchangeDriverСonfig.xml нужно скопировать в папку /_local на сайте.

Создаём в панели управления на сайте справочник «Производители», в который будем импортировать справочник из 1С. Создаём свойство «Производитель», источником значений которого будет созданный ранее справочник. Подробней об этом читайте в документации.

Для дальнейшей настройки нам понадобится номер созданного справочника и номер свойства.

Далее находим в файле конфигурации XML1cV8ExchangeDriverСonfig.xml информацию о реквизите Производитель и добавляем следующие атрибуты:


<OBJECT>
<!-- Справочник: Номенклатура -->
...
<!-- выгружаемые реквизиты -->
<ATTRIBS>
...
<ATTRIB>
<NAME-1C>Производитель</NAME-1C>
<NAME>VENDOR_NAME</NAME>
<AMI-ACTION>reference</AMI-ACTION>
<AMI-REFERENCE-NUM>9</AMI-REFERENCE-NUM>
<AMI-CUSTOM-FIELD-NUM>12</AMI-CUSTOM-FIELD-NUM>
<AMI-REFERENCE-DATA-TYPE>VENDOR</AMI-REFERENCE-DATA-TYPE>
</ATTRIB>
</ATTRIBS>
</OBJECT>
Значения тегов NAME-1C и NAME остаются как были при добавлении реквизита. Добавляются следующие теги:
<AMI-ACTION>reference</AMI-ACTION> <AMI-REFERENCE-NUM>9</AMI-REFERENCE-NUM> - данный тег должен содержать номер справочника на сайте. <AMI-CUSTOM-FIELD-NUM>12</AMI-CUSTOM-FIELD-NUM> - тег содержит номер свойства. <AMI-REFERENCE-DATA-TYPE>VENDOR</AMI-REFERENCE-DATA-TYPE> - значение тега должно совпадать со значением тега <DATA_TYPE>VENDOR</DATA_TYPE> из описания справочника «Производители» (см. выше).

На этом настройка импорта завершена.

Внимание! Перед тестированием обязательно создайте резервную копию базы данных!

Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API)
 2000 – 2021 © Amiro.CMS Все права защищены.