Настройка выгрузки дополнительных реквизитов из 1С в 1С-Битрикс
Дополнительные реквизиты номенклатуры в 1С — это расширение карточки товара: технические характеристики, сертификаты, параметры применения. На сайте они становятся фильтрами, табличными данными в карточке, ключевыми словами для поиска. Настройка их корректной передачи и отображения занимает значительную часть работ по интеграции.
Типы дополнительных реквизитов в 1С
В 1С:УТ 11 дополнительные реквизиты и сведения хранятся в двух местах:
Реквизиты объекта (ДополнительныеРеквизиты) — хранятся непосредственно в элементе справочника. Выгружаются при каждом обмене.
Сведения объекта (ДополнительныеСведения) — хранятся в отдельном регистре сведений, привязанном к объекту. Выгружаются аналогично, но требуют отдельного включения в настройках узла.
Типы значений реквизитов:
- Строка, Число, Дата, Булево
- Ссылка на справочник (значение — GUID элемента)
- Строка с вариантами (перечисление)
Последний тип — ссылочный — создаёт наибольшие проблемы при обмене (подробнее ниже).
Как реквизиты передаются в XML
Дополнительные реквизиты попадают в XML внутри <Товар>:
<ЗначенияРеквизитов>
<ЗначениеРеквизита>
<Наименование>Мощность</Наименование>
<Значение>2500</Значение>
</ЗначениеРеквизита>
<ЗначениеРеквизита>
<Наименование>ЕдиницаМощности</Наименование>
<Значение>Вт</Значение>
</ЗначениеРеквизита>
<ЗначениеРеквизита>
<Наименование>ГарантийныйСрок</Наименование>
<Значение>24</Значение>
</ЗначениеРеквизита>
</ЗначенияРеквизитов>
Битрикс при импорте создаёт свойства инфоблока с такими же наименованиями и заполняет их значениями.
Автоматически создаваемые свойства: проблема кодов
При первом импорте Битрикс создаёт свойства инфоблока с кодами вида CML2_ATTR_001, CML2_ATTR_002. Это нечитаемые машинные коды, с которыми неудобно работать в шаблонах.
Правильная практика: перед первым реальным импортом пройти цикл тестовых импортов на копии, после чего вручную переименовать коды свойств в читаемые (POWER_WATT, WARRANTY_MONTHS). После этого при следующих импортах коды уже не изменятся (Битрикс ищет свойство по совпадению наименования, а не кода).
Или — написать обработчик OnIBlockPropertyAdd, который при создании свойства через обмен задаёт правильный код на основе наименования (транслитерация):
AddEventHandler('iblock', 'OnIBlockPropertyAdd',
'setReadablePropertyCode');
function setReadablePropertyCode(&$arFields) {
if (empty($arFields['CODE'])) {
$arFields['CODE'] = CUtil::translit(
$arFields['NAME'],
'ru',
['change_case' => 'U', 'replace_space' => '_']
);
}
}
Ссылочные реквизиты: подмена GUID на значение
Если реквизит в 1С — ссылка на справочник, в XML придёт GUID, а не текст:
<ЗначениеРеквизита>
<Наименование>Производитель</Наименование>
<Значение>f3a2b1c0-1234-5678-abcd-ef0123456789</Значение>
</ЗначениеРеквизита>
На сайте в карточке товара будет показан GUID вместо «Bosch». Это нужно исправить либо:
-
На стороне 1С: перед формированием XML подменять GUID на строковое значение (наименование элемента справочника). Это правильнее — не нужно дополнительная логика на стороне Битрикс.
-
На стороне Битрикс: в обработчике импорта хранить таблицу маппинга «GUID → значение» (формируется из первичного обмена или отдельной выгрузки справочников) и подставлять значение при записи свойства.
Множественные значения одного реквизита
В 1С реквизит может иметь несколько значений (если настроен как «допускается несколько значений»). В XML они передаются несколькими тегами с одинаковым наименованием.
На стороне Битрикс свойство должно быть настроено как «Множественное». Обработчик импорта должен собирать все значения в массив:
// При импорте собираем множественные значения
$multiValues = [];
foreach ($arXML['ADDITIONAL_REQUISITES'] as $req) {
if ($req['NAME'] === 'Применяемость') {
$multiValues[] = $req['VALUE'];
}
}
$arProps['APPLICABILITY'] = $multiValues;
Кейс: промышленный каталог с 60+ атрибутами
Завод насосного оборудования: каждое изделие описывается 60–80 техническими параметрами (рабочее давление, температурный диапазон, материал корпуса, класс защиты и т.д.). В 1С все они хранятся как дополнительные реквизиты.
При первом импорте в Битрикс создалось 78 свойств инфоблока с нечитаемыми кодами. Потратили день на переименование кодов и настройку типов (числовые — как «Число», с единицами измерения; строковые — как «Список» для фильтра).
После настройки: компонент умного фильтра Битрикс автоматически предлагает фильтрацию по всем числовым и списочным свойствам. Покупатель фильтрует насосы по давлению, температуре и материалу — без дополнительной разработки.
Инкрементальное обновление атрибутов (при изменении значений в 1С) — 4 минуты на весь каталог из 2300 позиций.







