СезонГотовим магазин к высокому сезону и Чёрной пятнице: скорость, нагрузка, акции

Обмен с 1С по CommerceML: как настроить и не сломать каталог

Настройка штатного обмена с 1С по CommerceML в 1С-Битрикс без потери каталога

Обмен с 1С — сердце любого магазина на 1С-Битрикс. Пока он работает, каталог живой: товары появляются, цены актуальны, остатки сходятся, заказы уходят в учёт. Но стоит настроить его неаккуратно — и после очередной выгрузки в каталоге задваиваются товары, слетают свойства, ломаются ссылки, а остатки показывают то, чего нет. Причём чинить последствия сложнее, чем изначально настроить обмен правильно.

Эта статья — практическое руководство по штатному обмену с 1С по CommerceML: что и куда выгружается, почему стабильные идентификаторы важнее всего, как не сломать каталог, как устроены торговые предложения, цены, остатки и обмен заказами. Первичное наполнение каталога и настройку импорта мы закрываем услугой импорта товаров из Excel, CSV, XML, YML и CommerceML.

Коротко

  • CommerceML — штатный формат обмена 1С и 1С-Битрикс: товары и цены на сайт, заказы — в учёт.
  • Главная причина поломки каталога — нестабильные идентификаторы (XML_ID), из-за них плодятся дубли.
  • Цены и остатки выгружают отдельно и чаще, чем тяжёлую полную выгрузку товаров.
  • Большие каталоги обменивают пакетно и в непиковое время; доработка — только по реальной необходимости.

Что такое CommerceML и как он работает

CommerceML — это стандартный формат обмена коммерческими данными между 1С и сайтом. По нему учётная система выгружает товары, свойства, цены, остатки и принимает заказы, а 1С-Битрикс загружает всё это в инфоблоки торгового каталога. Формат штатный для обеих систем, поэтому базовый обмен настраивается без разработки — через встроенные механизмы. Версия 2.x — фактический стандарт для магазинов на этой связке.

Технически обмен работает как диалог: 1С обращается к специальной странице обмена на сайте, авторизуется, передаёт файлы выгрузки, а сайт разбирает их и обновляет каталог. Обратно с сайта выгружаются заказы. Понимание этого диалога помогает диагностировать проблемы: сбой может быть на стороне 1С, на канале передачи или при разборе данных сайтом.

Что и куда выгружается

Обмен по CommerceML двусторонний, и полезно чётко представлять направление каждого потока данных.

ДанныеНаправлениеЧастота
Товары и свойства1С → сайтРедко, по изменениям
Торговые предложения1С → сайтВместе с товарами
Цены1С → сайтЧасто
Остатки1С → сайтОчень часто
Заказысайт → 1СПо мере оформления
Статусы заказов1С → сайтПо мере обработки

Из таблицы видно ключевую идею: не всё выгружается одинаково часто. Тяжёлые данные (товары, свойства) меняются редко, лёгкие и критичные (цены, остатки) — часто. На этом строится вся стратегия обмена.

Обмен данными сайта с 1С Сайткаталог, заказы1Стовары, заказыОбменочередь / APIДанные идут в обе стороны по расписанию или по событию
Схема: сайт и 1С обмениваются данными в обе стороны — по расписанию или по событию. Товары и остатки приходят на сайт, заказы уходят обратно.

Стабильные идентификаторы — основа обмена

Самое важное в обмене — то, как товары в 1С и на сайте сопоставляются друг с другом. Делается это по внешнему коду, который в Битрикс хранится как XML_ID. При каждой выгрузке сайт по этому коду понимает: этот товар уже есть — обновить, а этого нет — создать.

Отсюда железное правило: идентификатор товара должен быть стабильным и неизменным на всём протяжении жизни товара. Он приходит из 1С и не должен меняться от выгрузки к выгрузке. То же касается идентификаторов свойств, разделов и торговых предложений. Стабильные идентификаторы — фундамент, на котором держится весь обмен; всё остальное вторично.

Проверьте первым делом. Если обмен когда-нибудь ломал каталог, начинайте диагностику именно с идентификаторов: сравните XML_ID до и после выгрузки. В подавляющем большинстве случаев корень проблемы здесь.

Почему ломается каталог

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

Последствия каскадные: слетают привязки свойств, ломаются ЧПУ и внутренние ссылки, дубли конкурируют в каталоге и поиске, остатки распределяются между старой и новой карточкой. Именно поэтому нельзя относиться к обмену как к «настроил и забыл»: любое вмешательство в номенклатуру 1С или настройки выгрузки нужно проверять на тестовой копии, прежде чем пускать в бой. Стабильность обмена во многом зависит и от инфраструктуры, о которой мы пишем в статье про хостинг и инфраструктуру на BitrixVM.

