Задача обычно звучит просто: чтобы остатки, цены и заказы синхронизировались между 1С и сайтом без ручной выгрузки в Excel раз в день. На практике интеграция 1С с сайтом почти никогда не упирается в само подключение, оно настраивается за один-два дня. Проблемы начинаются позже: дубли заказов, разъехавшиеся остатки, зависший обмен после обновления конфигурации. Ниже я собрал способы обмена, которые реально используются, из чего складывается цена и срок, и на каких местах обмен чаще всего ломается на моих проектах.
Способы обмена: что реально используют
Вариантов на практике не так много, и выбор почти всегда диктует платформа сайта, а не желания заказчика.
- CommerceML - штатный протокол обмена от 1С, XML поверх HTTP или файлового доступа. Встроен в 1С:Управление торговлей, 1С:Комплексная автоматизация, поддерживается модулями Битрикс и нативно в Tilda.
- REST API - когда обмен не укладывается в типовую схему: сайт сам дёргает http-сервис 1С за конкретными данными, либо 1С стучится в API сайта при изменении заказа.
- Готовые модули платформы - у Tilda и Битрикс обмен CommerceML встроен в интерфейс, у WooCommerce и самописных магазинов протокола из коробки нет, его эмулируют сторонние плагины или собственный обработчик.
- Промежуточный слой - когда сайт не на Bitrix и не на Tilda и типового модуля нет, обмен часто собирают через вебхуки и очередь, например в n8n: 1С кладёт файл или дёргает вебхук, n8n раскладывает данные по нужным сущностям на сайте.
Как устроен обмен по CommerceML
Схема одна и та же независимо от платформы. 1С выгружает файл import.xml со структурой каталога и offers.xml с ценами и остатками по расписанию через настроенный узел обмена. Сайт забирает эти файлы по HTTP или FTP и раскладывает по своей базе. Заказы идут в обратную сторону: сайт формирует XML заказа в том же формате, а 1С подхватывает его при следующем сеансе обмена.
В Tilda обмен CommerceML встроен прямо в настройки магазина: указываешь адрес узла обмена, логин и пароль, и синхронизация товаров, цен, остатков и заказов идёт из интерфейса без дополнительных скриптов и кода в head. Это штатная функция платформы, а не доработка, и я её просто настраиваю под конкретную 1С.
Ограничение у CommerceML одно и оно принципиальное: обмен пакетный, не в реальном времени. Между продажей на сайте и обновлением остатка в 1С проходит время сеанса обмена, обычно от нескольких минут до часа в зависимости от расписания. Если бизнесу критично, чтобы остаток менялся за секунды после продажи, поверх CommerceML добавляют отдельный слой с вебхуками и более частым интервалом синхронизации, это уже отдельная задача сверх типового обмена.
На практике был проект на WooCommerce с эквайрингом Т‑Банка и доставкой через СДЭК, где обмен с 1С собирали через плагин обмена CommerceML для WordPress и точечную доработку: 1С выгружала остатки каждые 15 минут, а заказы уходили обратно через отдельный REST-обработчик, потому что стандартный цикл обмена не поспевал за нагрузкой во время акций.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Интеграция 1С с Битрикс и Битрикс24: что изменилось в REST API
Если на стороне сайта коробочный 1С-Битрикс, лицензия оплачивается отдельно от работ по интеграции. На момент проверки цены редакций были такими:
| Редакция | Цена лицензии |
|---|---|
| Старт | 7 100 ₽ |
| Стандарт | 20 500 ₽ |
| Малый бизнес | 47 000 ₽ |
| Бизнес | 96 500 ₽ |
Цены на лицензии меняются, перед закупкой их стоит сверить на актуальной странице продукта.
Если интеграция идёт с Битрикс24, а не с коробочным Битрикс, важный нюанс: тарифы Битрикс24 считаются за всю компанию целиком, а не за одного пользователя, это стоит учитывать при выборе тарифа под нагрузку интеграции, а не только под число сотрудников.
Отдельно - про REST API. Часть методов, которые до сих пор кочуют по старым примерам в интернете, помечены устаревшими: crm.lead.add, crm.deal.add, crm.contact.add, crm.deal.productrows.set и crm.dealcategory.stage.list. Актуальная замена - метод crm.item.add и семейство crm.item.* с параметром entityTypeId, где лид это 1, сделка 2, контакт 3, компания 4. Поля передаются в camelCase, а телефон и почта идут через мультиполе fm, а не отдельным массивом PHONE, как в старых методах. Если интеграция писалась несколько лет назад на lead.add или deal.add, рано или поздно её придётся переписывать под item.add.
Пример создания сделки из заказа на сайте через актуальный метод:
curl -X POST https://yourcompany.bitrix24.ru/rest/1/webhook_code/crm.item.add \
-H "Content-Type: application/json" \
-d '{"entityTypeId":2,"fields":{"title":"Заказ с сайта №1245","stageId":"NEW","fm":{"PHONE":[{"VALUE":"+79990001122","VALUE_TYPE":"WORK"}]}}}'
ентityTypeId 2 здесь означает сделку, stageId задаёт стадию воронки, а телефон клиента передаётся через fm, как и требует актуальная версия API.
Из чего складывается цена и что влияет на срок
Цена интеграции зависит не от того, «1С это или сайт», а от конкретных параметров задачи:
- есть ли у платформы сайта штатный модуль обмена (Tilda, Битрикс) или обмен собирается с нуля (WooCommerce, самописный магазин на Laravel или Next.js);
- нужен ли двусторонний обмен (заказы обратно в 1С) или достаточно одностороннего (только каталог и остатки);
- сколько нестандартных справочников в 1С - типы цен, характеристики, несколько складов с резервами;
- сколько итераций тестовой сверки нужно провести на реальных данных, а не на демо-каталоге из десяти позиций.
По моему прайсу: простая доработка обмена для Tilda (например, донастройка полей или маппинга) стоит от 3 000 ₽, комплексная интеграция с CRM, эквайрингом и СДЭК на Tilda - от 40 000 ₽. Если нужен интернет-магазин с обменом 1С, заложенным изначально в архитектуру, я считаю его от 80 000 ₽ за проект под ключ. Когда сайт не на Bitrix и не на Tilda и нужен промежуточный слой на вебхуках, такую автоматизацию в n8n я оцениваю от 25 000 ₽. Разовую консультацию по конкретной схеме обмена, без работ, можно взять от 3 000 ₽.
На срок сильнее всего влияет доступность программиста 1С на стороне заказчика: настройка узла обмена и, если нужно, доработка типовой конфигурации - его зона ответственности, а не моя. Если доступа к тестовой базе 1С нет в первый день работ, срок сдвигается ровно на столько, сколько его согласовывают внутри компании заказчика. Второй фактор - объём каталога: выгрузка на 50 тысяч позиций требует другого расписания и других таймаутов, чем каталог на 500 товаров, и это проверяется только на реальных данных, а не на тестовой выборке.
Что ломается чаще всего: типовые сбои
За несколько лет таких проектов список повторяющихся причин сбоя обмена почти не меняется.
- Дубли заказов. Обмен повторно выгружает один и тот же заказ, потому что на стороне 1С не помечен признак «выгружен», и при следующем сеансе заказ уходит снова.
- Битые спецсимволы. Название товара с амперсандом, кавычками или переносом строки ломает XML-файл целиком, и обмен останавливается не на одном товаре, а на всём каталоге.
- Расхождение остатков. В 1С несколько складов и резервы под неотгруженные заказы, а выгрузка настроена по одному складу без учёта резерва - на сайте показывается остаток, которого фактически нет в наличии.
- Тихая поломка после изменений в 1С. Добавили новый тип цены или характеристику номенклатуры - структура выгрузки поменялась, а сайт продолжает её читать по старой схеме и просто перестаёт получать данные без явной ошибки.
- Таймаут на большом каталоге. Файл обмена не успевает сформироваться или выгрузиться за один сеанс, обмен обрывается на середине и оставляет каталог в промежуточном состоянии.
- Устаревшие методы Битрикс24. Интеграция, написанная несколько лет назад на crm.lead.add или crm.deal.add, в какой-то момент перестаёт создавать сделки без объяснимой на первый взгляд причины - метод просто вывели из употребления.
Что подготовить перед стартом и что входит в работу
От заказчика нужно немного, но без этого срок стартовать не может: доступ к тестовой базе 1С (не к рабочей, чтобы не рисковать реальными данными на этапе отладки), контакт программиста 1С, который настраивает узел обмена со своей стороны, доступ к админке или хостингу сайта, и несколько тестовых заказов для проверки обратного потока.
В мою работу по интеграции входит: настройка модуля или обработчика обмена на стороне сайта, маппинг полей под структуру конкретной 1С, тестовый прогон каталога и заказов на реальных данных, обработка ошибок обмена с логированием и краткая документация по итоговой схеме. Не входит: доработка самой конфигурации 1С (это отдельная роль программиста 1С), лицензии на 1С и модули Битрикс, оплата тарифов Битрикс24 или комиссий платёжной системы - это расходы заказчика напрямую поставщикам.
Если речь про Tilda и нужна не просто настройка штатного обмена, а связка с CRM, эквайрингом и доставкой одновременно, такую комплексную интеграцию 1С с Tilda я обычно веду как отдельный проект с собственным техзаданием, а не как правку одного поля в настройках.
1С регулярно обновляется, поэтому перед внедрением я сверяюсь с актуальной документацией.
Частые вопросы
Сколько стоит интеграция 1С с сайтом?
Зависит от платформы и глубины обмена. У меня простая доработка обмена для Tilda стоит от 3 000 ₽, комплексная интеграция с CRM, эквайрингом и СДЭК на Tilda - от 40 000 ₽, а гейтвей на n8n для сайта без штатного модуля обмена - от 25 000 ₽. На рынке у студий и фрилансеров цены на похожие задачи заметно расходятся, поэтому сравнивать стоит конкретное техзадание, а не общую вилку.
Можно ли синхронизировать 1С с сайтом в реальном времени?
Штатный обмен по CommerceML пакетный: 1С формирует файл выгрузки по расписанию, сайт его забирает, интервал между сеансами обычно от нескольких минут до часа. Для обновления остатка за секунды после продажи поверх CommerceML добавляют отдельный слой с вебхуками и более частой синхронизацией, это дополнительная доработка сверх типовой схемы.
Что делать, если обмен с 1С перестал работать после обновления?
Первым делом смотрю логи обмена на стороне сайта и структуру последнего успешного файла выгрузки - чаще всего дело в изменившемся справочнике номенклатуры или в устаревшем методе API, если обмен завязан на REST. Для Битрикс24 отдельно проверяю, не используется ли в интеграции один из методов вроде crm.lead.add или crm.deal.add вместо актуального crm.item.add.
Подходит ли CommerceML для сайта не на Tilda и не на Битрикс?
Протокол сам по себе платформонезависимый, вопрос в поддержке со стороны сайта. У WooCommerce нет CommerceML из коробки, но есть плагины, которые эмулируют этот протокол, плюс собственный REST API WooCommerce для точечных доработок. Для самописных магазинов на Laravel или Next.js обмен обычно собирают с нуля под конкретную структуру каталога.