Интеграция 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С
- Использовать характеристики: для товаров с вариантами (цвет, размер)
- Разрешить удаление: опасная опция — товары, отсутствующие в выгрузке, будут деактивированы
Критичная настройка — «Сохранять изменения сделанные на сайте»: при включённой опции изменения описаний и изображений на сайте не будут перетёрты при следующем обмене. При выключённой — каждый импорт перезаписывает контент из 1С.
Настройка со стороны 1С
В конфигурации «Управление торговлей» (УТ 10, УТ 11) или в любой конфигурации с подсистемой обмена с сайтом:
Продажи → Обмен с сайтом → Сайты:
Адрес публикации: https://myshop.ru/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 на нужный инфоблок.
Периодичность обмена и нагрузка
| Режим | Нагрузка на сервер | Применение |
|---|---|---|
| Полная выгрузка раз в сутки | Пиковая, 5–30 мин | Небольшие каталоги (до 10 000) |
| Полная выгрузка + дельта-обновление | Умеренная | Крупные каталоги |
| Только остатки и цены каждый час | Низкая | Высоковолатильные склады |
| REST API + события 1С | Минимальная | Критичные данные реального времени |
Для больших каталогов — разнести полную синхронизацию каталога (ночью) и обновление цен/остатков (каждый час). Это принципиально снижает нагрузку в рабочее время.
Сроки интеграции
| Задача | Срок |
|---|---|
| Стандартный обмен каталогом + заказами | 1–3 дня |
| + нестандартная структура характеристик | 3–5 дней |
| + решение проблем с ИД при переносе базы | 1–2 дня дополнительно |
| Кастомный обмен через REST API | 1–3 недели |







