Обмен с 1С умер. Сайт приуныл. Что пошло не так?

Удивительно, но на некоторых проектах до сих пор всплывают проблемы с обменом между сайтом и 1С которые не могут решить. Недавно помогали коллегам с подобным кейсом: старый БУС, 1С, обмен заказами долго шёл без проблем — и в один день встал. В логах — вал ошибок, команда в ступоре. Разобрались, починили. Заодно решил расчехлить старую инструкцию из Wiki.

Как работает обмен с 1С Обмен построен на протоколе CommerceML 2. Сайт и 1С обмениваются XML-файлами. Что может передаваться: каталог товаров и торговые предложения (характеристики), цены и остатки, заказы (в обе стороны), пользователи, справочники, а если 1С-программист опытный, можно выгружать почти всё.

Версии обмена: как понять, какой у вас Состав файлов зависит от версии модуля и настроек в 1С. — в старых сборках — только import.xml и offers.xml — в новых добавляются prices.xml и rests.xml — может появляться goods.xml с дополнительными GET-запросами

Это не отдельные виды обменов, а просто конфигурации одного механизма. Документация Бесплатный модуль для 1С Можно установить официальный модуль Он добавляет дерево выгрузки и больше гибкости. Но если какие-то категории или товары не попали в это дерево — они не выгрузятся. За этим придётся следить руками.

Общая логика обмена Инициатор всегда 1С, сайт — ведомый. Сценарий такой: — сначала идёт авторизация — потом, в зависимости от версии, создаётся отдельная сессия — после этого 1С отправляет серию GET-запросов на /bitrix/admin/1c_exchange.php — этот файл вызывает нужные модули (каталог, заказы, справочники)

Важно: параллельных обменов одного типа быть не может. Иначе XML-файлы перезапишут данные друг друга. Таблицы для товаров (b_xml) и заказов уязвимы. Если обмен оборвался, он начнётся с начала.

Частые проблемы и узкие места — архивирование (ZIP) часто ломает обмен — лучше выключать — в 1С желательно уменьшать размер пакета до 100-1000 элементов — большое количество свойств у товара сильно тормозит процесс — все свойства, цены, склады из 1С перезапишут то, что вы вносили руками в админке — если сторонний скрипт массово изменяет заказы — 1С может не успеть выгрузить всё, что поставлено в очередь

Как отлаживать вручную Можно повторить действия 1С руками. Начинаем с авторизации: — /bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth

Сайт вернёт sessid, который используется в следующих запросах. Если 1С сообщает, что всё выгрузила, а товары/цены/остатки не появились — вероятно, ошибка на стороне сайта. Делайте импорт вручную:

— получите нужный файл от 1С — положите его в /upload/1c_catalog/ — выполните: /bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=ВАШ_ФАЙЛ.xml&sessid=ID — жмите F5, пока обмен не завершится (будет видно по ответу на экране)

Почему заказы не выгружаются в 1С Если 1С «не видит» заказы — скорее всего, проблема в её отборе. Сайт отдаёт всё, что было изменено после последней выгрузки. В некоторых конфигурациях могут стоять дополнительные фильтры, например: «выгружать только оплаченные».

‼️ Важно: при ручной проверке обмена все заказы уйдут только один раз. Повторно выгрузить тот же заказ можно только если вручную изменить его (например, добавить комментарий).

Проверка вручную: /bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=ID

Продолжение истории Что случилось в недавнем проекте: 1С пыталась обновить старые заказы, уже находящиеся в статусе «Выполнен». А Битрикс по умолчанию запрещает изменять закрытые заказы. В результате 1С стучалась об стену, сайт отбивался, обмен вставал, сервер тормозил. Решение было простым сбросили очередь заказов на сайте и в 1С. После этого обмен пошёл как надо.

Выводы Обмен с 1С — относительно стабильная конструкция, но капризная. Он тащит всё дерево товаров и все свойства, даже если они не нужны. Это добавляет устойчивости, но убивает скорость.

Если проект растёт — переходите на брокеры вроде RabbitMQ, Kafka или Datareon. Там можно избавиться от избыточности, но придётся внимательно следить за консистентностью и не допускать зацикливаний. Полная версия текста на сайте.

Обмен с 1С умер. Сайт приуныл. Что пошло не так?
Удивительно, но на некоторых проектах до сих пор всплывают проблемы с обменом между сайтом и 1С которые не могут решить | Сетка — социальная сеть от hh.ru