Налаштування обміну 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 тис. позицій рекомендую розділити повний та інкрементальний обмін:
| Тип обміну | Periodичність | Вміст |
|---|---|---|
| Повний | 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.







