Для импорта реквизита из 1С в каталог товаров необходимо произвести следующие шаги:
- Добавить необходимый реквизит к справочнику «Номенклатура» в 1С. Добавление реквизита описано в документации к модулю обмена «Интернет-магазин» на примере реквизита «ПубликоватьНаСайте» (пункт 8).
-
Добавить информацию о реквизите в файл конфигурации XML1cV8ExchangeDriverСonfig.xml, находящийся в папке WMIMBase, в раздел справочника номенклатуры:
<OBJECT> <!-- Справочник: Номенклатура --> ... <!-- выгружаемые реквизиты --> <ATTRIBS> ... <ATTRIB> <NAME-1C>Свойство1</NAME-1C> <NAME>FIELD_1</NAME> </ATTRIB> </ATTRIBS> </OBJECT>
В примере выше Свойство1 – это имя созданного в 1С реквизита в справочнике «Номенклатура»; FIELD_1 – уникальный идентификатор реквизита
- Производим полную выгрузку из 1С и убеждаемся, что новый реквизит присутствует в выгрузке:
<CatalogObject.Номенклатура> … <Свойство1>Значение свойства</Свойство1> </CatalogObject.Номенклатура>
- Далее необходимо настроить импорт на стороне сайта. Для этого нужно внести дополнительную информацию в файл конфигурации XML1cV8ExchangeDriverСonfig.xml, который должен быть размещён в папке /_local на сайте.
В каждый атрибут <attrib> для импортируемого поля добавляются дополнительные теги. Обязательным тегом является <ami-action>, который означает тип действия над полем при импорте. Он может иметь следующие значения: copy, replace, on_special, reference.
Рассмотрим подробнее каждое действие.
-
copy – выполняется при простом копировании значения реквизита в поле каталога товара. Дополнительно используются теги:
<AMI-DB-FIELD> - содержит имя поля в каталоге товаров;
Имена полей можно узнать в документации по API:
описание общих полей, описание полей товаров.
<AMI-CAT> - используется если нужно, чтобы значение реквизита было скопировано в поле категории. В таком случае значением тега должно быть true. Если значение реквизита импортируется в поле товара, то тег использовать не нужно.
Приведём несколько примеров с объяснениями:
- Значение реквизита Свойство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>
- Значение реквизита Свойство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>
- Значение реквизита Свойство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>
-
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» при импорте будут заменены на «Да» и «Нет» соответственно.
Пример использования:
-
<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> должно быть уникальным!
-
on_special – выполняется при импорте специальных признаков (Специальный, Товар дня итд.). Значение реквизита в выгрузке при этом должно быть true или false. Реквизит добавляется аналогично флагу ПубликоватьНаСайте. Дополнительно используется тег <AMI-SPECIAL-NUM>- содержит номер специального признака (нумерация начинается с нуля).
-
<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>
из описания справочника «Производители» (см. выше).
На этом настройка импорта завершена.
Внимание!
Перед тестированием обязательно создайте резервную копию базы данных!
|