Почему при выгрузке из 1С в Битрикс характеристики товаров (цвет, размер) остаются пустыми и как это исправить

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При настройке стандартного обмена между 1С:Предприятие и 1С-Битрикс специалисты часто сталкиваются с ситуацией, когда структура каталога и торговые предложения (SKU) создаются корректно, но значения конкретных характеристик (например, «Цвет» или «Размер») остаются пустыми. В административной панели Битрикса мы видим созданный «Пакет предложений» и сами свойства в инфоблоке, однако внутри конкретного предложения поля не заполнены. Проанализируем причины этой проблемы и разберем пошагово методы ее решения.

Разберем структуру хранения характеристик в 1С

Прежде всего, нам необходимо понять, как данные хранятся в самой 1С. Одной из самых частых причин отсутствия значений является то, что характеристики заданы в 1С только в виде Наименования, а не в виде Дополнительных реквизитов. Выясним разницу: когда мы создаем характеристику, 1С позволяет просто написать строку «Красный, 42». Для Битрикса эта строка является просто названием объекта, но не конкретными значениями свойств Цвет и Размер.

Чтобы данные выгружались корректно, выполним следующие действия в 1С:

  1. Зайдем в настройки вида номенклатуры.
  2. Проверим раздел «Дополнительные реквизиты» для характеристик.
  3. Убедимся, что свойства «Цвет» и «Размер» созданы именно там как отдельные объекты.
  4. В самой карточке характеристики проверим, чтобы эти реквизиты были выбраны из соответствующих справочников или заполнены значениями.

Если в 1С данные заполнены только в поле «Наименование», модуль обмена просто не найдет структурированной информации для заполнения тегов свойств в XML-файле.

Проанализируем файл offers.xml

Для диагностики проблемы всегда полезно выполнить выгрузку в локальный каталог и изучить содержимое файлов. Рассмотрим структуру файла offers.xml, который отвечает за торговые предложения. В этом файле должна присутствовать секция <Свойства> внутри каждого предложения <Предложение>. Если вы видите, что тег <Значение> пуст, например:


<Свойство>
    <Ид>743a6ace-32d1-11eb-a2c9-d8cb8a10ec11</Ид>
    <Значение></Значение>
</Свойство>

Это прямое свидетельство того, что модуль обмена на стороне 1С не смог сопоставить данные. Если же в секции <СвойстваОфферов> (метаданные) описания есть, а в самих предложениях значений нет, стоит обратить внимание на версию протокола CommerceML (CML). Попробуем переключить версию выгрузки с 2.05 на 2.07 или наоборот в настройках узла обмена в 1С. В разных версиях протокола и модуля обмена механизм формирования узла <ЗначенияСвойств> может отличаться.

Использование типа «Справочник» и Highload-инфоблоков

Рассмотрим понятие «Справочник», которое часто упоминается в контексте обмена. В терминологии Битрикса это означает работу с Highload-инфоблоками (HL-блоками). Рассмотрим ситуацию: в 1С свойство «Цвет» — это не просто текст, а ссылка на другой справочник. В этом случае при выгрузке передается не слово «Красный», а уникальный идентификатор (GUID) этого цвета.

Чтобы Битрикс понял эти данные, выполним настройку:

  1. В настройках модуля обмена в 1С, на вкладке «Настройка свойств», найдем наше свойство.
  2. Установим флаг «Выгружать как справочник».
  3. При первой синхронизации Битрикс создаст специальную таблицу (HL-блок), куда загрузит все цвета с их ID.
  4. Свойство в инфоблоке предложений получит тип «Справочник».

Важный момент: если в Битриксе свойство уже создано вручную с типом «Список», а 1С пытается отправить данные как для справочника, произойдет конфликт типов, и значения не будут записаны. В такой ситуации рекомендуется удалить свойство в Битриксе и позволить модулю обмена создать его заново с правильными параметрами.

Проверка сопоставления по XML_ID

Выясним причину, по которой Битрикс может игнорировать входящие данные, даже если они есть в XML. Вся синхронизация строится на внешних кодах — XML_ID. Каждое свойство (Цвет, Размер) имеет свой уникальный код. Посмотрим на это глазами системы: если в XML-файле свойство имеет ID 12345, а в Битриксе у свойства «Цвет» прописан код color_prop, система решит, что это разные свойства, и не запишет значение.

Проанализируем настройки свойств в Битриксе:

  1. Перейдем в Контент -> Инфоблоки -> Типы инфоблоков -> Пакет предложений.
  2. Откроем вкладку «Свойства».
  3. Нажмем на кнопку детального редактирования свойства (три точки или изменить).
  4. Проверим поле «Внешний код». Он должен строго совпадать с <Ид> из файла offers.xml.

Настройка формы редактирования в Битриксе

Иногда проблема оказывается чисто визуальной. Данные в базе Битрикса есть, но они не отображаются в карточке товара или предложения. Это происходит потому, что в Битриксе настраиваемый интерфейс. Проверим это:

  1. Зайдем в любое торговое предложение через административную панель.
  2. В правом верхнем углу нажмем на иконку «Шестеренка».
  3. В открывшемся окне настройки формы выберем нужную вкладку (обычно «Товар» или «Параметры»).
  4. Убедимся, что свойства «Цвет», «Размер» и другие характеристики перенесены из левой колонки «Доступные поля» в правую колонку «Выбранные поля».

Специфические настройки модуля обмена (версии 7.x и выше)

В современных версиях модуля обмена от Битрикс для 1С существует расширенная таблица настройки свойств. Разберем, на что там обратить внимание. В таблице для каждого свойства можно указать флаг «Не выгружать в предложения». Проанализируем это: если по ошибке этот флаг установлен для характеристики, она будет выгружаться в основной инфоблок товаров, где для нее нет места, и полностью игнорироваться в инфоблоке предложений.

Также проверим настройку «Выгружать значения свойств в предложения». Она должна быть активна. В некоторых конфигурациях модуля 1С эта галка находится на вкладке «Предложения» или «Дополнительные настройки».

Итоги и рекомендации

Если после всех проверок характеристики все еще остаются пустыми, рекомендуем выполнить «чистую» выгрузку:

  1. Сделать бэкап базы сайта.
  2. Удалить в Битриксе свойства характеристик в инфоблоке предложений (только те, что не заполняются).
  3. В 1С в узле обмена нажать «Очистить данные выгрузки» (если есть такая кнопка) или просто запустить полную выгрузку (не изменения).
  4. Система заново создаст свойства с правильными типами и XML_ID, что в 90% случаев решает проблему рассинхронизации.

Помните, что ключевым фактором успеха является использование механизма Дополнительных реквизитов в 1С. Без них характеристики остаются для системы обычным текстом, который невозможно автоматически распределить по разным полям базы данных.

← На главную