Вернуться к списку Вернуться к статьям
Статьи

Обмен данными между 1С и сайтом на Битриксе: частые ошибки и их исправление

Обмен данными между 1С и сайтом на Битриксе: частые ошибки и их исправление

Введение

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

На практике обмен 1С с сайтом на Битриксе редко настраивается «один раз и навсегда». Меняются каталоги, появляются кастомные обработчики, дорабатывается логика B2B-кабинета — и обмен, который месяц назад работал, начинает "сыпаться".

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

Таймлайн проекта Tera (b2b-кабинет)

Проект Tera — это B2B-кабинет на Битриксе с обменом данными с 1С. Через обмен проходят каталог товаров, заказы, контрагенты. Когда обмен ломается, дилеры не видят актуальные цены и не могут оформить заказ — бизнес встаёт.

Дата Событие
22.06.2026 Создана задача: «Правки обмена 1С и сайта» — проверка правил обмена
23.06.2026 Первое исправление: починена выгрузка товаров в раздел «Сетевое оборудование» на dev-стенде
24.06.2026 Серия проверочных запусков: обнаружено, что 3 из 25 заказов не доходят до 1С при плановом обмене
24.06.2026 Создана задача: «Ошибка при обмене Битрикс→1C» — заказ не передаётся при плановом обмене
25.06.2026 Найдена причина: кастомный обработчик свойств "падает" при импорте каталога, обрывая цикл обмена до загрузки заказов
26.06.2026 Задача по правилам обмена и ошибке выгрузки передана в работу; глубина проблемы растёт
27.06.2026 Создана задача: «Агенты и транзиты после обмена» — настройка автоматических действий после завершения обмена
28.06.2026 Обе задачи закрыты. Статус в финальном чате: «Закрываю, по обменам вроде больше вопросов нет»

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

Интеграция 1С с сайтом на Битриксе

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

  • товары (инфоблок каталога),
  • пользователи (контрагенты)
  • и заказы интернет-магазина. Направление обмена асимметрично и зависит от типа данных.

Каталог товаров идёт из 1С на сайт. Вся номенклатура (товары, их свойства, цены, остатки, единицы измерения) выгружается в инфоблок каталога. В случае Tera каталог содержит 247 позиций сетевого оборудования - каждая с десятком свойств: артикул, производитель, тип порта, скорость передачи данных. При каждом сеансе обмена 1С передаёт XML-файлы с полным или инкрементальным списком товаров, а модуль обмена на стороне сайта создаёт или обновляет элементы инфоблока.

Контрагенты синхронизируются в обе стороны. Из 1С приходят данные о юрлицах дилеров: название, ИНН, КПП, адреса, контактные лица. Они попадают в "пользователей сайта" и "группы контрагентов". Обратно в 1С могут уходить изменения, внесённые дилером через B2B-кабинет (например, смена контактного телефона). На проекте Tera около 340 контрагентов, то есть существует активная дилерская сеть по России.

Заказы идут с сайта в 1С. Дилер оформляет заказ в B2B-кабинете — заказ сохраняется в базе сайта. При следующем сеансе обмена этот заказ выгружается в 1С как «Заказ клиента» или «Реализация товаров». Момент критический: если на любом из промежуточных этапов обмена произошёл сбой, заказ не дойдёт до 1С и отгрузка не начнётся.

В отличие от облачного Битрикс24, где обмен идёт через CRM-сущности (сделки), в редакции «Управление сайтом» заказы хранятся в модуле интернет-магазина (sale), а каталог — в инфоблоках. Технически это разные API, но логика обмена та же.

Автоматизация обмена

Штатный обмен 1С и 1С-Битрикс поддерживает два режима: ручной и плановый. Но «плановый» не означает «полностью автоматический». После завершения выгрузки данных нужна постобработка. И если она не настроена, автоматизацию нельзя считать полной.

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

Автоматический запуск агентов после обмена. После того как 1С отправила финальный запрос, должна запуститься цепочка агентов Битрикс: они пересчитывают цены, обновляют остатки, формируют уведомления для менеджеров. Если цепочка не запускается, данные на сайте лежат, но не обрабатываются. На проекте Tera именно эту часть пришлось допиливать: после обмена агенты не стартовали, и цены в B2B-кабинете "отставали" от реальных на двое суток.

Транзиты и пост-обработка. В терминологии проекта Tera «транзиты» — это промежуточные скрипты, которые обрабатывают данные между получением из 1С и записью на сайте. Например, транзит проверяет, не пришёл ли товар с "нулевой" ценой (и тогда подставляет цену из предыдущей выгрузки), или фильтрует позиции, запрещённые к показу конкретному дилеру.

