К статье
Практический материал

Автоматизация · 9 мин

Битрикс: как работает обмен с 1С

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

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

Ключевая особенность механизма — обмен инициируется со стороны 1С. Программа обращается к сайту по HTTP(S), проходит авторизацию, выгружает файлы пакетами и запускает их обработку. Сайт сам ничего в 1С не отправляет: он лишь отвечает на запросы и отдаёт файлы заказов, когда 1С их запрашивает.

Понимание этой схемы важно практически: большинство проблем обмена связано не с «поломкой сайта», а с авторизацией, таймаутами, размером пакетов или рассинхронизацией идентификаторов товаров. Ниже разберём архитектуру обмена, настройку с обеих сторон и способы диагностики типичных сбоев.

Как устроен протокол обмена CommerceML

CommerceML — это XML-стандарт описания коммерческих данных, разработанный совместно 1С и Битриксом. Каталог товаров передаётся файлом import.xml, предложения с ценами и остатками — файлом offers.xml, заказы — файлом в формате документов продаж. Картинки и файлы выгружаются отдельными архивами или по одному.

Сеанс обмена проходит в несколько шагов. Сначала 1С отправляет запрос авторизации на страницу обмена (для модуля интернет-магазина это обычно /bitrix/admin/1c_exchange.php). Затем запрашивает параметры: поддержку zip, лимит размера файла. После этого передаёт данные пакетами и вызывает команду import, по которой Битрикс разбирает XML и пишет изменения в базу.

Каждый товар, раздел и заказ снабжается уникальным внешним кодом (GUID из 1С). Именно по нему Битрикс понимает, обновить существующий элемент или создать новый. Если внешние коды потеряны или продублированы — появляются задвоения товаров и «осиротевшие» позиции без цен.

Что передаётся в каждую сторону

Из 1С на сайт уходят: структура разделов каталога, товары с характеристиками, цены по типам, остатки по складам, свойства и картинки. Из сайта в 1С возвращаются: заказы с составом, данными покупателя, способом оплаты и доставки, а при соответствующей настройке — контрагенты.

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

НаправлениеДанныеФайл обмена
1С → сайтКаталог, разделы, свойстваimport.xml
1С → сайтЦены, остатки, торговые предложенияoffers.xml
Сайт → 1СЗаказы, покупатели, оплатыфайл документов продаж
1С → сайтСтатусы заказов, отгрузкифайл документов продаж

Настройка обмена на стороне 1С

В типовых конфигурациях («Управление торговлей», «Комплексная автоматизация», «Управление нашей фирмой») обмен настраивается через узел «Обмен с сайтом». Здесь указываются адрес сайта, логин и пароль пользователя с правами на обмен, режим выгрузки (полная или только изменения) и расписание.

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

Порядок настройки узла обмена в 1С
  1. 1
    Создайте узел обмена с сайтом и укажите адрес страницы обмена на сайте
  2. 2
    Задайте учётные данные пользователя Битрикса с правом на обмен
  3. 3
    Настройте отбор выгружаемых товаров и типов цен
  4. 4
    Выберите режим: полная выгрузка или только изменения
  5. 5
    Настройте расписание автоматического обмена
  6. 6
    Выполните тестовый обмен и проверьте результат на сайте

Настройка приёма данных на стороне Битрикса

В административном разделе Битрикса параметры обмена задаются в настройках модуля «Интернет-магазин» (или интеграции с 1С, в зависимости от редакции). Здесь определяются: группа пользователей, которой разрешён обмен, инфоблоки для каталога и предложений, действия с товарами, отсутствующими в выгрузке, и лимиты на размер и время обработки пакетов.

Критичный параметр — поведение при отсутствии товара в файле импорта. Вариант «деактивировать» безопасен: товар скрывается, но не удаляется. Вариант «удалить» при сбойной неполной выгрузке способен стереть половину каталога вместе с накопленными SEO-данными и привязками.

Также проверьте ограничения хостинга: max_execution_time, лимит памяти и размер POST-запроса. Битрикс умеет обрабатывать импорт по шагам, но при слишком жёстких лимитах сеанс обрывается посередине, и каталог остаётся в частично обновлённом состоянии.

