Характеристики номенклатуры в 1С на стороне сайта превращаются в торговые предложения (SKU) — отдельный инфоблок, привязанный к каталогу. Разбираем, как это устроено в CommerceML, что нужно настроить в Битрикс и почему предложения иногда не привязываются к товару.
Характеристики в 1С и торговые предложения в Битрикс
В 1С товар с вариациями (цвет, размер, объём) ведётся по характеристикам номенклатуры: одна позиция «Футболка» и справочник её характеристик — «S/белый», «M/чёрный» и т.д. Остатки, цены и штрихкоды хранятся в разрезе характеристик, а не самой номенклатуры.
На сайте этой модели соответствуют торговые предложения (SKU) — механизм модуля catalog (Торговый каталог). Технически это отдельный инфоблок, каждый элемент которого ссылается на элемент основного каталога. Покупатель видит один товар с выбором варианта, а в базе это родительский элемент плюс N предложений.
- Номенклатура 1С → элемент основного инфоблока каталога;
- Характеристика номенклатуры → элемент инфоблока торговых предложений;
- Свойства характеристики (цвет, размер) → свойства инфоблока ТП, помеченные как характеристики для показа выбора.
Как характеристики едут в CommerceML
Стандартный обмен использует формат CommerceML 2 и два основных файла: import.xml (описание товаров и классификатор) и offers.xml (предложения, цены, остатки). Характеристики распределены между обоими.
В import.xml, в разделе <Классификатор><Свойства>, описываются свойства-характеристики. Ключевой признак — <ДляПредложений>true</ДляПредложений>: он говорит Битрикс, что это свойство относится к торговым предложениям, а не к товару. Если свойство справочного типа, тут же выгружаются его возможные значения.
В offers.xml каждое предложение приходит в <Предложения><Предложение>. Внутри — идентификатор вида ГУИД_товара#ГУИД_характеристики, наименование и блок <ХарактеристикиТовара> со значениями. Именно составной идентификатор через # связывает предложение с родительским товаром.
| Сущность 1С | Файл CommerceML | Что становится в Битрикс |
|---|---|---|
| Номенклатура | import.xml | Элемент каталога |
| Свойство характеристики | import.xml (Классификатор) | Свойство инфоблока ТП |
| Характеристика номенклатуры | offers.xml | Элемент инфоблока ТП |
| Значение, цена, остаток | offers.xml | Значения свойств и цен ТП |
Включаем торговые предложения на стороне сайта
Чтобы предложения вообще создавались, инфоблок каталога должен быть подготовлен заранее. Обычно это делается один раз перед первым обменом.
- Убедитесь, что установлен модуль Торговый каталог (
catalog). - В настройках инфоблока каталога (Контент → Инфоблоки → Типы инфоблоков) на вкладке Торговый каталог включите признак «Инфоблок товаров имеет торговые предложения» и укажите (или создайте) связанный инфоблок ТП.
- Проверьте, что тип инфоблока ТП имеет служебное свойство привязки
CML2_LINK— оно связывает предложение с родительским товаром по XML_ID.
При первом обмене Битрикс может создать инфоблок предложений автоматически — если в файле обмена присутствуют предложения с характеристиками. Но на боевых проектах инфоблок ТП лучше подготовить вручную, чтобы контролировать символьный код, права и привязку к типу цен.
/bitrix/admin/1c_exchange.php. Именно этот адрес прописывается в узле обмена в 1С; параметр type=catalog отвечает за каталог и предложения.Свойства предложений и признак «характеристика»
После первого обмена в инфоблоке ТП появятся свойства, пришедшие из классификатора: цвет, размер и т.п. Их значения заполняются автоматически из offers.xml. Обмен сам сопоставляет свойства по внешнему коду (XML_ID свойства), поэтому переименование свойства в 1С не разрывает связь, а переопределение GUID — разрывает.
Чтобы на витрине работал выбор варианта (выпадающие списки цвета и размера), нужные свойства ТП помечаются как характеристики предложения в настройках инфоблока предложений (флаг «Показывать в списке предложений» / участие в выборе SKU). Это уже витринная настройка, обмен её не меняет.
- Свойства справочного типа (список) — предпочтительны для цвета/размера: по ним удобно фильтровать и строить умный фильтр.
- Строковые характеристики из 1С по умолчанию создаются как свойства типа «Строка»; при необходимости их конвертируют в список вручную.
- Служебные свойства
CML2_LINK,CML2_ARTICLE,CML2_BAR_CODEтрогать не нужно — их ведёт обмен.
Цены, остатки и штрихкоды по предложениям
Когда учёт в 1С ведётся по характеристикам, цены и остатки принадлежат предложениям, а не товару. В offers.xml блоки <Цены> и <Количество> (или складские остатки) идут внутри каждого <Предложение>. На сайте они записываются в цены и количество соответствующего элемента ТП.
Родительский товар в этом случае цены обычно не имеет — витрина показывает диапазон «от…» по предложениям. Если требуется единая цена на товар, её задают на уровне номенклатуры в 1С, но при учёте по характеристикам это нетипично.
CML2_BAR_CODE предложения. Это удобно для сценариев подбора по сканеру и для последующей отгрузки — предложение однозначно определяется по штрихкоду.Почему предложения не привязываются к товару
Самая частая жалоба — «предложения выгрузились, но висят отдельно и не показываются на карточке товара». Причина почти всегда в связке через CML2_LINK и составной идентификатор.
- Разошлись XML_ID. Предложение ищет родителя по части идентификатора до
#. Если товар пересоздали в 1С (сменился GUID) или чистили каталог на сайте, связь рвётся — появляются «осиротевшие» предложения. - Инфоблок ТП не привязан к каталогу. Предложения создаются в отдельном инфоблоке, но признак «имеет торговые предложения» у каталога выключен — Битрикс не знает, куда их подвязать.
- Свойство не помечено «для предложений». Если в 1С у свойства не стоит
<ДляПредложений>true</ДляПредложений>, оно уедет к товару, и выбор варианта на витрине не соберётся. - Обмен только предложениями. Загрузка
offers.xmlбез предшествующегоimport.xmlоставит предложения без родителей, если товаров ещё нет на сайте.
Как проверить корректность обмена характеристиками
После настройки стоит прогнать контрольную проверку на нескольких товарах с вариациями, прежде чем открывать витрину.
- Откройте карточку товара в админке (Контент → Инфоблоки) — на вкладке предложений должен быть список SKU с заполненными характеристиками, ценами и остатками.
- Проверьте свойство
CML2_LINKу предложения: оно должно указывать на конкретный элемент каталога, а не быть пустым. - Сверьте количество предложений с числом характеристик в 1С — расхождение указывает на потерянные строки в
offers.xml. - На витрине убедитесь, что переключение варианта меняет цену, остаток и изображение (если картинки привязаны к характеристике).
Полезно сохранить файлы обмена из каталога /upload/1c_catalog/ (или иного, заданного в настройках) и открыть offers.xml — так видно исходные данные до их разбора Битрикс.
Итог
Обмен характеристиками — это перенос модели «номенклатура + характеристики» из 1С в связку «каталог + инфоблок торговых предложений» в Битрикс. Ключевые точки: включённый учёт по характеристикам в 1С, признак «имеет торговые предложения» у каталога, корректные свойства с флагом «для предложений» и целостная связка через CML2_LINK и составной идентификатор с #. Большинство проблем — не в самом обмене, а в рассинхроне идентификаторов после ручных правок каталога.
Если предложения не собираются в карточку, цены висят на товаре вместо SKU или после обновления 1С слетают связи — мы настроим обмен характеристиками под вашу товарную модель, приведём свойства и умный фильтр в порядок и возьмём интеграцию на сопровождение, чтобы каждая выгрузка проходила предсказуемо.
Частые вопросы
Чем торговое предложение отличается от характеристики?
Характеристика — это сущность 1С (вариант номенклатуры), а торговое предложение (SKU) — её отражение на сайте: элемент отдельного инфоблока, привязанный к товару. По сути это одно и то же понятие по разные стороны обмена.
Нужен ли отдельный инфоблок под предложения?
Да. Торговые предложения в Битрикс всегда хранятся в отдельном инфоблоке, связанном с каталогом. Он может быть создан вручную заранее или автоматически при первом обмене с предложениями.
Почему предложения выгрузились, но не видны на карточке товара?
Чаще всего разошлись идентификаторы: свойство CML2_LINK предложения не указывает на существующий товар, либо у каталога выключен признак «имеет торговые предложения». Проверьте связку и не удаляйте элементы вручную.
Как в 1С включить выгрузку характеристик?
В карточке или виде номенклатуры установите флаг «Ведётся учёт по характеристикам». После этого характеристики попадут в offers.xml как отдельные предложения с составным идентификатором.
Где хранятся цены и остатки при учёте по характеристикам?
На уровне предложений, а не товара. В offers.xml блоки цен и количества идут внутри каждого предложения и записываются в соответствующий элемент инфоблока ТП.
Можно ли сделать характеристику выпадающим списком с фильтром?
Да. Свойства справочного типа приходят как свойства-списки инфоблока ТП, по ним удобно строить умный фильтр и выбор варианта. Строковые характеристики при необходимости конвертируют в список вручную.
Что делать, если появились предложения без родителя?
Это «осиротевшие» SKU из-за смены GUID товара или ручной чистки каталога. Не удаляйте вручную — восстановите товары в 1С и выполните полную повторную выгрузку import.xml и offers.xml.
Обязательно ли грузить import.xml перед offers.xml?
Да, порядок важен. Сначала загружается описание товаров и классификатор из import.xml, затем предложения из offers.xml. Иначе предложениям не к чему привязаться.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.