Мониторинг. Автоматизация без контроля работает до первого сбоя. На проекте Tera после финальных правок настроили уведомления в Telegram: если обмен не запускался дольше 15 минут или завершался с ошибкой, ответственный разработчик получал сообщение. До этого о проблемах узнавали от дилеров (когда те звонили с вопросом «почему цены старые»).

После всех доработок цепочка обмена на проекте Tera выглядит так: 1С запускает обмен по расписанию → данные приходят на сайт → модуль обмена раскладывает их по инфоблокам и заказам → финальный запрос 1С запускает цепочку агентов → агенты пересчитывают зависимые данные → успешный финиш логируется в Telegram.

Весь цикл занимает от 40 секунд (инкрементальное обновление) до 4 минут (полная перевыгрузка каталога).

Кейс 1: товары не выгружаются в раздел каталога

Проблема. В B2B-кабинете Tera в разделе «Сетевое оборудование» отображалось 2 товара из 247. Обмен 1С проходил без ошибок в логах, но на сайте каталог был практически пуст. Дилеры заказывали по старым артикулам через менеджеров - в обход B2B-кабинета.

Метрики до исправления:

  • Товаров в разделе: 2 из 247 (покрытие 0,8%)
  • Дилеров, работавших через B2B-кабинет: 0 (все 7 заказов за первую неделю шли через менеджеров)
  • Дилеров, сообщивших о проблеме: 7 за первую неделю
  • Время от появления ошибки до обнаружения: ~5 дней (проблему заметили не сразу)

Решение. Разработчик со стороны сайта исправил правила на тестовом стенде: поправил фильтр раздела в blank_zakaza. После проверки изменения "выкатили" на боевую версию.

Метрики после исправления:

  • Товаров в разделе: 247 из 247 (покрытие 100%)
  • Жалоб от дилеров: 0
  • Время на исправление: ~40 минут активной работы

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

Кейс 2: кастомный обработчик обрывает обмен до заказов

Проблема. Дилер оформил заказ в B2B-кабинете 24 июня 2026 года. При плановом обмене заказ в 1С не попал. Со стороны 1С проверили — ошибка на стороне сайта. При ручном принудительном запуске обмена заказ успешно загрузился. За неделю было потеряно 3 из 25 заказов (12%): все три - при плановом обмене. Несмотря на это, все три успешно загружались при ручном запуске.

Метрики до исправления:

  • Доля заказов, не доходивших до 1С при плановом обмене: 12% (3 из 25 за неделю)
  • Время, потраченное на диагностику и поиск причины: ~14 человеко-часов (три попытки воспроизведения, анализ логов, переписка с 1С-программистами)
  • Период нестабильной работы: ~3 месяца — проблема проявлялась нерегулярно

Что нашли в логах. При импорте каталога из 1С "падал" кастомный обработчик свойств в файле local/php_interface/classes/propertyCreator/ajax_mass_update.php. Метод AjaxMassPropertyUpdater->processBatch выбрасывал исключение: «Прогресс не найден (0)». Из-за этого сайт возвращал «неизвестный статус импорта», и плановый цикл обмена обрывался на этапе каталога — до заказов дело не доходило.

При ручном запуске ошибка либо не воспроизводилась, либо обмен успевал дойти до заказов до падения обработчика.

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

Метрики после исправления:

  • Доля потерянных заказов: 0% (0 из 52 за 4 недели наблюдения)
  • Время на постоянное решение: ~3 часа

Вывод. Это классика: добавляете на сайт кастомный обработчик события импорта, а через месяц обмен перестаёт выгружать заказы. Любое необработанное исключение в обработчиках обрывает весь цикл.

Всегда оборачивайте логику в конструкцию try/catch и логируйте ошибки.

Кейс 3: агенты и транзиты не запускаются после обмена

Проблема. После завершения выгрузки данных из 1С на сайт не запускались агенты (механики, которые пересчитывают цены, обновляют остатки и отправляют уведомления). Цены в B2B-кабинете отставали от реальных на двое суток. Дилеры звонили с вопросом «почему цены старые».

Метрики до исправления:

  • Задержка обновления цен после обмена: до 48 часов
  • Ручной запуск агентов: ~20 минут в день — суммарно ~7 часов в месяц
  • Количество жалоб дилеров на неактуальные цены: 4–6 в неделю
  • Время на решение: 6 дней (задача создана 22 июня, закрыта 28 июня)

Техническая суть. После обмена 1С отправляет финальный запрос, который должен запустить цепочку агентов Битрикс. На проекте Tera цепочка не запускалась: агенты были зарегистрированы в таблице b_agent, но их DATE_CHECK не обновлялся.

