Інтеграція 1С-Бітрікс з 1С:Підприємство
Стандартний обмін 1С-Бітрікс з 1С:Підприємство працює через протокол CommerceML 2.08 — XML-файли, які 1С вивантажує на сайт по HTTP. На папері все просто: увімкнув обмін у модулі «Інтернет-магазин», налаштував адресу публікації в 1С — і товари синхронізуються. На практиці перший же реальний магазин з 50 000 SKU і нестандартною структурою номенклатури розкриває всі обмеження стандартного механізму.
Як влаштований стандартний обмін
Процес обміну складається з двох незалежних потоків:
Вивантаження каталогу (1С → сайт):
- 1С формує XML-файли
import*.xml(структура каталогу, товари, властивості) таoffers*.xml(ціни та залишки) - Завантажує файли на сайт через HTTP POST на
/bitrix/admin/1c_exchange.php - Сайт розбирає файли та оновлює інфоблок з товарами
Обмін замовленнями (сайт → 1С):
- Сайт формує XML з замовленнями за період
- 1С забирає замовлення, створює документи «Замовлення покупця»
- 1С повертає оновлені статуси замовлень назад на сайт
Точка входу на сайті — скрипт 1c_exchange.php в адміністративному розділі. Він обробляє команди: checkauth, init, file, import.
Налаштування з боку сайту
Налаштування → Налаштування продуктів → Інтернет-магазин → 1С-Бітрікс: Управління торгівлею:
- Інфоблок каталогу: вибрати інфоблок, до якого вивантажується номенклатура
- Тип цін: який тип цін з 1С стає основною ціною на сайті
- Завантаження картинок: увімкнути, лише якщо картинки ведуться в 1С
- Використовувати торгові пропозиції (SKU): для товарів з варіантами (колір, розмір)
- Дозволити видалення: небезпечна опція — товари, відсутні у вивантаженні, будуть деактивовані
Критичне налаштування — «Зберігати зміни зроблені на сайті»: при увімкненій опції зміни описів та зображень на сайті не будуть перезаписані при наступному обміні. При вимкненій — кожен імпорт перезаписує контент з 1С.
Налаштування з боку 1С
У конфігурації «Управління торгівлею» (УТ 10, УТ 11) або в будь-якій конфігурації з підсистемою обміну з сайтом:
Продажі → Обмін з сайтом → Сайти:
Адреса публікації: https://myshop.ua/bitrix/admin/1c_exchange.php
Логін: admin (або окремий користувач)
Пароль: ***
Тип обміну: Обмін даними
Період вивантаження замовлень: з дати останнього обміну
Для тестування обміну в 1С: Обмін з сайтом → Виконати обмін. У журналах сайту (/bitrix/modules/iblock/tools/) — детальний журнал імпорту.
Типові проблеми першого запуску
Таймаут при великих файлах. Вивантаження 50 000 товарів в один XML-файл важить 200–400 МБ. Сервер розбирає його до 30 хвилин — PHP-процес помирає раніше. Рішення: у налаштуваннях 1С увімкнути «Вивантажувати файлами по N товарів», встановити поріг 1000–5000.
Кирилиця в іменах файлів. Якщо папка з вивантаженням містить кириличні символи — файли не доходять. Змінити шлях публікації на транслітерацію.
Невідповідність кодувань. 1С вивантажує UTF-8, але старі конфігурації можуть вивантажувати windows-1251. Перевірити заголовок <?xml version="1.0" encoding="UTF-8"?> у файлі.
Дублювання товарів. Кожен товар у 1С має унікальний ідентифікатор ІД у CommerceML. Якщо в 1С оновили базу (перенесення, реструктуризація), ідентифікатори змінились — при наступному обміні всі товари створяться заново, старі деактивуються. Результат: тисячі дублів і втрата посилань.
Кейс: інтеграція для будівельного магазину
Магазин будматеріалів, 80 000 SKU, УТ 11.4. Стандартний обмін працював, але при кожному оновленні 1С (~раз на місяць) 3–5% товарів отримували нові ІД через перепривʼязку серій. Сайт деактивував ці товари, менеджери відновлювали вручну.
Рішення: middleware-скрипт перед імпортом звіряє ІД з нового XML з таблицею відповідностей {old_id => new_id}, що формується при кожному обміні. Якщо ІД змінився, але артикул (Артикул) збігається — товар не створюється заново, а оновлюється. Кількість «загублених» товарів впала до нуля. Скрипт додано як обробник події OnIBlockElementBeforeAdd.
Розмежування прав для облікового запису обміну
Не використовуйте обліковий запис адміністратора для обміну з 1С. Створіть окремого користувача:
- Група з правами на запис до інфоблоку каталогу
- Права на компонент обміну в адміністративному розділі
- Без доступу до інших розділів адміністрування
У 1c_exchange.php перевірка прав: користувач повинен входити до групи з правом iblock_admin на потрібний інфоблок.
Periodичність обміну та навантаження
| Режим | Навантаження на сервер | Застосування |
|---|---|---|
| Повне вивантаження раз на добу | Пікове, 5–30 хв | Невеликі каталоги (до 10 000) |
| Повне вивантаження + дельта-оновлення | Помірне | Великі каталоги |
| Лише залишки та ціни щогодини | Низьке | Висококволатильні склади |
| REST API + події 1С | Мінімальне | Критичні дані реального часу |
Для великих каталогів — рознести повну синхронізацію каталогу (вночі) та оновлення цін/залишків (щогодини). Це принципово знижує навантаження в робочий час.
Терміни інтеграції
| Завдання | Термін |
|---|---|
| Стандартний обмін каталогом + замовленнями | 1–3 дні |
| + нестандартна структура характеристик | 3–5 днів |
| + вирішення проблем з ІД при перенесенні бази | +1–2 дні |
| Кастомний обмін через REST API | 1–3 тижні |







