Интеграция сайта на 1С-Битрикс с 1С — это двусторонний обмен: товары, цены и остатки приезжают из учётной системы на сайт, а заказы уходят обратно в 1С. Механизм штатный, разрабатывался обеими сторонами и в типовых конфигурациях работает без программиста.
Разберём, как устроен обмен, что нужно настроить с каждой стороны, в каком порядке запускать первую выгрузку и почему подавляющее большинство проблем связано не с настройками, а с несовпадением справочников.
Как устроен обмен
Обмен работает по протоколу CommerceML. Инициатором всегда выступает 1С:
она сама обращается к сайту по адресу вида
https://site.ru/bitrix/admin/1c_exchange.php, авторизуется
и передаёт данные.
Обмен делится на два независимых направления:
| Направление | Что передаётся | Инициатор |
|---|---|---|
| Каталог: 1С → сайт | Товары, разделы, свойства, цены, остатки, изображения | 1С |
| Заказы: сайт → 1С | Заказы, покупатели, статусы оплаты и доставки | 1С |
Важная деталь: сайт никогда не обращается к 1С сам. Если обмен не происходит, причину ищите на стороне 1С или в расписании регламентного задания, а не в настройках сайта.
Этапы одного сеанса
- checkauth — проверка логина и пароля;
- init — согласование параметров: сжатие, размер порции;
- file — передача файлов выгрузки на сайт;
- import — разбор файлов и запись в инфоблок.
Разбор идёт пошагово: сайт обрабатывает порцию и сообщает 1С, что нужно продолжить. Так обходится ограничение времени выполнения скрипта, разобранное в статье Maximum execution time exceeded в Битрикс.
Настройка на стороне сайта
Обмен настраивается в разделе Магазин → Настройки → Интеграция с 1С.
Отдельный пользователь для обмена
Первое, что стоит сделать, — завести отдельного пользователя с правами на обмен, а не использовать администратора. Причины простые: пароль администратора окажется прописан в настройках 1С, а по логам обмена будет непонятно, кто что делал.
Пользователя добавляют в группу с правом на обмен с 1С. О настройке групп есть отдельная статья Настройка групп пользователей в Битрикс.
Ключевые параметры
| Параметр | На что влияет |
|---|---|
| Инфоблок для товаров | Куда выгружать каталог. Для первого обмена — пустой инфоблок |
| Интервал шага | Сколько секунд работает один шаг. Обычно 30 секунд |
| Количество элементов за шаг | Уменьшите, если обмен обрывается |
| Деактивировать отсутствующие | Что делать с товарами, которых нет в выгрузке |
| Использовать сжатие | Ускоряет передачу, но требует поддержки на сервере |
Параметр деактивации требует внимания: при частичной выгрузке из 1С он способен отключить весь каталог. Перед первым обменом его лучше выключить.
Нужна помощь с Битрикс?
Настройка на стороне 1С
В типовых конфигурациях узел обмена настраивается в разделе обмена с сайтом. Понадобятся адрес обработчика, логин, пароль и параметры выгрузки: какие группы номенклатуры выгружать, какие типы цен, выгружать ли остатки и картинки.
Расписание задаётся регламентным заданием. Практичный вариант: полная выгрузка каталога ночью, обмен заказами и остатками — каждые 15–30 минут.
Главное: совпадение справочников
Здесь кроется источник большинства проблем. Обмен связывает объекты по внешним идентификаторам, а не по названиям.
Что должно совпадать по обе стороны:
- Единицы измерения. Если в 1С «шт», а на сайте единица не заведена, товары приедут без корректного количества.
- Типы цен. Название типа цены в 1С должно соответствовать типу цены на сайте.
- Склады. При выгрузке остатков по складам они должны существовать и на сайте.
- Статусы заказов. Для обратного обмена статусы сопоставляются вручную в настройках.
- Способы оплаты и доставки. Иначе заказ в 1С придёт без них.
Практическое правило: сначала согласуйте справочники, потом запускайте обмен. Разбирать последствия обмена с несовпадающими справочниками дольше, чем настроить их заранее.
Порядок первого запуска
- Сделайте резервную копию сайта — обмен меняет данные массово.
- Заведите пользователя для обмена и выдайте права.
- Создайте отдельный пустой инфоблок под каталог.
- Согласуйте справочники: единицы, типы цен, склады.
- Отключите деактивацию отсутствующих товаров.
- Выгрузите из 1С небольшую тестовую группу номенклатуры — не весь каталог.
- Проверьте результат: разделы, свойства, цены, картинки, единицы измерения.
- Только убедившись, что всё корректно, запускайте полную выгрузку.
- Затем настройте обратный обмен заказами и проверьте его на тестовом заказе.
- В конце включите расписание.
Шестой пункт экономит больше всего времени. Ошибка в сопоставлении, найденная на двадцати товарах, исправляется за минуты; та же ошибка на двадцати тысячах — это чистка каталога на несколько дней.
Типичные проблемы
| Симптом | Где искать |
|---|---|
| Ошибка авторизации | Логин, пароль, права пользователя, доступность адреса обработчика |
| Обмен обрывается на середине | Уменьшить размер шага, проверить время выполнения и память |
| Товары приехали, цен нет | Не совпадают типы цен |
| Дубли товаров | Изменились внешние коды в 1С |
| Пропали все товары | Сработала деактивация отсутствующих при частичной выгрузке |
| Заказы не уходят в 1С | Не настроено расписание или сопоставление статусов |
| Обмен идёт часами | Выгружаются картинки при каждом обмене, велик объём |
Нагрузка на сайт
Полный обмен — тяжёлая операция: сотни тысяч запросов к базе, запись файлов, сброс кеша. Что стоит учесть:
- запускайте полную выгрузку ночью;
- частые обмены делайте только по изменившимся данным;
- картинки выгружайте отдельно и реже, чем цены и остатки;
- следите за местом на диске — файлы обмена накапливаются;
- при большом каталоге включите фасетный индекс после обмена, а не до.
Если во время обмена сайт начинает отдавать ошибки соединения с базой, причина обычно в исчерпании лимита — этот случай разобран в статье Too many connections в MySQL на Битрикс.
Итог
Обмен с 1С — штатный механизм, работающий по инициативе 1С через обработчик
1c_exchange.php. Настройка сводится к отдельному пользователю,
выбору инфоблока, размеру шага и расписанию регламентного задания.
Успех обмена определяется не настройками, а согласованностью справочников: единиц измерения, типов цен, складов и статусов. Начинать всегда стоит с тестовой выгрузки небольшой группы товаров на отдельном инфоблоке — это единственный способ найти ошибки сопоставления до того, как они разъедутся по всему каталогу.
