Автоматизация · 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Создайте узел обмена с сайтом и укажите адрес страницы обмена на сайте
- 2Задайте учётные данные пользователя Битрикса с правом на обмен
- 3Настройте отбор выгружаемых товаров и типов цен
- 4Выберите режим: полная выгрузка или только изменения
- 5Настройте расписание автоматического обмена
- 6Выполните тестовый обмен и проверьте результат на сайте
Настройка приёма данных на стороне Битрикса
В административном разделе Битрикса параметры обмена задаются в настройках модуля «Интернет-магазин» (или интеграции с 1С, в зависимости от редакции). Здесь определяются: группа пользователей, которой разрешён обмен, инфоблоки для каталога и предложений, действия с товарами, отсутствующими в выгрузке, и лимиты на размер и время обработки пакетов.
Критичный параметр — поведение при отсутствии товара в файле импорта. Вариант «деактивировать» безопасен: товар скрывается, но не удаляется. Вариант «удалить» при сбойной неполной выгрузке способен стереть половину каталога вместе с накопленными SEO-данными и привязками.
Также проверьте ограничения хостинга: max_execution_time, лимит памяти и размер POST-запроса. Битрикс умеет обрабатывать импорт по шагам, но при слишком жёстких лимитах сеанс обрывается посередине, и каталог остаётся в частично обновлённом состоянии.
Обмен заказами и статусами
Заказы передаются отдельным сеансом: 1С запрашивает у сайта новые документы с момента последнего успешного обмена. Битрикс отдаёт заказы в формате CommerceML, 1С создаёт документы «Заказ покупателя» и при успешной записи сообщает сайту, что документы приняты.
После обработки в 1С статусы возвращаются на сайт: оплачен, отгружен, отменён. Соответствие статусов настраивается в узле обмена — важно сопоставить статусы 1С со статусами заказа в Битриксе, иначе покупатель увидит некорректное состояние или заказ «зависнет» в промежуточном статусе.
Если заказ на сайте оплачен онлайн, проверьте, что оплата корректно передаётся в 1С и не создаёт дублирующий документ оплаты при повторном обмене. Это частая причина расхождений в учёте.
Типичные ошибки и их диагностика
Чаще всего обмен ломается на авторизации: сменили пароль пользователя, истекла сессия, сервер отдаёт редирект вместо страницы обмена. Признак — ошибка «Не удалось установить соединение» или «Ошибка авторизации» в журнале 1С. Проверьте, открывается ли адрес обмена в браузере и не перехватывает ли запрос редирект на HTTPS или другое зеркало домена.
Вторая группа проблем — обрывы на больших каталогах: сеанс завершается по таймауту, файл не доезжает целиком. Помогает включение zip-сжатия, уменьшение размера пакета в настройках обмена и увеличение лимитов PHP. Третья группа — рассинхронизация: дубли товаров после переустановки узла обмена, потерянные цены из-за несовпадения типов цен в 1С и на сайте.
Как проверить, что обмен работает корректно
Минимальная проверка после настройки: измените в 1С цену и остаток одного тестового товара, выполните обмен и убедитесь, что на сайте значения обновились, а карточка не продублировалась. Затем оформите тестовый заказ на сайте и проверьте его появление в 1С с корректным контрагентом и составом.
Для постоянного контроля используйте журнал обмена в 1С и логи на стороне сайта. Тревожные признаки: растущее время сеанса, ошибки приёма файлов, заказы, которые висят в статусе «не выгружен» дольше одного цикла обмена.
Как проверить результат
Цена и остаток обновились, товар один, привязка к разделу сохранена
Появился дубль товара или цена не изменилась
Заказ появился в 1С с верным составом и покупателем
Заказ не загружается или создаётся с пустым контрагентом
Сеансы завершаются без ошибок, время стабильно
Ошибки авторизации, обрывы, рост длительности сеанса
Статус в 1С и на сайте совпадает после обмена
Статус на сайте не меняется или сбрасывается
Что важно запомнить
Обмен 1С и Битрикса идёт по протоколу CommerceML и инициируется со стороны 1С. Надёжность зависит от правильной авторизации, адекватных лимитов сервера, режима выгрузки изменений и аккуратной работы с внешними кодами товаров. Перед запуском сделайте резервную копию и проверьте обмен на тестовых товарах и заказе.
Частые вопросы
Как часто нужно запускать обмен?
Зависит от оборачиваемости каталога. Для остатков и цен при активных продажах обычно достаточно интервала от 15 минут до часа в режиме выгрузки изменений. Полную выгрузку с картинками имеет смысл выполнять редко и в нерабочее время — она самая ресурсоёмкая.
Почему после обмена появились дубли товаров?
Почти всегда причина в потере соответствия внешних кодов: пересоздали узел обмена, восстановили сайт из старой копии или очистили поле внешнего кода у элементов инфоблока. Лечится удалением дублей и повторной привязкой по GUID либо полной переиндексацией каталога с чистого листа.
Можно ли обмениваться с несколькими сайтами из одной 1С?
Да, для каждого сайта создаётся отдельный узел обмена со своими отборами, типами цен и расписанием. Важно следить, чтобы отборы не пересекались непреднамеренно — иначе один и тот же товар будет выгружаться по-разному на разные площадки.
Что делать, если заказы не загружаются в 1С?
Проверьте три вещи: запущен ли обмен заказами (это отдельная операция, не связанная с каталогом), нет ли ошибок в журнале обмена и не блокирует ли загрузку незаполненный контрагент или неизвестный способ оплаты. Часто заказ отклоняется из-за несоответствия ставок НДС или валюты.
Нужен ли для обмена отдельный пользователь на сайте?
Рекомендуется. Отдельная учётная запись с минимально необходимыми правами упрощает аудит: по журналу видно, какие изменения внёс обмен, а какие — контент-менеджеры. Кроме того, при компрометации пароля ущерб ограничен правами этой учётной записи.