1С Битрикс · 8 мин чтения

Обмен Битрикса с 1С: что настраивают и где он обычно встаёт

Обмен Битрикса с 1С всплывает на одном и том же этапе почти в каждом проекте: магазин уже работает, товары заведены руками или через разовый импорт, а вести каталог и заказы в двух системах параллельно никто физически не тянет. Дальше ищут штатный механизм CommerceML, включают его в панели администратора и на первой же крупной выгрузке обмен встаёт. Настраивал такую связку десятки раз, и чаще чинил уже существующий обмен, чем поднимал с нуля. Дальше подробно: из чего обмен состоит на практике, что в нём настраивают и на каких местах он обычно ломается.

Как работает обмен Битрикса с 1С через CommerceML

Штатный механизм обмена в 1С-Битрикс построен на протоколе CommerceML 2.x. Это открытый формат XML-файлов, через который 1С и сайт обмениваются каталогом, ценами, остатками и заказами без написания кода с нуля, модуль обмена уже встроен в ядро CMS, задача настройки сводится к правильной конфигурации обеих сторон.

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

Второй режим, который использую в большинстве проектов, это обмен по HTTP. Битрикс отдаёт стандартный обработчик по адресу вида /bitrix/admin/1c_exchange.php, 1С обращается к нему как к веб-сервису: авторизуется под отдельным пользователем сайта, заливает файлы каталога и остатков POST-запросами, затем забирает файлы с новыми заказами. Для этого в Битриксе заводят отдельного пользователя с правами на обмен, не администратора сайта целиком, а именно на модули «Каталог» и «Обмен с 1С», а в 1С в настройках обмена указывают адрес сайта, логин и пароль этого пользователя.

В самой простой редакции Битрикса модуль обмена может отсутствовать, это первое, что проверяю в разделе настроек продукта, прежде чем называть клиенту сроки.

Что настраивают в обмене каталога: товары, цены, остатки

Сама выгрузка каталога из 1С в Битрикс, только часть работы. На стороне сайта нужно заранее подготовить структуру, в которую эти данные лягут, иначе обмен либо не запустится, либо создаст кашу из дублей.

Торговые предложения и характеристики

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

Цены и остатки по складам

В 1С обычно заведено несколько типов цен, розница, опт, для сайта, и несколько складов. В Битриксе каждому типу цены из 1С сопоставляют свой тип цены в каталоге, а остатки по складам либо суммируют в одно общее число, либо разносят по региональным разделам, если магазин работает с самовывозом из разных точек. Отдельно настраивают частоту обновления остатков: для магазина с быстрым оборотом обмен раз в сутки означает, что половину дня на сайте будут висеть уже проданные позиции.

Перед тем как переключать обмен на боевой каталог, прогоняю его на тестовой копии сайта с ограниченной частью номенклатуры, десять-двадцать товаров вместо всего каталога. Так видно типичные проблемы сопоставления сразу, а не после того, как в боевой базе Битрикса уже накопились тысячи дублей, которые потом разгребать заметно дольше, чем настраивать обмен с нуля.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Обмен заказами и статусами между сайтом и 1С

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

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

Обмен заказами всегда инициирует 1С, а не сайт: Битрикс просто отдаёт файл по запросу, сам ничего не отправляет по своей инициативе. Значит, если в 1С не настроено регулярное расписание обмена, заказы будут выгружаться только когда кто-то вручную запустит обработку. На практике так теряют по несколько заказов в неделю, просто потому что никто не нажал кнопку.

Где обмен обычно встаёт: типичные причины сбоев

Из практики, вот список причин, с которых начинаю разбор, когда обмен «просто перестал работать»:

Симптом Вероятная причина Что проверяю первым
Каталог обрывается на середине выгрузки Хостинг режет время выполнения скрипта или размер загружаемого файла Лимиты max_execution_time и upload_max_filesize на хостинге, размер частей выгрузки в настройках 1С
Вместо обновления карточек создаются дубли товаров Внешний код товара в 1С не совпадает с тем, что уже есть в Битриксе Совпадение внешних ID у уже существующих карточек, историю первого запуска обмена
В названиях и характеристиках кракозябры Рассинхрон кодировки между файлами CommerceML и тем, что ждёт Битрикс Кодировку в файлах выгрузки, настройки кодировки в 1С
Обмен вдруг стал отвечать 401 или 403 У сервисного пользователя истёк или сменился пароль, либо обновление Битрикса сбросило права Права пользователя обмена в группе «Обмен с 1С», актуальность пароля в настройках 1С
Заказы уходят в 1С, но статусы не возвращаются Не настроено расписание обратного обмена или нет сопоставления статусов Регламентное задание в 1С, таблицу соответствия статусов заказа

