При организации обмена данными между 1С:Управление торговлей 10.3 (или УПП 1.3) и сайтом на платформе 1С-Битрикс разработчики часто сталкиваются с ситуацией, когда стандартные реквизиты (например, артикул или наименование) выгружаются корректно, а дополнительные характеристики, такие как «Бренд», «Размер» или «Материал», на сайте не появляются. При этом в самом XML-файле данные могут присутствовать, но Битрикс их «не видит» или не знает, куда их сопоставить.
В этой статье мы подробно разберем механику работы стандарта CommerceML 2, выясним причину игнорирования свойств и научимся правильно передавать габариты товаров для торгового каталога.
Рассмотрим ситуацию, когда программист пытается добавить данные напрямую в узел товара, например, так:
<Товар>
<Артикул>тест</Артикул>
<Бренд>Адидас</Бренд>
<Размер>10</Размер>
</Товар>
Проанализируем этот подход. Тег Артикул является стандартным для схемы CommerceML, поэтому Битрикс его распознает. Однако теги Бренд и Размер не являются частью базовой спецификации для узла Товар. Система обмена Битрикса просто проигнорирует неизвестные ей теги. Чтобы сайт «увидел» эти данные, они должны передаваться либо как ЗначенияРеквизитов, либо как ЗначенияСвойств. Причем для работы со свойствами (фильтры, характеристики) критически важно соблюдать двухэтапную структуру передачи.
Выясним главную причину проблемы: Битрикс не создаст свойство «на лету» просто потому, что увидел его в карточке товара. Сначала свойство должно быть описано в секции Классификатор, которая обычно находится в начале файла import.xml. Здесь мы сообщаем сайту, какие типы данных мы будем передавать и какие у них Ид (GUID).
Рассмотрим пример правильного описания свойства в классификаторе:
<Классификатор>
<Свойства>
<Свойство>
<Ид>c5c6d005-7bda-4c91-9418-fb3db83d7c35</Ид>
<Наименование>Производитель</Наименование>
<ТипыЗначений>
<ТипЗначений>
<Тип>Справочник</Тип>
<Описание>Справочник ссылка: Значения свойств объектов</Описание>
<ВариантыЗначений>
<ВариантЗначения>
<Ид>4597a7b4-3b4a-11e5-8025-001e67078c59</Ид>
<Наименование>Atek Makina</Наименование>
</ВариантЗначения>
</ВариантыЗначений>
</ТипЗначений>
</ТипыЗначений>
</Свойство>
</Свойства>
</Классификатор>
Важный момент: Если свойство имеет тип «Справочник» (как «Бренд»), то в классификаторе должны быть перечислены все возможные значения. Если тип «Строка» или «Число», секция ВариантыЗначений не требуется.
После того как мы описали свойство в классификаторе, мы можем сослаться на него в блоке конкретного товара. Мы используем Ид свойства из классификатора и указываем конкретное значение.
Разберем, как это выглядит в XML для товара:
<Товар>
<Ид>755860ea-7d06-11df-8e3e-00034732d068</Ид>
<Наименование>Стенд для правки дисков</Наименование>
<ЗначенияСвойств>
<ЗначенияСвойства>
<Ид>c5c6d005-7bda-4c91-9418-fb3db83d7c35</Ид>
<Значение>4597a7b4-3b4a-11e5-8025-001e67078c59</Значение>
</ЗначенияСвойства>
</ЗначенияСвойств>
</Товар>
Обратите внимание, что в поле Значение для справочных свойств передается не текст «Atek Makina», а именно Ид этого значения, ранее описанный в классификаторе. Если свойство текстовое, то передается просто строка.
Рассмотрим вторую часть вопроса: как передать габариты так, чтобы они попали в Торговый каталог Битрикса (вкладка «Параметры»). Габариты в Битриксе — это не просто свойства инфоблока, это поля складского учета.
Для их передачи чаще всего используется механизм ЗначенияРеквизитов. Посмотрим на пример заполнения в XML:
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Наименование>Вес</Наименование>
<Значение>1.5</Значение>
</ЗначениеРеквизита>
<ЗначениеРеквизита>
<Наименование>Длина</Наименование>
<Значение>500</Значение>
</ЗначениеРеквизита>
<ЗначениеРеквизита>
<Наименование>Ширина</Наименование>
<Значение>300</Значение>
</ЗначениеРеквизита>
<ЗначениеРеквизита>
<Наименование>Высота</Наименование>
<Значение>200</Значение>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
Нюанс настройки: Чтобы эти реквизиты «сели» в нужные поля на сайте, в настройках модуля интеграции на стороне Битрикса (или в настройках внешнего модуля в 1С) необходимо указать соответствие. В последних версиях модуля обмена от Битрикс есть отдельная вкладка для сопоставления веса и габаритов.
В типовых конфигурациях УТ 10.3 и УПП 1.3 встроенный модуль обмена часто является устаревшим и поддерживает только базовые функции CommerceML. Рассмотрим преимущества установки внешнего модуля обмена от компании Битрикс:
Подведем итог. Если вы дорабатываете выгрузку программно или настраиваете стандартный модуль, проверьте следующие пункты:
Классификатор с уникальным Ид.ЗначенияСвойств, а не как произвольные XML-теги.Ид значения. Если строка — передавайте текст.BRAND), если это не сделала 1С, для удобства работы разработчиков сайта.Использование правильной структуры CommerceML гарантирует, что ваши данные будут корректно интерпретированы сайтом, а фильтры по брендам и размерам заработают автоматически сразу после обмена.