При интеграции 1С с "1С-Битрикс: Управление сайтом" часто возникает задача отойти от стандартной структуры иерархии справочника Номенклатура. Типовая выгрузка обычно просто дублирует папки из 1С, но в бизнесе часто требуется иная логика: например, строить дерево разделов на основе дополнительных реквизитов, таких как Вид и Тип. В процессе реализации такой схемы разработчики часто сталкиваются с ошибкой "Обязательное поле 'Привязка к разделам' не заполнено" или некорректным созданием свойств на стороне сайта.
В этой статье мы подробно разберем, как должен выглядеть файл обмена import.xml, как правильно связать товар с разделом и как заставить Битрикс воспринимать свойства 1С как полноценные справочники (Highload-блоки).
Ошибка "Привязка к разделам не заполнено" на стороне Битрикса означает, что в настройках инфоблока каталога включена проверка на обязательность заполнения поля "Разделы", а в пришедшем XML-файле информация о принадлежности товара к группе либо отсутствует, либо сформирована некорректно.
Многие разработчики ошибочно ищут решение в использовании полей типа НоменклатураРодитель в XDTO-пакетах или пытаются передать иерархию через дополнительные реквизиты. Однако стандарт CommerceML требует четкого разделения на Классификатор (где описываются все группы и свойства) и Каталог (где описываются товары и их привязки).
Чтобы сайт "узнал" о существовании разделов "Вид" или "Тип", они должны быть предварительно описаны в блоке Классификатор. Если мы хотим создать структуру Вид \ Тип \ Товар, нам необходимо сгенерировать идентификаторы (GUID) для каждого элемента этих справочников в 1С и передать их как иерархический список групп.
Рассмотрим, как должен выглядеть блок групп в начале файла import.xml:
<Классификатор>
<Ид>365d2b0a-0a0f-49f8-8cfc-147c9e60e443</Ид>
<Наименование>Основной каталог</Наименование>
<Группы>
<Группа>
<Ид>2dc637a9-b0eb-11ed-96c0-d45d64aa65e3</Ид>
<Наименование>Одежда</Наименование>
<Группы>
<Группа>
<Ид>1f5e8d9a-b0eb-11ed-96c0-d45d64aa65e4</Ид>
<Наименование>Головные уборы</Наименование>
</Группа>
</Группы>
</Группа>
</Группы>
</Классификатор>
В данном примере группа "Головные уборы" является дочерней для группы "Одежда". Очень важно, чтобы идентификаторы (Ид) были постоянными. Если при следующей выгрузке вы сгенерируете новый GUID, Битрикс создаст дубликат раздела.
После того как структура разделов описана в классификаторе, мы должны указать в описании товара, к какому именно разделу он относится. Это делается через узел Группы внутри тега Товар. Обратите внимание, что товар может принадлежать нескольким разделам одновременно, поэтому узел называется во множественном числе.
Проанализируем пример правильной привязки товара к подразделу:
<Каталог>
<Товары>
<Товар>
<Ид>52620335-f62b-11ed-80f1-5cf3fc34f0da</Ид>
<Наименование>Шапка меховая</Наименование>
<Группы>
<Ид>1f5e8d9a-b0eb-11ed-96c0-d45d64aa65e4</Ид>
</Группы>
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Наименование>ВидНоменклатуры</Наименование>
<Значение>Одежда</Значение>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
</Товар>
</Товары>
</Каталог>
Важный нюанс: если вы передаете в Группы идентификатор, который не был описан в Классификаторе, Битрикс не сможет создать привязку, и вы снова увидите ошибку обязательного поля. Если вы используете штатные модули интеграции (например, от самой компании Битрикс), убедитесь, что в настройках дерева групп выбраны правильные реквизиты для формирования иерархии.
Часто возникает ситуация, когда такие свойства, как Цвет или Размер, выгружаются на сайт как тип "Список", хотя требуется тип "Справочник" (для работы с изображениями цветов или дополнительными полями).
Рассмотрим ситуацию: вы вручную поменяли тип свойства в админке Битрикса на "Справочник", но при следующей выгрузке настройки "слетели". Выясним причину: 1С в файле обмена явно указывает тип данных свойства. Если сайт видит в XML ТипЗначений>Справочник, он пытается сопоставить это с внутренними механизмами.
Чтобы свойство корректно определилось как Highload-блок, необходимо добавить специальный тег Внешний со значением true. Посмотрим на пример описания свойства в классификаторе:
<Свойство>
<Ид>75a244cb-ea75-11ed-92fe-3497f6a362ba</Ид>
<Наименование>Цвет</Наименование>
<ТипЗначений>Справочник</ТипЗначений>
<Внешний>true</Внешний>
<ВариантыЗначений>
<Справочник>
<ИдЗначения>86f7c63e-eb48-11ed-92fe-3497f6a362ba</ИдЗначения>
<Значение>Черный</Значение>
</Справочник>
</ВариантыЗначений>
</Свойство>
При такой структуре Битрикс поймет, что данные для этого свойства должны храниться во внешней таблице (Highload-блоке). В самом товаре при этом передается именно ИдЗначения (GUID), а не текстовое название "Черный".
Для успешного построения составного каталога рекомендуем придерживаться следующих правил:
Ид). При любом переименовании в 1С на сайте создастся новый объект, а старый останется "висеть" или станет неактуальным.Группа в классификаторе и привяжет к ним товары.import.xml в папке /bitrix/php_interface/include/1c_catalog/. Проверьте, есть ли в секции Товар узел Группы и совпадает ли его содержимое с Ид групп в Классификаторе.Таким образом, связка разделов и товаров в Битриксе жестко завязана на иерархическое описание групп в классификаторе и передачу GUID этих групп внутри каждого товара. Использование тега Внешний позволяет гибко управлять типами свойств, превращая их в мощные справочники на стороне сайта.