Свойства и сопоставление полей

Товар — это не только название и цена, но и характеристики, которые в 1С-Битрикс хранятся как свойства инфоблока и используются в умном фильтре. Обмен должен корректно передавать эти свойства и сопоставлять поля 1С с полями сайта.

Аккуратное сопоставление свойств напрямую влияет на работу фильтра и каталога. Если свойства приходят хаотично, умный фильтр наполняется мусором, а фасетный индекс теряет смысл. Поэтому карту соответствия полей продумывают до первого боевого обмена.

Торговые предложения в обмене

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

Здесь действуют те же правила, что и для товаров, но с удвоенным вниманием. У предложений должны быть свои стабильные идентификаторы, корректно передаваться их свойства (тот самый размер и цвет), а также индивидуальные цены и остатки. Ошибки в обмене предложениями коварны: у товара могут пропасть варианты, перепутаться цены по размерам или остатки по цветам. Причём внешне товар выглядит нормально — проблема всплывает только при выборе конкретного варианта. Поэтому обмен предложениями тестируют отдельно и придирчиво.

Цены и остатки: отдельная логика

Цены и остатки живут по другим правилам, чем товары. Они меняются несопоставимо чаще: остатки — постоянно, цены — регулярно. Гонять из-за них тяжёлую полную выгрузку товаров нерационально, поэтому их выгружают отдельными лёгкими выгрузками.

  1. Разделите выгрузки. Полная выгрузка товаров — редко; выгрузки цен и остатков — часто, отдельно.
  2. Учтите типы цен. Для B2B выгружают несколько типов цен под группы клиентов — розница, опт, дилеры.
  3. Настройте частоту остатков. Остатки обновляют так часто, как позволяет нагрузка, вплоть до почти реального времени.
  4. Проверьте склады. Для распределённого учёта остатки приходят в разрезе складов.

Такое разделение держит цены и остатки свежими без нагрузки от переиндексации всего каталога. Свежесть остатков особенно важна: устаревший остаток приводит к заказу того, чего нет, и к отмене после оплаты — с возвратом и недовольным клиентом.

Обмен заказами и статусами

Обмен по CommerceML не ограничивается загрузкой товаров — он двусторонний. Заказы, оформленные на сайте, выгружаются в 1С, где менеджер работает с ними в привычном интерфейсе: подтверждает, резервирует товар, меняет статусы. Обратной выгрузкой статусы возвращаются на сайт, и покупатель видит движение своего заказа.

Это замыкает цикл: витрина принимает заказы, учётная система их обрабатывает, а покупатель остаётся в курсе. Ключевая задача при настройке — согласовать статусы между системами, чтобы «оплачен», «собран», «отгружен» одинаково понимались и на сайте, и в 1С. Обмен заказами — более чувствительная часть, чем каталог, потому что затрагивает деньги и обязательства перед клиентом, поэтому его логику проектируют особенно внимательно, в том числе с учётом безопасности канала, о которой мы пишем в материале про REST, вебхуки и безопасность в Битрикс.

Большие каталоги и пакетный режим

На каталоге в десятки и сотни тысяч позиций обмен «одним куском» упирается в лимиты времени и памяти. Решение — пакетный (пошаговый) режим и грамотное расписание.

Если после всех оптимизаций обмен всё равно тяжёлый, узкое место обычно не в формате, а в инфраструктуре: ресурсы сервера, настройка окружения, база данных. Тогда смотрят на серверную часть, а не пытаются «ужать» сам CommerceML.

Когда нужна доработка обмена

Штатный обмен товарами, ценами, остатками и заказами работает из коробки и часто полностью закрывает потребности небольшого и среднего магазина. Не стоит усложнять то, что и так работает. Доработка оправдана, когда появляются нестандартные требования:

В таких случаях штатный механизм расширяют обработчиками, не ломая совместимость с форматом. Принцип простой: начинаем со штатного обмена, дорабатываем строго под конкретную необходимость.

Частые ошибки обмена

Чек-лист внедрения

  1. Идентификаторы стабильны. XML_ID товаров, свойств, разделов и предложений не меняются между выгрузками.
  2. Свойства сопоставлены. Поля 1С однозначно ложатся в свойства инфоблока, справочники согласованы.
  3. Предложения проверены. Варианты, их цены и остатки приходят корректно, связь родитель — вариант цела.
  4. Выгрузки разделены. Товары — редко, цены и остатки — часто и отдельными выгрузками.
  5. Заказы и статусы согласованы. Заказы уходят в 1С, статусы возвращаются, значения совпадают.
  6. Большой каталог оптимизирован. Пакетный режим, непиковое время, ничего лишнего.
  7. Всё протестировано на копии. Обмен проверен на тестовой площадке до запуска на боевом.

