Обмен 1С-Битрикс с 1С — это не «волшебная кнопка», а строгий протокол, по которому две системы обмениваются XML-файлами. Понимание того, как устроена эта механика изнутри, экономит часы на настройке и разборе ошибок: становится ясно, кто кого инициирует, где хранятся данные и почему выгрузка «встаёт» на большом каталоге.
Протокол CommerceML и кто с кем говорит
В основе интеграции лежит открытый стандарт CommerceML 2 — набор XML-схем, которыми 1С и Битрикс описывают товары, свойства, цены, остатки и заказы. Обмен идёт через HTTP(S): сторона 1С выступает клиентом, а сайт — сервером, который принимает запросы на специальный скрипт-обработчик.
Точка входа на стороне Битрикса — файл /bitrix/admin/1c_exchange.php (для каталога) и /bitrix/admin/1c_exchange.php?type=sale (для заказов, интернет-магазин). Именно этот адрес прописывается в настройке узла обмена в 1С вместе с логином и паролем пользователя сайта, у которого есть право на обмен.
- Каталог (товары, разделы, свойства, картинки) идёт из 1С на сайт.
- Цены и остатки выгружаются отдельным пакетом или вместе с каталогом.
- Заказы — двусторонний поток: сайт отдаёт новые заказы, 1С возвращает их со статусами.
Этапы одной сессии обмена
Обмен — это не один запрос, а последовательность шагов. 1С дергает обработчик сайта командами через параметр mode, и каждый шаг завершается ответом сервера. Порядок для каталога такой:
mode=checkauth— авторизация: сайт возвращает cookie-сессию.mode=init— согласование параметров: поддержка ZIP, максимальный размер файла (file_limit).mode=file— 1С загружает XML (и картинки) на сайт по частям.mode=import— сайт разбирает файлы и пишет данные в инфоблоки; при больших объёмах шаг вызывается повторно, пока не вернётsuccess.
Для заказов добавляются режимы mode=query (сайт отдаёт XML заказов) и mode=success. Понимание этих команд критично при разборе логов: по последнему успешному mode сразу видно, на каком этапе всё остановилось.
max_execution_time PHP.Как данные ложатся в каталог сайта
На стороне сайта данные из 1С попадают в инфоблоки модуля iblock и торгового каталога catalog. При первой настройке обмена Битрикс сам создаёт нужные инфоблоки: один для товаров и, если в 1С включены характеристики, второй — для торговых предложений (SKU), связанный с первым.
Ключевую роль играет внешний код — XML_ID. Каждый товар, раздел и свойство получают GUID из 1С, и по нему система при повторных выгрузках находит уже существующий элемент и обновляет его, а не плодит дубли. Поэтому нельзя вручную менять или чистить XML_ID — это первый шаг к «задвоению» каталога.
| Сущность в 1С | Где оказывается в Битрикс |
|---|---|
| Номенклатура | Элементы инфоблока товаров |
| Характеристики номенклатуры | Торговые предложения (SKU) |
| Группы номенклатуры | Разделы инфоблока |
| Реквизиты и свойства | Свойства инфоблока |
| Типы цен, остатки по складам | Цены и складской учёт каталога |
Двусторонний обмен заказами
Заказы — единственный поток, который идёт в обе стороны. Сайт формирует XML новых и изменённых заказов, 1С забирает его на шаге query, создаёт документы (заказ покупателя, реализация) и отдаёт обратно пакет с обновлёнными реквизитами: номером в 1С, статусом, флагами оплаты и отгрузки.
Соответствие полей заказа настраивается в 1С в узле обмена: способы оплаты и доставки, статусы, свойства заказа сопоставляются со справочниками. Если сопоставление не сделано, заказы будут выгружаться, но статусы «не приклеятся» — типичная причина, по которой менеджеры не видят актуального состояния на сайте.
sale (интернет-магазин). Для витрины без корзины двусторонний поток недоступен — выгружается только каталог.Где на сайте хранятся файлы и настройки
Все служебные файлы обмена лежат в каталоге /upload/1c_catalog/ (и /upload/1c_exchange/ для более новых версий). Именно сюда 1С загружает import.xml, offers.xml, prices.xml, файлы остатков и папки с картинками товаров.
- Профиль обмена и его параметры хранятся в настройках модуля торгового каталога: Магазин → Настройки → Настройки модулей → Торговый каталог.
- Права на обмен определяются группой пользователя сайта, под которым авторизуется 1С; удобно завести отдельного технического пользователя.
- Логи пишутся в файл
__1c_exchange.logв каталоге обмена, если включено логирование — это первый источник при разборе сбоев.
Отдельно стоит проверять права на запись в /upload/: если веб-сервер не может создать файл, обмен упадёт ещё на шаге file, хотя авторизация прошла успешно.
Узкие места и на что смотреть при настройке
Большинство проблем интеграции сводится к трём вещам: ресурсы сервера, объём каталога и корректность сопоставлений. Чем крупнее номенклатура, тем чаще обмен упирается в таймауты и память PHP.
- Ресурсы PHP. Параметры
max_execution_time,memory_limitиpost_max_sizeдолжны позволять принимать и разбирать крупные XML. - Размер порции. В настройках модуля есть «Количество элементов, обрабатываемых за один шаг» — его снижают, если импорт не укладывается в лимит времени.
- Полная vs. частичная выгрузка. В 1С стоит включить обмен «только изменённых» объектов, чтобы каждая сессия не гоняла весь каталог заново.
- Кодировка и валидность XML. Битая выгрузка из-за нестандартных символов в наименованиях — частая причина ошибок парсинга.
Итог
Интеграция 1С-Битрикс с 1С — это протокол CommerceML поверх HTTP: 1С как клиент пошагово шлёт XML на обработчик 1c_exchange.php, а сайт раскладывает данные по инфоблокам, сопоставляя объекты по XML_ID. Каталог идёт в одну сторону, заказы — в обе, а стабильность обмена держится на ресурсах сервера, размере порции и аккуратных сопоставлениях в узле 1С.
Мы в B2Bsite настраиваем такой обмен под ключ — от первичной связки каталога, цен и остатков до двустороннего потока заказов и сопровождения интеграции, когда каталог растёт. Если обмен нужно завести с нуля или он «встал» на проде, поможем разобраться и стабилизировать.
Частые вопросы
По какому протоколу работает обмен 1С и Битрикс?
По открытому стандарту CommerceML 2 поверх HTTP(S). Данные передаются XML-файлами, а 1С выступает клиентом, который обращается к обработчику на сайте.
Какой адрес указывать в 1С для обмена?
Точка обмена — /bitrix/admin/1c_exchange.php для каталога и тот же адрес с параметром type=sale для заказов. Вместе с адресом задаются логин и пароль пользователя сайта с правом на обмен.
Почему в каталоге появляются дубли товаров?
Чаще всего из-за нарушенного соответствия по XML_ID: если внешний код изменился или был очищен, система не находит существующий элемент и создаёт новый. Восстановление соответствия решает проблему.
Можно ли обмениваться заказами без модуля интернет-магазина?
Нет. Двусторонний обмен заказами требует установленного модуля sale. Без него выгружается только каталог, цены и остатки.
Где лежат файлы обмена на сайте?
В каталоге /upload/1c_catalog/ или /upload/1c_exchange/. Туда 1С загружает import.xml, offers.xml, prices.xml, файлы остатков и картинки товаров.
Почему обмен обрывается на большом каталоге?
Обычно упирается в лимиты PHP — время выполнения и память. Помогает уменьшение количества элементов на шаг, увеличение лимитов сервера и выгрузка только изменённых объектов.
Как понять, на каком этапе произошла ошибка?
По логу обмена и последнему успешному режиму (mode): checkauth, init, file, import или query. Это сразу показывает, где именно остановилась сессия.
Обмен полностью автоматический?
После настройки его запускают по расписанию из 1С или по агентам Битрикса. Но первую выгрузку и проверку сопоставлений лучше делать вручную с включённым логом.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.