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

Интеграция B2B-магазина с 1С и учётными системами

Интеграция B2B-магазина на 1С-Битрикс с 1С и учётными системами: обмен CommerceML, цены по группам, остатки по складам

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

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

Коротко

  • Источник истины в B2B — 1С: цены, остатки, договоры ведутся там, сайт их отображает и принимает заказы.
  • Штатный обмен CommerceML 2.x закрывает каталог, цены и остатки, но для опта его часто дополняют.
  • B2B-специфика — цены по группам и договорам, остатки по складам, привязка заказов к контрагентам.
  • Тяжёлый каталог выгружают по расписанию, а остатки и заказы — оперативнее, нередко через REST.

Зачем B2B-магазину интеграция с 1С

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

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

Штатный обмен CommerceML

1С-Битрикс и 1С исторически «дружат»: между ними есть штатный обмен на стандартном формате CommerceML 2.x. Работает он по понятной схеме: 1С выгружает данные в XML, сайт их загружает, а заказы уходят обратно тем же каналом.

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

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

Чем B2B-обмен сложнее

Опт добавляет к обмену слой сложности, которого нет в рознице. Недостаточно выгрузить «каталог и остаток» — нужно перенести всю логику работы с контрагентами.

АспектРозницаB2B
ЦеныОдна витриннаяПо группам, договорам, индивидуальные
ОстаткиОбщий остатокВ разрезе складов клиента
КлиентФизлицоКонтрагент с договором и лимитом
ЗаказПростая покупкаПривязка к договору, условия отгрузки
ВидимостьВсё открытоЦены и товары зависят от клиента

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

Цены по группам и договорам

Цена в B2B — не публичное число, а функция от того, кто смотрит. У дилера одна цена, у крупного опта — другая, у нового клиента — третья, а у отдельных контрагентов действуют индивидуальные соглашения. Всё это ведётся в 1С через типы цен и договорённости с контрагентами.

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

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

Остатки в разрезе складов

В рознице обычно хватает общего остатка «есть/нет». В распределённом опте этого мало: один и тот же товар может быть на московском складе и отсутствовать на региональном, а клиенту важно видеть наличие именно там, откуда ему отгрузят.

Поэтому остатки выгружают в разрезе складов, а на сайте привязывают к региону и складу клиента. Тогда закупщик видит не «вообще на остатках», а реальную доступность для своей отгрузки. Это влияет и на поиск, и на карточку, и на корзину. Актуальность остатков особенно чувствительна: устаревший остаток в опте — это сорванная отгрузка. Держать остатки и продажи в синхроне помогает автоматизация продаж и склада на 1С.

Контрагенты, договоры, лимиты

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

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

Заказы обратно в 1С

Обмен — это дорога в обе стороны. Заказ, оформленный на сайте, должен уйти в 1С со всей B2B-спецификой: привязкой к контрагенту и договору, ценами по соглашению, нужным складом отгрузки, кратностью и условиями. Просто «список товаров и сумма» в опте не годятся.

Хорошо настроенная передача заказов избавляет менеджеров от ручного переноса и ошибок: заказ сразу попадает в работу с правильным контрагентом и условиями. Здесь же важно корректно обрабатывать статусы — подтверждение, резерв, отгрузку — и возвращать их на сайт, чтобы клиент видел актуальное состояние заказа в кабинете. Логику сохранения и обработки этих данных на стороне сайта удобно строить на современном ORM — подход разобран в статье про D7 и ORM в Битрикс.

Расписание против реального времени

Частый вопрос — как часто обмениваться данными. Универсального ответа нет: разные данные требуют разной оперативности, и правильная схема почти всегда комбинированная.

  1. Каталог и свойства. Меняются редко — выгрузка по расписанию, например ночью, вполне достаточна.
  2. Цены. Обновляются по расписанию несколько раз в день или по событию изменения.
  3. Остатки. В опте хотят видеть оперативно — чаще, чем каталог, вплоть до близкого к реальному времени.
  4. Заказы и статусы. Желательно оперативно в обе стороны, чтобы клиент и менеджер видели актуальное.

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

Когда нужен REST поверх обмена

Штатный CommerceML хорош для каталога, но для оперативных сценариев его нередко дополняют обменом через REST API и вебхуки. Это оправдано, когда возможностей стандартного обмена не хватает.

Часто оптимальна гибридная схема: штатный CommerceML для тяжёлого каталога плюс REST для оперативных данных. При этом обменные каналы нужно защищать — открытый API с доступом к ценам, остаткам и заказам это лакомая цель. О том, как это делать правильно, — в материале про REST, вебхуки и безопасность в Битрикс.

Большие объёмы и стабильность

Оптовые каталоги нередко насчитывают десятки и сотни тысяч позиций, и наивный «выгрузить всё разом» на таких объёмах падает по памяти или таймауту. Стабильный обмен на объёме требует нескольких приёмов.

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

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

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

  1. Роли определены. 1С — источник данных, сайт — витрина и приём заказов; ответственность разделена.
  2. Каталог обменивается. Номенклатура, свойства, изображения корректно приходят через CommerceML.
  3. Цены по группам. Типы цен 1С однозначно сопоставлены группам клиентов; закрытые цены скрыты от гостя.
  4. Остатки по складам. Наличие выгружается в разрезе складов и привязано к региону клиента.
  5. Контрагенты и договоры. Клиент связан с контрагентом, действуют договор и лимиты.
  6. Заказы в 1С. Уходят с договором, складом и условиями; статусы возвращаются на сайт.
  7. Расписание настроено. Каталог по расписанию, остатки и заказы — оперативно, REST где нужен.
  8. Объём выдержан. Пошаговый обмен, обмен изменениями, инфраструктура под нагрузку, защита каналов.

Вывод

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

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

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

Что такое CommerceML и при чём тут интеграция с 1С?

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

Чем интеграция B2B сложнее, чем для обычного магазина?

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

Как передавать разные цены для разных клиентов?

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

Обязательно ли обмениваться данными в реальном времени?

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

Что делать, если штатного обмена CommerceML не хватает?

Тогда его дополняют или заменяют кастомной интеграцией через REST API и вебхуки. Это нужно, когда требуется оперативный обмен остатками, нестандартная логика цен и договоров, интеграция не только с 1С, но и с другими учётными системами, или обработка больших объёмов. Часто оптимальна гибридная схема: штатный CommerceML для каталога плюс REST для оперативных данных. Важно при этом продумать безопасность обменных каналов.

Как не сломать обмен при больших объёмах каталога?

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

Кто отвечает за корректность данных — сайт или 1С?

Источник истины в B2B — учётная система (1С): цены, остатки, договоры ведутся там. Сайт отображает эти данные и передаёт обратно заказы. Поэтому большинство проблем «неверная цена, неправильный остаток» решаются на стороне 1С и настройки обмена, а не правкой сайта. Чёткое разделение «1С — источник, сайт — витрина и приём заказов» упрощает и разработку, и последующую поддержку.

Поделиться:

Нужна надёжная интеграция B2B-магазина с 1С?

Настроим обмен каталога, цен по группам, остатков по складам и заказов контрагентов на 1С-Битрикс — со штатным CommerceML и REST там, где нужна скорость.

Автоматизация на 1С

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

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

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