Обмен заказами с 1С у многих сводится к выгрузке заказов в учётную систему раз в сутки по расписанию, и первый же клиент, который спрашивает «где мой заказ», видит в личном кабинете статус «в обработке», хотя на складе его уже упаковали и отдали в СДЭК три часа назад. Я настраивал такие интеграции и для Tilda-магазинов, и для WooCommerce на T‑Bank-эквайринге, и почти всегда причина расхождения одна: сайт и 1С обмениваются данными о заказе, но не договорились, кто и когда меняет статус.
По теме статьи
Готовое решение
AI-чатбот для сайта на Claude - отвечает как ваш менеджер, работает 24/7
Подключу к вашему сайту чат-бота на Claude API. Бот отвечает на вопросы клиентов голосом вашего бренда, знает каталог и условия доставки, забирает лиды в CRM или Telegram.
от25 000 ₽
AI / Claude API
Искусственный интеллект для бизнеса
AI-чатбот на сайт с базой знаний, автообработка заявок, генерация контента, умный парсинг. Claude API, OpenAI, RAG.
от50 000 ₽
Почему статусы заказа на сайте и в 1С расходятся
Типовая картина: заказ создаётся на сайте, попадает в 1С через выгрузку или вручную менеджером, дальше кладовщик меняет статус внутри 1С на «собран» и «отгружен», а сайт об этом не знает, потому что обмен настроен только в одну сторону, от 1С к сайту, или вообще только для номенклатуры и остатков, а не для статусов заказов. Обратная ситуация тоже частая: клиент оплачивает картой через T‑Bank, вебхук об оплате приходит на сайт, а в 1С заказ висит неоплаченным до следующей выгрузки по расписанию.
Вторая причина, менее очевидная, это отсутствие сквозного идентификатора заказа. Если на сайте заказ №4821, а в 1С ему присвоили внутренний номер СИТ-000482 без явной связи между ними, любая автоматизация статусов превращается в сопоставление по имени клиента и сумме, что регулярно даёт коллизии при повторных заказах в один день.
Как устроен обмен заказами с 1С: CommerceML, HTTP-сервисы и вебхуки
Классический вариант для 1С-Битрикс и похожих CMS - это обмен по стандарту CommerceML: 1С формирует XML-файлы с заказами и статусами, сайт их забирает по расписанию, обычно раз в 10-15 минут через cron. Схема рабочая, но с задержкой, и для магазина с оплатой на сайте эта задержка означает, что клиент десять минут видит неверный статус оплаты.
Более гибкий способ - открыть в 1С собственный HTTP-сервис на встроенном сервере 1С и обмениваться с ним заказами и статусами по REST в реальном времени. Сайт или промежуточный сервер отправляет запрос сразу при смене статуса, а не ждёт следующего цикла обмена. Пример обращения к такому сервису при смене статуса на «отгружен»:
curl -X POST https://1c.example.ru/exchange/hs/orders/status \
-u api_user:api_pass \
-H "Content-Type: application/json" \
-d '{"order_id": "4821", "status_1c": "Отгружен", "date": "2026-08-30T14:20:00"}'
У Tilda в этой схеме особое место. Штатная синхронизация через CommerceML в разделе «Товары» умеет передавать в 1С сами заказы: как только покупатель оформляет заказ на сайте, он автоматически уходит в 1С:Управление торговлей без единой строчки кода. Но справка Тильды описывает только эту передачу, заказ ушёл в 1С, и ничего не говорит про обратный канал: как статус, который кладовщик проставил внутри 1С, должен вернуться на сайт и показаться покупателю в личном кабинете. Такого канала в интерфейсе Тильды нет, поэтому для полноценного маппинга статусов туда и обратно я ставлю прослойку, которая слушает изменения в 1С и обновляет статус на сайте отдельным вебхуком.
| Способ обмена | Скорость обновления статуса | Когда использовать |
|---|---|---|
| CommerceML (XML) | Раз в 10-15 минут по расписанию | 1С-Битрикс, большие каталоги, обмен уже настроен из коробки |
| HTTP-сервис 1С | В реальном времени, по запросу | WooCommerce, кастомные сайты, нужна мгновенная синхронизация оплаты и сборки |
| Прослойка на n8n и вебхуки | От нескольких секунд до минуты | Tilda и другие конструкторы - когда нужен возврат статуса из 1С на сайт, версия 1С вне протестированного Тильдой диапазона или слот CommerceML занят другим сервисом |
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Маппинг статусов: единая модель для сайта и 1С
Сайт и 1С почти никогда не используют одинаковый набор статусов, и попытка синхронизировать их напрямую по названию заканчивается тем, что в 1С заказ «На сборке», а на сайте он всё ещё «Оплачен», потому что такого статуса в справочнике сайта просто нет. Перед настройкой обмена я всегда свожу статусы в одну таблицу и фиксирую, какая система является источником для каждого перехода.
| Статус на сайте | Статус в 1С | Кто инициирует переход |
|---|---|---|
| Новый | Новый | Сайт при оформлении заказа |
| Оплачен | Оплата получена | Вебхук от T‑Bank, статус меняется на сайте и в 1С одновременно |
| В сборке | На сборке | Кладовщик в 1С, сайт подтягивает статус в течение минуты |
| Передан в доставку | Отгружен | 1С создаёт заказ в СДЭК и передаёт трек-номер на сайт |
| Доставлен | Закрыт | Вебхук от СДЭК, 1С обновляется автоматически |
| Отменён | Аннулирован | Любая сторона, вторая обязана принять и не откатывать статус назад |
Последняя строка на практике самая проблемная: если менеджер отменяет заказ в 1С, а сайт продолжает слать клиенту письма про сборку, доверие к магазину падает быстрее, чем от любой другой ошибки в интерфейсе.
Обмен заказами с 1С на Tilda и WooCommerce: разница в подходах
На WooCommerce задача обычно решается через готовые модули обмена по CommerceML или через собственный REST-коннектор к HTTP-сервису 1С, и в этом случае можно завязать смену статуса заказа WooCommerce на хук woocommerce_order_status_changed и отправлять его сразу в 1С, не дожидаясь расписания. Оплату через T‑Bank в такой схеме проще всего заводить отдельным событием: вебхук об успешном платеже сразу меняет статус в WooCommerce, а тот уже триггерит отправку в 1С.
На Tilda штатный обмен заказами с 1С есть, но он рассчитан на конкретный набор условий: модуль «Каталог товаров» подключён, версия 1С попадает в диапазон, который Тильда заявляет протестированным (1С:Управление торговлей 10.3.4 и выше, версии после 11.2 не тестировались), и слот CommerceML не занят МойСкладом, подключить оба сервиса одновременно нельзя. Если все условия сходятся, заказы из Tilda уходят в 1С сами. Если нет, или если нужна как раз обратная синхронизация статуса из 1С на сайт, ставлю серверный скрипт, который слушает вебхук Tilda при создании заказа, приводит поля к формату 1С и дальше работает с HTTP-сервисом 1С, плюс отдельный канал, который читает статус в 1С и обновляет его на сайте.
В обоих случаях, если в цепочку добавляются ещё СДЭК для трек-номеров и эквайринг для статуса оплаты, проще не городить это россыпью разрозненных скриптов, а сразу проектировать одну комплексную интеграцию сайта с 1С, эквайрингом и СДЭК, где у каждого события есть однозначный источник и единый формат передачи статуса.
Автоматизация синхронизации статусов через n8n
Для прослойки между сайтом и 1С я обычно беру n8n, а не пишу отдельный сервис с нуля: вебхук от сайта, от T‑Bank или от СДЭК приходит на входную точку n8n, нода HTTP Request обращается к HTTP-сервису 1С, а результат логируется и при необходимости уходит уведомлением менеджеру. Такой workflow можно собрать за 1-2 дня, если формат данных в 1С уже описан, и он не требует держать отдельный сервер под кастомный код.
Важная деталь, которую часто упускают: если 1С временно недоступна, например идёт регламентное обслуживание базы, вебхук не должен просто теряться. В n8n для этого ставится нода с повторными попытками и очередью, чтобы событие о смене статуса подождало и ушло, как только 1С снова ответит, а не потерялось безвозвратно.
Уведомления о смене статуса удобно заводить не только на почту, но и в Telegram: у меня в паре проектов уведомления менеджеру о новом заказе или об ошибке обмена шлёт aiogram-бот, а не общий чат, потому что так проще фильтровать сообщения по типу события и не пропускать сбои обмена среди обычной переписки. Логи обмена и данные клиентов при этом храню на сервере в РФ, а не во внешних no-code таблицах, это касается персональных данных заказчиков напрямую.
Ошибки, из-за которых обмен заказами с 1С ломается
За несколько внедрений я стабильно вижу одни и те же промахи, которые потом всплывают уже на живых заказах:
- Обмен раз в сутки или по ночному регламенту вместо обмена в реальном времени, из-за чего статус на сайте всегда врёт в течение дня
- Нет сквозного идентификатора заказа, сопоставление идёт по имени и сумме и путается при повторных заказах
- Обмен настроен только в одну сторону, обычно из 1С на сайт, и оплата или отмена с сайта не долетает обратно
- Время сервера сайта и сервера 1С расходится без единого часового пояса, и статусы применяются не в том порядке
- Повторный вебхук от T‑Bank или СДЭК обрабатывается как новое событие, и статус заказа откатывается назад
- Частичные отмены и возвраты вообще не описаны в маппинге статусов и обрабатываются вручную
Последний пункт закрывает идемпотентность: каждое входящее событие должно проверяться по идентификатору и не применяться повторно, иначе через пару месяцев эксплуатации статусы начнут скакать сами по себе без видимой причины.
Частые вопросы
Сколько занимает настройка обмена заказами с 1С для интернет-магазина?
Если 1С уже настроена и есть доступ к базе, прослойка на n8n с обменом статусами через HTTP-сервис собирается за 3-5 рабочих дней. Если нужно ещё подключать СДЭК, эквайринг и продумывать полный маппинг статусов с нуля, срок растягивается до 2-3 недель.
Можно ли синхронизировать статусы в реальном времени, а не по расписанию?
Можно, если отказаться от классического CommerceML-обмена по cron в пользу HTTP-сервиса 1С и вебхуков с сайта. Тогда статус меняется за секунды, а не ждёт следующего цикла выгрузки.
Что делать, если 1С временно недоступна?
Входящие события не должны теряться. В n8n или любом другом обработчике ставится очередь с повторными попытками, событие ждёт восстановления связи и применяется, как только 1С снова отвечает, без ручного восстановления пропущенных заказов.
Нужно ли менять типовую конфигурацию 1С для обмена?
Обычно нет, если конфигурация не сильно кастомизирована: достаточно открыть HTTP-сервис или настроить типовой узел CommerceML. Изменения в саму конфигурацию нужны, только если справочник статусов в 1С сильно отличается от того, что должно отображаться на сайте.