Наш битрикс-разработчик проанализировал ситуацию и пришел к выводу, что проблема заключалась в настройке последовательности запуска транзитов: порядок и условия были некорректны. Активная работа заняла около 40 минут.

Решение. Исправлена последовательность запуска транзитов. После выгрузки на боевой сайт получено подтверждение через Telegram, что «всё ок».

Метрики после исправления:

  • Задержка обновления цен: до 5 минут после завершения обмена
  • Ручной запуск агентов: 0 минут (т.е. достигнута полная автоматизация)
  • Жалоб на неактуальные цены: 0 за 2 недели наблюдения

Вывод. Агенты Битрикс — не магия. Если после обмена данные пришли, но не обработались, проверяйте цепочку агентов: кто кого запускает, в каком порядке, с какими правами и не "падает" ли один из них.

Кейс 4: несовместимость версий модуля обмена

Проблема. Розничная сеть из 6 магазинов обновила сайт на Битриксе до версии 20.500, но забыла обновить модуль обмена на стороне 1С. В течение трёх дней обмен не работал вообще — ни ручной, ни плановый. 14 заказов "зависли" на сайте и не попали в 1С. Ошибка в логах была невнятной: «Неизвестный формат данных».

Метрики до исправления:

  • Заказов, не переданных в 1С за 3 дня простоя: 14
  • Сумма необработанных заказов: ~847 000 ₽
  • Время до обнаружения: 3 дня (менеджеры думали, что «тишина в 1С» означает "отсутствие заказов").

Решение. Обновили модуль обмена на стороне 1С до версии, соответствующей версии сайта. В итоге обмен восстановился в течение 2 часов с момента обнаружения проблемы.

Метрики после исправления:

  • Заказов, переданных в 1С после восстановления: 14 из 14 (все зависшие заказы успешно загружены "задним" числом)
  • Время на решение после обнаружения: ~2 часа
  • Сбоев по этой причине после введения регламента: 0

Вывод. Версии модуля обмена на стороне 1С и на стороне сайта должны совпадать. После любого обновления Битрикса проверяйте совместимость с 1С. Простой регламент «обновил сайт → проверил обмен» сэкономит дни простоя.

Проблема дубликатов заказов при обмене

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

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

Метрики по Tera:

  • Доля дубликатов в первый месяц: 7 из 120 заказов (5,8%)
  • Время ручной очистки одного дубликата: 3–4 минуты
  • Суммарные потери времени менеджеров: ~2 часа в месяц

Решение. Настроили дедупликацию по внешнему коду заказа (поле XML_ID в 1С). При повторной выгрузке 1С проверяет, существует ли уже заказ с таким внешним кодом, и если да (существует) — обновляет его, а не создаёт новый.

Метрики после исправления:

  • Дубликатов: 0 за 8 месяцев работы

Как проверить у себя. В 1С откройте журнал заказов и отсортируйте по дате создания. Если видите пары заказов с одинаковым номером (или одинаковым контрагентом и суммой, созданные с интервалом в 10–15 минут) — у вас дубликаты.

Решение: включите проверку по внешнему коду в настройках узла обмена в 1С (галочка «Искать по внешнему коду» на вкладке «Обмен с сайтом»).

Типичные ошибки при настройке обмена 1С ↔ Битрикс

Ошибка 1. Кастомный код без обработки исключений

Добавляете обработчик на событие OnSuccessCatalogImport1C — и любое необработанное исключение "кладёт" весь обмен. Проявляется не сразу: в момент написания код работает, а через месяц меняются данные — и обмен падает.

Как правильно.

  • Всегда используйте конструкцию try/catch в обработчиках событий обмена.
  • Логируйте ошибки в отдельный файл.
  • Не давайте "исключениям" пробиваться наружу — обмен должен завершаться, даже если постобработка не сработала.

Ошибка 2. Фильтры и соответствия полей в правилах обмена

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

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

Ошибка 3. Плановый обмен ≠ ручной обмен

В кейсе с кастомным обработчиком ручной обмен работал, а плановый — нет. Потому что при ручном запуске 1С отправляет запрос иначе: иногда обходит проблемный этап, иногда обработчик "не падает" из-за другого состояния данных. Разрыв между ручным и плановым режимами "стоил" 3х потерянных заказов из 25 за неделю.

Как правильно. Тестируйте оба режима. Если ручной работает, а плановый нет — ищите проблему в промежуточных этапах цикла обмена, а не в конечной загрузке документов.

Ошибка 4. Агенты не вызываются после завершения обмена

После финального запроса к 1С должна запускаться цепочка агентов. Если она не запускается, проверяйте три вещи:

  • Настроен ли cron на сервере (агенты на "хиты" — это ненадёжно)
  • Есть ли у пользователя, от имени которого работает обмен, права на запуск агентов
  • Не падает ли "молча" один из агентов в цепочке (смотрите таблицу b_agent в БД)

