Настройка обмена 1С:ERP Управление предприятием и 1С-Битрикс
Типичная ситуация: ERP ведёт многоуровневую структуру номенклатуры с характеристиками, сериями, партиями, несколькими единицами измерения — и всё это нужно передать на сайт так, чтобы карточка товара выглядела разумно, а цены и остатки обновлялись без задержек. Стандартный модуль обмена 1С-Битрикс (bitrix.catalog) с CommerceML 2.08 умеет большую часть из этого, но 1С:ERP — конфигурация нестандартная, и «из коробки» почти никогда не работает корректно.
Где ломается стандартный обмен с ERP
Множественные единицы измерения. В ERP номенклатура может продаваться в штуках, упаковках и поддонах одновременно. CommerceML передаёт базовую единицу, остальные — через ЕдиницыИзмерения в XML. Модуль Битрикс читает только базовую, если не доработан обработчик OnIBlockElementAdd / OnIBlockElementUpdate.
Характеристики и варианты. В ERP «характеристика» — это разрез номенклатуры (цвет, размер, артикул поставщика). В Битрикс это торговые предложения (SKU). Стандартный обмен создаёт SKU, но теряет связи, если характеристики в ERP имеют вложенные значения или если у одной номенклатуры тысячи вариантов — XML-файл разрастается до нескольких гигабайт, и обмен падает по таймауту.
Серии и партии. В ERP серийный учёт — отдельная подсистема. CommerceML 2.08 не имеет стандартного тега для серий. Их приходится передавать через ДополнительныеРеквизиты и читать на стороне Битрикс кастомным обработчиком.
Организационная структура. ERP работает с несколькими организациями и складами. Битрикс ожидает склады как Склад с GUID в XML. Если в ERP несколько складов с разными остатками — нужна явная маппинг-таблица «склад ERP → склад Битрикс».
Архитектура надёжного обмена
Для ERP с каталогом от 50 тыс. позиций рекомендую разделить полный и инкрементальный обмен:
| Тип обмена | Периодичность | Содержимое |
|---|---|---|
| Полный | 1 раз в сутки (ночь) | Вся номенклатура, группы, характеристики |
| Остатки + цены | Каждые 15–30 мин | Только изменённые записи |
| Заказы (→ ERP) | Каждые 5 мин | Новые и изменённые заказы из Битрикс |
Полный обмен ночью снимает нагрузку с сервера. Инкрементальный — через ДатаИзменения в запросе ERP: выгружаются только объекты, изменённые с момента последней успешной сессии.
Настройка на стороне ERP. В узле обмена веб-сервиса ERP (раздел Интеграция с сайтом) необходимо:
- Указать URL сайта и параметры авторизации
- Настроить фильтр номенклатуры (организация, склад, вид цены)
- Включить передачу характеристик, единиц измерения, серий
- Задать расписание регламентного задания
Настройка на стороне Битрикс. В модуле Обмен данными с 1С (/bitrix/admin/1c_exchange.php):
- Тип обмена: Каталог + Торговый каталог
- Включить режим «Не обновлять привязку к группам» (при наличии ручных привязок на сайте)
- Настроить соответствие свойств:
ДополнительныеРеквизиты→ свойства ИБ
Кейс: интеграция ERP производственного предприятия
Клиент — завод строительных материалов, 120 тыс. позиций номенклатуры, 4 склада. Проблема: полный обмен генерировал XML 4,5 ГБ, PHP-обработчик Битрикс падал через 300 секунд.
Решение в три шага:
-
На стороне ERP настроили передачу только «активной» номенклатуры (фильтр по реквизиту «Публиковать на сайте»). Объём сократился до 800 МБ.
-
Включили режим побочного чтения файла (
zip-архивирование в настройках узла): ERP пакует XML в zip, Битрикс распаковывает на лету. Время передачи упало в 3 раза. -
В
php.iniдля cron-процесса задалиmax_execution_time = 0иmemory_limit = 2048M. Обмен полный — 18 минут, инкрементальный — 40 секунд.
Дополнительно: написали обработчик события OnIBlockElementBeforeUpdate для логирования конфликтов — когда менеджер на сайте изменил цену вручную, а ERP пытается её перезаписать. Конфликты пишутся в отдельную таблицу, ежедневный отчёт уходит технологу.
Типичные ошибки при первом запуске
GUID не совпадают. ERP и Битрикс идентифицируют объекты по XML_ID (GUID). Если в ERP была пересборка или восстановление из бэкапа — GUID перегенерировались, и Битрикс создаст дубли вместо обновления существующих записей. Перед запуском обмена сверьте XML_ID в b_iblock_element с GUID тестовой выгрузки.
Кодировка. ERP выгружает UTF-8, но старые версии веб-сервиса могут отдавать windows-1251. Битрикс ожидает UTF-8. Симптом: кракозябры в названиях или ошибка парсинга XML. Проверяйте заголовок Content-Type HTTP-ответа.
Большие изображения. ERP может передавать изображения прямо в XML (base64). При тысячах позиций файл разрастается неприемлемо. Настройте в ERP передачу изображений отдельным пакетом или отключите передачу изображений через обмен — загружайте их отдельным скриптом.
Сроки и состав работ
Типовой проект по настройке обмена ERP ↔ Битрикс: 3–8 рабочих дней в зависимости от объёма номенклатуры и количества нестандартных сущностей (серии, партии, доп. реквизиты). Отдельно — тестирование на копии БД перед переключением production.