Обмен заказами и статусами

Заказы передаются отдельным сеансом: 1С запрашивает у сайта новые документы с момента последнего успешного обмена. Битрикс отдаёт заказы в формате CommerceML, 1С создаёт документы «Заказ покупателя» и при успешной записи сообщает сайту, что документы приняты.

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

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

Типичные ошибки и их диагностика

Чаще всего обмен ломается на авторизации: сменили пароль пользователя, истекла сессия, сервер отдаёт редирект вместо страницы обмена. Признак — ошибка «Не удалось установить соединение» или «Ошибка авторизации» в журнале 1С. Проверьте, открывается ли адрес обмена в браузере и не перехватывает ли запрос редирект на HTTPS или другое зеркало домена.

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

Типичные ошибки
01
Удаление узла обмена и создание нового — теряется соответствие GUID, появляются дубли товаров
02
Обмен под администратором сайта вместо отдельной учётной записи — сложнее отследить действия и выше риск при компрометации
03
Полная выгрузка в рабочее время при большом каталоге — сайт тормозит, сеанс обрывается по таймауту
04
Несогласованные типы цен и валюты в 1С и Битриксе — цены не обновляются без видимой ошибки
05
Игнорирование журнала обмена — сбои замечают только когда клиенты сообщают о неверных остатках

Как проверить, что обмен работает корректно

Минимальная проверка после настройки: измените в 1С цену и остаток одного тестового товара, выполните обмен и убедитесь, что на сайте значения обновились, а карточка не продублировалась. Затем оформите тестовый заказ на сайте и проверьте его появление в 1С с корректным контрагентом и составом.

Для постоянного контроля используйте журнал обмена в 1С и логи на стороне сайта. Тревожные признаки: растущее время сеанса, ошибки приёма файлов, заказы, которые висят в статусе «не выгружен» дольше одного цикла обмена.

Контрольные точки

Как проверить результат

Тестовый товар после обмена
Норма

Цена и остаток обновились, товар один, привязка к разделу сохранена

Тревожный признак

Появился дубль товара или цена не изменилась

Тестовый заказ
Норма

Заказ появился в 1С с верным составом и покупателем

Тревожный признак

Заказ не загружается или создаётся с пустым контрагентом

Журнал обмена
Норма

Сеансы завершаются без ошибок, время стабильно

Тревожный признак

Ошибки авторизации, обрывы, рост длительности сеанса

Статусы заказов
Норма

Статус в 1С и на сайте совпадает после обмена

Тревожный признак

Статус на сайте не меняется или сбрасывается

Итог

Что важно запомнить

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

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

Как часто нужно запускать обмен?

Зависит от оборачиваемости каталога. Для остатков и цен при активных продажах обычно достаточно интервала от 15 минут до часа в режиме выгрузки изменений. Полную выгрузку с картинками имеет смысл выполнять редко и в нерабочее время — она самая ресурсоёмкая.

Почему после обмена появились дубли товаров?

Почти всегда причина в потере соответствия внешних кодов: пересоздали узел обмена, восстановили сайт из старой копии или очистили поле внешнего кода у элементов инфоблока. Лечится удалением дублей и повторной привязкой по GUID либо полной переиндексацией каталога с чистого листа.

Можно ли обмениваться с несколькими сайтами из одной 1С?

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

Что делать, если заказы не загружаются в 1С?

Проверьте три вещи: запущен ли обмен заказами (это отдельная операция, не связанная с каталогом), нет ли ошибок в журнале обмена и не блокирует ли загрузку незаполненный контрагент или неизвестный способ оплаты. Часто заказ отклоняется из-за несоответствия ставок НДС или валюты.

Нужен ли для обмена отдельный пользователь на сайте?

Рекомендуется. Отдельная учётная запись с минимально необходимыми правами упрощает аудит: по журналу видно, какие изменения внёс обмен, а какие — контент-менеджеры. Кроме того, при компрометации пароля ущерб ограничен правами этой учётной записи.