Вывод

Обмен с 1С по CommerceML — это не «настроить и забыть», а живой процесс, от которого зависит целостность каталога, актуальность цен и остатков и корректность заказов. Формат штатный и мощный, но безопасность обмена держится на одном фундаменте — стабильных идентификаторах. Пока XML_ID не меняются, каталог в порядке; стоит им поплыть — начинаются дубли и потери.

Выстройте обмен правильно: разделите тяжёлую выгрузку товаров и частые выгрузки цен и остатков, аккуратно сопоставьте свойства, отдельно проверьте торговые предложения и согласуйте статусы заказов. Любые изменения тестируйте на копии, а не на боевом. Тогда обмен станет надёжным фундаментом магазина, а не источником регулярных авралов с восстановлением каталога.

Частые вопросы

Что такое CommerceML и зачем он нужен?

CommerceML — это стандартный формат обмена коммерческой информацией между 1С и сайтом на 1С-Битрикс. По нему из учётной системы выгружаются товары, их свойства, цены, остатки и заказы, а на сайт они загружаются в инфоблоки торгового каталога. Формат штатный: и 1С, и Битрикс поддерживают его из коробки, поэтому базовый обмен настраивается без разработки. CommerceML версии 2.x — фактический стандарт для магазинов на этой связке.

Почему после обмена каталог иногда ломается?

Чаще всего причина в нестабильных идентификаторах товаров. Обмен сопоставляет товары в 1С и на сайте по внешнему коду (XML_ID). Если этот код меняется от выгрузки к выгрузке — из-за пересоздания номенклатуры, смены кодировки или неверных настроек — Битрикс воспринимает товар как новый, создаёт дубль, а старый теряет связь. Отсюда задвоение позиций, слетевшие свойства и битые ссылки. Стабильные идентификаторы — главное условие безопасного обмена.

Как часто нужно запускать обмен с 1С?

Зависит от того, что выгружается. Каталог и свойства меняются редко, поэтому полную выгрузку товаров делают по расписанию или по факту изменений. Цены и особенно остатки меняются часто, поэтому их выгружают отдельно и чаще — иногда несколько раз в день или почти в реальном времени. Разделение выгрузок на тяжёлую (товары) и лёгкую (цены и остатки) — стандартная практика, которая держит остатки свежими без нагрузки от полной переиндексации каталога.

Можно ли обмениваться заказами, а не только товарами?

Да, CommerceML поддерживает двусторонний обмен: на сайт приходят товары, цены и остатки, а с сайта в 1С выгружаются заказы. В учётной системе заказ обрабатывается, ему присваиваются статусы, резервируется товар, а обратной выгрузкой статусы возвращаются на сайт. Это превращает связку в полноценный цикл: покупатель оформляет заказ на витрине, а менеджер работает с ним в привычной 1С. Настройка обмена заказами требует согласования статусов между системами.

Что делать с большими каталогами, если обмен тормозит?

Большой каталог выгружают частями и разделяют типы выгрузки: тяжёлую полную выгрузку товаров делают реже и в непиковое время, а лёгкие выгрузки цен и остатков — часто. Помогают пошаговый (пакетный) режим обмена, чтобы не упираться в лимиты времени и памяти, оптимизация свойств и отказ от выгрузки того, что сайту не нужно. Если обмен всё равно тяжёлый, узкое место часто в инфраструктуре и настройке окружения, а не в самом формате.

Как обмен связан с торговыми предложениями?

Товары с вариантами (размер, цвет, фасовка) в 1С-Битрикс реализуются через торговые предложения — отдельный инфоблок, связанный с основным. CommerceML умеет выгружать такие товары вместе с их предложениями, сохраняя связь родитель — вариант. Важно, чтобы у предложений тоже были стабильные идентификаторы и корректно передавались их свойства, цены и остатки. Ошибки в обмене предложениями приводят к тому, что у товара пропадают варианты или путаются цены по размерам и цветам.

Нужно ли дорабатывать штатный обмен?

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

Поделиться:

Нужно настроить обмен с 1С без поломок каталога?

Настроим штатный обмен по CommerceML и первичный импорт со стабильными идентификаторами, корректными свойствами и свежими остатками.

Услуга «Импорт товаров»

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины на 1С-Битрикс: настраиваем обмен с 1С по CommerceML, импорт каталога, цены, остатки и обмен заказами без задвоения товаров.

← Все статьи блога