Налаштування XML-імпорту та експорту 1С-Бітрікс
Стандартний модуль «Торговий каталог» (catalog) підтримує обмін з 1С через протокол CommerceML 2.x — XML-файли з номенклатурою, цінами та залишками. На практиці цей механізм ламається у трьох типових сценаріях: кодування файлу не UTF-8, нестандартна структура вузлів <Класифікатор> з боку 1С та перевищення ліміту часу виконання при файлах більше 50 МБ.
Як працює штатний обмін
1С-Бітрікс очікує файли строго у форматі CommerceML 2.08. Обмін відбувається через /bitrix/admin/1c_exchange.php — скрипт-приймач, який зчитує сесію обміну з $_SESSION['BX_CML2_IMPORT'] та послідовно обробляє чанки через CCatalogImport.
Таблиці, яких торкається імпорт:
-
b_iblock_element— елементи каталогу -
b_catalog_price— ціни за типами -
b_catalog_store_product— залишки за складами -
b_iblock_element_property— властивості елементів
Типові проблеми та їх вирішення
Проблема 1: таймаут при великих файлах
1С вивантажує один XML на 200 000 позицій — файл важить 180 МБ. set_time_limit(0) не рятує, якщо PHP-FPM налаштований з request_terminate_timeout. Рішення — увімкнути покроковий режим: у налаштуваннях модуля «1С-Бітрікс: Управління сайтом → Налаштування → Налаштування продукту → 1С» встановити «Розмір файлу для покрокової обробки» (параметр CATALOG_IMPORT_STEP_SIZE). 1С-Бітрікс самостійно розіб'є файл на частини через SAX-парсер.
Проблема 2: дублікати товарів
Імпорт ідентифікує товар за XML-атрибутом Ід з тегу <Товар>. Якщо в 1С змінили GUID номенклатури, 1С-Бітрікс створює новий елемент. Перевірте поле XML_ID у b_iblock_element — там зберігається цей ідентифікатор. Виправляємо через пряме оновлення або перев'язку через CIBlockElement::Update().
Проблема 3: ціни не оновлюються
Часта причина — тип ціни в 1С називається «Основна», а в 1С-Бітрікс створено тип «Роздрібна». Маппінг задається в /bitrix/admin/cat_price_type.php. Переконайтесь, що XML-тег <ТипЦіни><Найменування> збігається з полем NAME у таблиці b_catalog_price_type.
Налаштування експорту з 1С-Бітрікс до 1С
Для зворотного потоку (замовлення → 1С) використовується той самий endpoint з параметром type=sale. 1С-Бітрікс формує orders.xml зі структурою <Документ>, яка включає позиції замовлення. Критично перевірити, що в налаштуваннях обміну увімкнено прапорець «Вивантажувати реалізації» та вказано потрібний статус замовлень для вивантаження.
Параметри тонкого налаштування через CBitrixComponent bitrix:catalog.import.1c:
IBLOCK_ID — інфоблок каталогу
PRICE_TYPE — тип ціни за замовчуванням
STORE_ID — склад за замовчуванням
USE_CML2_DESCRIPTION — брати опис з XML
Часові рамки робіт
| Етап | Термін |
|---|---|
| Діагностика поточної схеми обміну | 2–4 години |
| Налаштування маппінгу типів цін та складів | 3–6 годин |
| Налаштування покрокового імпорту | 2–4 години |
| Тестовий запуск + налагодження | 4–8 годин |
Повне налаштування під нестандартну структуру 1С займає 1–2 робочих дні. Якщо потрібна кастомна обробка подій OnSuccessCatalogImport або OnBeforeCatalogImport — додайте ще день на розробку обробника.