Отдельная история, память и место на диске. Большой каталог с фотографиями в выгрузке легко занимает несколько гигабайт, и на хостинге с ограниченной квотой обмен падает не из-за протокола, а из-за банальной нехватки места в папке /bitrix/catalog_export/.

Логи самого обмена смотрю в первую очередь: у Битрикса это история сеансов обмена в том же разделе админки, у 1С, отдельный журнал обмена в настройках. Расхождение по времени между двумя логами обычно сразу показывает, на чьей стороне обмен прервался.

Ручной запуск и обмен по расписанию

Для разовой проверки обмен можно запустить руками прямо из админки Битрикса, в разделе «Магазин», «1С-Битрикс: Управление сайтом», «Обмен с 1С» есть кнопка ручного запуска. Это удобно, когда нужно быстро проверить, что связка вообще жива, не дожидаясь ближайшего сеанса по расписанию.

Для регулярной работы обмен настраивают по расписанию на стороне 1С, там есть регламентное задание, которое запускается автоматически с заданным интервалом, обычно раз в 15-60 минут в зависимости от того, насколько быстро должны появляться новые заказы на сайте. Сам Битрикс инициатором обмена не бывает: он только принимает запросы и отдаёт файлы, поэтому никакой cron на хостинге для этого не нужен, если используется HTTP-обмен.

Файловый вариант обмена через общую папку, другое дело: там за отправку и приём файлов отвечает планировщик на машине с 1С, и если сервер с 1С выключают на ночь или на выходные, обмен просто не происходит до следующего включения. На проектах, где нужна близкая к реальному времени синхронизация остатков, файловый вариант обычно не подходит именно из-за этого, лучше HTTP с коротким интервалом расписания.

Сколько стоит настройка обмена Битрикса с 1С

Стоимость сильно зависит от того, с нуля делается магазин или чинится существующий обмен.

Если магазин на Битриксе собирается с нуля и обмен с 1С нужен сразу, беру эту работу в рамках интернет-магазина под ключ, от 80 000 ₽. В эту стоимость входит структура каталога под торговые предложения, настройка пользователя обмена и первый тестовый запуск с реальными данными заказчика.

Если сайт уже работает, а обмен нужно поднять заново или он регулярно ломается после каждого обновления Битрикса или 1С, такую работу веду как техподдержку, от 15 000 ₽ в месяц. Это разумнее разовой правки, потому что причина сбоя часто не одна, и по-настоящему обмен стабилизируется после двух-трёх итераций.

Когда неясно, в чём именно причина конкретного сбоя, начинаю с консультации, от 3 000 ₽: смотрю логи обмена с обеих сторон и называю фиксированную стоимость под найденную причину, а не гадаю по переписке.

1С-Битрикс и 1С регулярно обновляются, поэтому перед внедрением я сверяюсь с актуальной документацией.

Частые вопросы

Сколько занимает настройка обмена Битрикса с 1С с нуля?

Если каталог в 1С уже приведён в порядок, заполнены внешние коды, характеристики оформлены правильно, настройка связки и первый успешный обмен занимают от 3 до 5 рабочих дней. Если каталог в 1С сам по себе в беспорядке, срок растягивается, потому что часть времени уходит на наведение порядка в номенклатуре, а не на настройку протокола.

Можно ли настроить обмен своими силами, без разработчика?

Технически да, мастер настройки обмена есть и в 1С, и в Битриксе, интерфейс рассчитан на то, что этим займётся администратор или бухгалтер. На практике сложности начинаются на стыке: как сопоставить статусы заказов, куда девать несовпадающие внешние коды, что делать с таймаутом хостинга. Эти вопросы мастер настройки не решает сам, и здесь чаще всего зовут разработчика.

Почему обмен работал, а потом перестал без видимых изменений на сайте?

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

Обязательно ли настраивать обмен, если товаров и заказов немного?

Если каталог меньше сотни позиций и обновляется раз в месяц, часто дешевле и надёжнее вносить изменения в Битрикс руками, чем поддерживать автоматический обмен. Смысл в автоматизации появляется, когда каталог или остатки меняются достаточно часто, чтобы ручное обновление стало отдельной постоянной задачей для сотрудника.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно