Ми стикалися з цією ситуацією десятки разів: клієнт запускає обмін з 1С, а на виході — таймаути, дублі товарів або ціни, які не оновлюються. Стандартний модуль Торговий каталог (catalog) підтримує протокол CommerceML 2.x, але на практиці він ламається в трьох сценаріях: кодування не UTF-8, нестандартна структура <Класифікатор> і перевищення ліміту часу при файлах більше 50 МБ. Ми налаштовуємо імпорт під ключ за 1–2 дні з гарантією стабільної роботи.
Чому виникають таймаути при імпорті великих XML-файлів
Основна причина — обмеження max_execution_time у PHP. При завантаженні файлу розміром 180 МБ, що містить 200 000 товарів, скрипт 1c_exchange.php не встигає обробити дані за стандартні 30 секунд. Навіть set_time_limit(0) не допомагає, якщо в PHP-FPM налаштований request_terminate_timeout. Рішення — ввімкнути покроковий імпорт. У налаштуваннях модуля 1С виставляємо «Розмір файлу для покрокової обробки» (параметр CATALOG_IMPORT_STEP_SIZE). Бітрікс за допомогою SAX-парсера ділить файл на чанки по 10 МБ і обробляє їх послідовно. Це не тільки запобігає таймаутам, але й знижує навантаження на БД: кожен крок фіксується, і при збої обмін відновлюється з останньої успішної порції. На одному з проєктів з каталогом обладнання (150 000 SKU) такий підхід скоротив час імпорту з 4 годин до 40 хвилин.
Як уникнути дублів товарів при обміні?
Дублі виникають, коли ідентифікатор GUID номенклатури (<Ид>) змінюється в 1С. Наприклад, після переходу на нову версію конфігурації або перенесення даних. Бітрікс не може зіставити новий GUID з існуючим XML_ID в b_iblock_element і створює новий елемент. Для виправлення дублів використовуємо прямий SQL-запит або CIBlockElement::Update(). Профілактика — налаштування в 1С: заборонити вивантаження елементів з пустим або неунікальним GUID. У складних випадках пишемо обробник події OnSuccessCatalogImport, який перевіряє унікальність і примусово оновлює XML_ID.
Що робити, якщо ціни не оновлюються?
Часта причина — неспівпадіння назв типів цін. У 1С тип ціни може називатися «Основна», а в Бітрікс — «Роздрібна». Маппінг задається в /bitrix/admin/cat_price_type.php. Переконайтеся, що <ТипЦены><Наименование> в XML збігається з NAME в b_catalog_price_type. Якщо потрібно зіставити кілька типів цін, пишемо кастомний обробник OnSuccessCatalogImport. У ньому парсимо XML засобами SimpleXMLElement і оновлюємо ціни через CPrice::Update().
Налаштування експорту з Бітрікс в 1С
Для зворотного потоку (замовлення → 1С) використовується endpoint з параметром type=sale. Бітрікс формує orders.xml зі структурою <Документ>, що включає позиції замовлення. Критично перевірити, що в налаштуваннях обміну увімкнено прапорець «Вивантажувати реалізації» та вказано потрібний статус замовлень. Параметри компонента bitrix:catalog.import.1c:
-
IBLOCK_ID— інфоблок каталогу -
PRICE_TYPE— тип ціни за замовчуванням -
STORE_ID— склад за замовчуванням -
USE_CML2_DESCRIPTION— брати опис з XML
Процес налаштування
| Етап | Термін |
|---|---|
| Діагностика поточної схеми обміну (перевірка кодування, структури XML, помилок логу) | 2–4 години |
| Налаштування маппінгу типів цін та складів | 3–6 годин |
| Увімкнення та конфігурація покрокового імпорту | 2–4 години |
| Тестовий прогін з бойовими даними + налагодження (виправлення дублів, помилок) | 4–8 годин |
| Документування схеми та консультація | 1–2 години |
Підсумкове налаштування займає 1–2 робочих дні.
Порівняння підходів: штатний vs кастомний
| Критерій | Штатний обмін | Кастомна обробка |
|---|---|---|
| Підтримка великих файлів | Обмежений (скидання за часом) | Покроковий SAX-парсер без таймаутів |
| Гнучкість маппінгу | Тільки через адмінку | Довільні події та SQL |
| Час налаштування | 2 години | Від 1 дня |
| Гарантія цілісності | Середня (ризик дублів) | Висока (автотести та журнал) |
Що входить в роботу
- Діагностика поточної конфігурації обміну (кодування, структура
<Класифікатор>, типи цін) - Налаштування покрокового імпорту для великих файлів (оптимальний розмір чанка)
- Маппінг типів цін та складів (пряма відповідність або кастомні обробники)
- Виправлення дублів та помилок GUID (SQL або API)
- Тестовий прогін з реальним вивантаженням (засікаємо час, перевіряємо ціни та залишки)
- Документація за схемою обміну (схема даних, опис полів)
- Консультація щодо подальшого супроводу
У нас 10+ років досвіду розробки на Бітрікс, понад 200 проєктів з інтеграцією 1С. Сертифіковані спеціалісти гарантують коректну синхронізацію каталогу, цін та залишків. Для нетипових завдань (кастомні обробники, нестандартна структура 1С) додається день на розробку.
Оцініть ваш проєкт за 1 годину — напишіть нам. Отримайте консультацію інженера та пропозицію щодо налаштування імпорту під ключ.
CommerceML — офіційна специфікація протоколу обміну.