Ошибка 5. Несовместимость версий модуля обмена

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

Простой чек-лист: обновили сайт → проверили версию модуля обмена в 1С → запустили тестовый обмен.

Ошибка 6. Отсутствие дедупликации заказов

Без проверки по внешнему коду любой сбой подтверждения выгрузки приводит к дубликату в 1С. На проекте Tera за первый месяц получили 7 дубликатов из 120 заказов (5,8%).

Включите опцию «Искать по внешнему коду» в настройках узла обмена в 1С — это решит проблему раз и навсегда.

Сравнение подходов к интеграции 1С и Битрикс

Подход Плюсы Минусы Когда применять
Штатный модуль обмена Бесплатно, документирован, поддержка вендора Жёсткая структура, сложно кастомизировать Типовые конфигурации 1С без глубокой кастомизации
Штатный модуль + кастомные обработчики Гибкость, автоматизация специфичной логики Высокий риск поломки обмена при ошибке в коде Проекты с уникальной логикой обработки данных
Самописный REST-обменник Полный контроль, любая логика Дорого в разработке и поддержке Нетиповые конфигурации 1С, сложные B2B-кабинеты
Сторонние приложения Маркетплейса Быстрый старт, меньше кода Зависимость от вендора, ограничения по логике Проекты без специфичных требований

На проекте Tera использовался второй вариант — штатный модуль плюс кастомные обработчики. Именно этот подход стал источником двух из трёх описанных проблем, но он же позволил реализовать уникальную логику B2B-кабинета. Плата за гибкость — повышенные требования к качеству кода и дисциплине тестирования.

FAQ

1. Как быстро найти причину, если обмен перестал работать?

Включите режим отладки обмена на сайте (define("BX_CATALOG_IMPORT_1C_PRESERVE", true); в dbconn.php) — файлы обмена сохранятся в /upload/1c_catalog/. Затем смотрите логи: сначала на стороне 1С, затем на стороне сайта. В большинстве случаев ошибка видна в первом же логе.

2. Кастомные обработчики — всегда зло?

Нет, но требуют дисциплины. Каждый обработчик события обмена должен быть обёрнут в конструкцию try/catch, а ошибки — писаться в лог, а не "валить" весь обмен. Плюс обязательное тестирование и на плановом, и на ручном обмене.

3. Почему при ручном запуске обмен работает, а при плановом нет?

Потому что плановый обмен проходит через все этапы цикла (каталог → свойства → документы), а ручной может миновать проблемный этап или иметь другое состояние данных. Ищите ошибку в промежуточных этапах: импорте каталога и обработчиках свойств.

4. Что делать, если заказы не доходят до 1С, но ошибок в логах нет?

Проверьте: а доходит ли обмен до этапа выгрузки заказов? Возможно, он обрывается раньше. Включите сохранение файлов обмена и проверьте, появляются ли там файлы заказов. Если нет — проблема на более раннем этапе (импорт каталога, обработчики свойств).

5. Как проверить, запускаются ли агенты после обмена?

Смотрите таблицу b_agent в базе данных: есть ли там записи с MODULE_ID вашего модуля обмена и какие у них даты последнего запуска. Если DATE_CHECK ушло далеко в прошлое — агент не запускается.

6. Как избежать дубликатов заказов?

Включите проверку по внешнему коду в настройках узла обмена в 1С (галочка «Искать по внешнему коду» на вкладке «Обмен с сайтом»). При повторной выгрузке 1С будет обновлять существующий заказ, а не создавать дубликат.

7. Нужен ли отдельный разработчик для настройки обмена?

Для типового обмена «1С: Управление торговлей → сайт на Битриксе» - не нужен, настраивается по документации. Но как только появляется "кастомная логика" (особенно в B2B-кабинетах), без разработчика, который понимает обе платформы, не обойтись.

Заключение

Обмен между 1С и сайтом на Битриксе становится проблемой ровно в тот момент, когда проект выходит за рамки типовой конфигурации. Кастомные обработчики, B2B-кабинеты, нестандартная структура каталога — каждый такой элемент требует отдельного тестирования на обоих режимах обмена (ручном и плановом).

Опыт проекта Tera показывает главное: проблема с обменом почти никогда не бывает «одной и той же». Она эволюционирует: сначала - не то правило обмена, потом - обработчик падает, потом - агенты не запускаются.

Настройка обмена — это процесс, а не разовое событие. Проверяйте обмен после каждого изменения на сайте, каждого обновления модуля и каждого нового обработчика. И держите включённой отладку — логи сэкономят вам неделю поисков, когда что-то пойдёт не так.