БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Обмен с 1С в 1С-Битрикс по CommerceML: настройка с нуля

Обмен с 1С по CommerceML в 1С-Битрикс: выгрузка каталога и заказов, сопоставление свойств, расписание

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

В этой статье разберём настройку обмена с 1С по CommerceML с нуля: как он устроен, что подготовить в 1С, как настроить приём на сайте, чем связываются товары, как выгружать заказы и почему обмен обрывается на больших каталогах. Настройку обмена и импорта товаров под ключ мы делаем в рамках услуги импорта товаров из Excel, CSV, XML, YML и CommerceML.

Коротко

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

Что такое обмен по CommerceML

CommerceML (Commerce Markup Language, «Коммерческая информация») — стандартный XML-формат, разработанный фирмой 1С для обмена коммерческими данными между учётной системой и сайтом. По нему передаются каталог товаров, цены, остатки, свойства и заказы.

Главное достоинство формата — он поддерживается 1С-Битрикс из коробки. В редакциях с торговым каталогом обмен встроен, а типовые конфигурации 1С (Управление торговлей, Розница и другие) умеют выгружать данные в этом формате. Поэтому CommerceML — самый надёжный и распространённый способ связать магазин с 1С без сторонних модулей.

Как устроен обмен: направления и сессии

Обмен двусторонний и идёт по инициативе 1С, которая обращается к специальному скрипту на сайте. Два направления:

НаправлениеЧто передаётсяЧастота
1С → сайт (каталог)Товары, свойства, категории, изображенияРеже, полная выгрузка
1С → сайт (цены/остатки)Цены по типам, остатки по складамЧасто, инкрементально
Сайт → 1С (заказы)Новые и изменённые заказыРегулярно

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

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

Подготовка данных в 1С

Качество обмена на 80% определяется порядком в 1С. Прежде чем настраивать выгрузку, данные в учётной системе приводят в порядок:

Мусор в 1С неизбежно приедет на сайт — обмен не «почистит» данные за вас. Поэтому наведение порядка в номенклатуре — обязательный первый шаг, а не то, что делают потом.

Настройка узла обмена в 1С

На стороне 1С обмен настраивается через узел обмена с сайтом (в типовых конфигурациях — «Обмен с сайтом» или аналогичный раздел). Базовые параметры:

  1. Адрес сайта. URL скрипта обмена на сайте, к которому обращается 1С.
  2. Логин и пароль. Учётные данные пользователя сайта с правами на обмен.
  3. Состав выгрузки. Какие группы номенклатуры, типы цен и склады выгружаются.
  4. Изображения и свойства. Выгружать ли картинки, дополнительные реквизиты и характеристики.
  5. Расписание. Регламентное задание, запускающее выгрузку автоматически.

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

Настройка приёма на стороне Битрикс

На сайте обмен принимает штатный механизм торгового каталога. Ключевые настройки:

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

Ключ связи и стабильность идентификаторов

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

Именно по этому ключу обмен понимает: товар в новой выгрузке — это тот же товар, что уже есть на сайте, значит его надо обновить, а не создать заново. Если идентификаторы стабильны, обмен работает как часы. Если «плывут» — обмен начинает плодить дубли товаров, и каталог превращается в свалку.

Стабильность идентификаторов — это всё. Большинство проблем «после обмена задвоились товары» — это нестабильные GUID из 1С. Прежде чем искать баг в Битрикс, проверьте, не меняются ли идентификаторы номенклатуры на стороне 1С.

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

Самый кропотливый этап — сопоставление свойств. В 1С у товара свои реквизиты и характеристики, в Битрикс — свои свойства инфоблока. Их нужно связать, чтобы данные легли в правильные поля.

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

Выгрузка заказов обратно в 1С

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

Что важно при настройке выгрузки заказов:

Расписание и автоматизация

Ручной запуск обмена — только для отладки. В работе обмен идёт по расписанию, и разные данные обновляются с разной частотой:

ДанныеЧастотаПочему так
Остатки, ценыКаждые 15–60 минутКритичны для актуальности витрины
ЗаказыРегулярно, частоМенеджеру нужны свежие заказы
Полный каталогРаз в сутки, ночьюТяжёлая операция, не в часы пик

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

Таймауты и большие каталоги

Самая частая боль на серьёзных проектах — обмен обрывается на большом каталоге. Причины почти всегда инфраструктурные:

Диагностируют обрывы по логам обмена и логам сервера. Как читать эти логи, мы разбирали в статье про безопасность и обработку внешних запросов в Битрикс — тот же подход применим и к отладке обмена.

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

Чек-лист настройки

  1. Данные в 1С в порядке. Номенклатура без дублей, характеристики, типы цен и склады настроены.
  2. Узел обмена в 1С. Адрес сайта, учётные данные, состав выгрузки и расписание заданы.
  3. Приём на сайте. Инфоблоки, права пользователя обмена, размер шага и логирование настроены.
  4. Ключ связи стабилен. GUID из 1С не меняются, товары обновляются, а не задваиваются.
  5. Свойства сопоставлены. Реквизиты и характеристики легли в нужные свойства и предложения.
  6. Заказы выгружаются. Заказы уходят в 1С, статусы согласованы, дублей нет.
  7. Расписание работает. Остатки часто, каталог ночью, автоматически.
  8. Протестировано на копии. Всё проверено на тесте, перед боем сделан бэкап каталога.

Вывод

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

Главные правила: сначала порядок в 1С, стабильные GUID как основа связи, настройка и тесты на копии сайта и резервная копия перед первым боевым обменом. Соблюдая их, вы получите обмен, который работает годами без сюрпризов. А чтобы настроить его с нуля без проб и ошибок, начните с импорта товаров и обмена с 1С под ключ.

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

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

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

Нужен ли отдельный модуль для обмена или всё есть в Битрикс?

Для типового обмена по CommerceML отдельный модуль не нужен: в редакциях с торговым каталогом обмен встроен. На стороне 1С обмен настраивается в типовых конфигурациях (Управление торговлей, Розница и других) через узел обмена с сайтом. Сторонняя разработка нужна только для нестандартных сценариев: сложные преобразования данных, несколько источников, кастомная логика сопоставления и синхронизации.

Как связаны товары на сайте и в 1С — по какому ключу?

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

Почему обмен обрывается на большом каталоге?

Частые причины на больших выгрузках — таймаут выполнения PHP, нехватка памяти и слишком большой шаг обмена. Обмен по CommerceML идёт сессиями: сайт получает данные порциями. Если порция велика или сервер ограничивает время выполнения, сессия обрывается. Лечится настройкой размера шага обмена, увеличением лимитов времени и памяти для скрипта обмена и оптимизацией сервера под тяжёлые фоновые операции.

Как настроить выгрузку заказов с сайта в 1С?

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

Как часто должен идти обмен и как его автоматизировать?

Частота зависит от бизнеса: остатки и цены критичных товаров обновляют часто (каждые 15–60 минут), полный каталог — реже (раз в сутки ночью). Автоматизируют обмен по расписанию: на стороне 1С — регламентным заданием, на стороне сайта — через агенты или запуск обмена по cron. Тяжёлые полные выгрузки лучше ставить на ночь, чтобы не нагружать сайт в часы пик.

Что делать с торговыми предложениями (вариациями) при обмене?

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

Как безопасно тестировать настройку обмена?

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

Поделиться:

Нужен обмен с 1С, который не рвётся и не плодит дубли?

Настроим обмен по CommerceML с нуля: каталог, цены, остатки, заказы и стабильную связку с учётом. Рассчитаем работу по вашему проекту.

Импорт и обмен с 1С

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

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

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