Настройка обмена с 1С с сайтом - одна из тех задач, которая ко мне прилетает регулярно от компаний, торгующих одновременно оптом через менеджеров и в розницу через сайт. 1С ведёт склад, цены и заказы, сайт отдаёт витрину клиентам, и если эти две системы работают порознь, кто-то из сотрудников каждый день вручную переносит остатки в CMS, путается в ценах и теряет заказы, которые не успел перепечатать. Ниже разберу по шагам, как выстроить обмен так, чтобы каталог, остатки, цены и заказы синхронизировались между 1С и сайтом без ручной работы.
По теме статьи
Готовое решение
AI-чатбот для сайта на Claude - отвечает как ваш менеджер, работает 24/7
Подключу к вашему сайту чат-бота на Claude API. Бот отвечает на вопросы клиентов голосом вашего бренда, знает каталог и условия доставки, забирает лиды в CRM или Telegram.
от25 000 ₽
AI / Claude API
Искусственный интеллект для бизнеса
AI-чатбот на сайт с базой знаний, автообработка заявок, генерация контента, умный парсинг. Claude API, OpenAI, RAG.
от50 000 ₽
Какие способы обмена сайта с 1С существуют
1С поддерживает три рабочих сценария обмена с сайтом, выбор зависит от платформы, на которой сделан сайт, и от объёма каталога.
- Файловый обмен по стандарту CommerceML 2. Версий 2.1 и 3.1 у стандарта нет: опубликованы первая и вторая редакции плюс отдельный CommerceML EDI, а действующая версия схемы второй редакции - 2.10. Это то, что 1С понимает из коробки через встроенную обработку «Обмен данными с сайтом». Для 1С-Битрикс это работает без доработок: платформа сама принимает файлы import.xml и offers.xml по адресу /bitrix/admin/1c_exchange.php.
- HTTP-сервисы или OData, опубликованные в самой 1С. Такой способ удобен, когда обмен нужен в реальном времени, а не раз в 15-30 минут: сайт обращается к конкретному методу сервиса и сразу получает остаток по нужной позиции или создаёт заказ.
- Обмен через промежуточный слой, когда между 1С и сайтом ставлю n8n или собственный скрипт-прослойку. Это основной вариант для самописных сайтов и WooCommerce, у которых нет встроенного модуля обмена с 1С.
| Способ обмена | Где работает без доработок | Что придётся дописывать |
|---|---|---|
| CommerceML (файлы) | 1С-Битрикс, Tilda через штатное подключение УТ | Для остальных CMS - приёмник файлов на сайте |
| HTTP-сервис или OData | Любая 1С, где опубликован сервис | Обработчик запросов на стороне сайта |
| Через n8n или скрипт-прослойку | Любая CMS | Сценарий обмена и логика сопоставления полей |
Пошаговая настройка выгрузки каталога из 1С на сайт
Порядок один и тот же независимо от платформы, различаются только детали второго шага.
- Включаю обмен в 1С: раздел «Администрирование» - «Обмен данными с сайтом» в 1С:Управление торговлей и 1С:Комплексной автоматизации, либо публикую HTTP-сервис, если нужен режим реального времени.
- Указываю узел обмена - адрес, куда 1С будет складывать файлы или куда сайт будет обращаться за данными. Для Битрикс это папка обмена на сервере сайта, для остальных платформ - урл моего скрипта-приёмника.
- Настраиваю фильтры выгрузки: какие номенклатурные группы идут на сайт, с какого склада брать остатки, какой тип цен использовать. Обычно завожу в 1С отдельный тип цены «Сайт», чтобы розничная цена на витрине не путалась с оптовой.
- Настраиваю расписание: регламентное задание внутри 1С или внешний триггер по cron через n8n. Для остатков и цен ставлю интервал 15-30 минут, для полного каталога с описаниями и фотографиями - раз в сутки, ночью, чтобы не грузить сервер в рабочее время.
- Прогоняю первую выгрузку на тестовой копии сайта и сверяю количество позиций и цены с 1С вручную по десятку случайных товаров.
- Включаю обмен на боевом сайте и слежу за логами первых двух-трёх сеансов, прежде чем оставить всё на автомате.
Особенности для Tilda
У Tilda есть штатный обмен по CommerceML: справка платформы описывает выгрузку товаров из 1С:Управление торговлей в магазин и передачу заказов из магазина обратно в 1С. Работает он с УТ версии 10.3.4 и выше, версии после 11.2 в Тильде не тестировали, и подключить можно только один сервис по протоколу CommerceML, либо МойСклад, либо 1С, одновременно оба не получится. Поэтому первым делом смотрю, свободен ли слот и проходит ли конфигурация по версии: если да, обмен настраивается штатно и разработка не нужна.
Когда штатный путь закрыт, честных вариантов ровно четыре. Первый - свой скрипт или n8n на стороне 1С: прослойка собирает import.xml и offers.xml и отдаёт их в тот же приёмник CommerceML Тильды по стандартному протоколу обмена 1С (checkauth, init, file, import), это спасает, когда конфигурация не УТ или 1С в облаке без узла обмена, но не когда слот занят МойСкладом. Второй - выгрузка через файл: прослойка на Python или PHP забирает offers.xml с 1С по HTTP-сервису или FTP и готовит файл в формате импорта Тильды, дальше он загружается в панели магазина. Третий - держать актуальный каталог на своей стороне и подтягивать его в витрину скриптом на странице. Четвёртый - переносить магазин на платформу, где каталог правится программно, например на WooCommerce с его REST API. Чего сделать нельзя ни при каком бюджете, так это обновлять товары, цены и остатки через Tilda API: он доступен на тарифе Business, ограничен лимитом 150 запросов в час и работает только на чтение, отдавая список проектов, список страниц и html-код страницы.
Особенности для WordPress и WooCommerce
На WooCommerce обмен строю через встроенный REST API магазина: товары, цены и остатки обновляю запросами к /wp-json/wc/v3/products. Инициировать обновление можно двумя способами: регламентным заданием 1С, которое дергает вебхук на сайте, или сценарием в n8n, который раз в 15 минут забирает данные из HTTP-сервиса 1С и раскладывает их по WooCommerce через API.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Синхронизация остатков и цен между 1С и сайтом
Остатки и цены обновляются чаще всего, поэтому именно тут проявляются нестыковки. Если 1С временно недоступна - обновление конфигурации, ремонт сервера - сайт не должен обнулять остатки по всем позициям. Для этого в скрипте приёма ставлю проверку: если сеанс обмена не удался, витрина сохраняет последние полученные данные, а не показывает «нет в наличии» по всему каталогу.Цена на сайте не всегда равна цене в 1С один в один. Например, в проектах с оплатой через T‑Bank для WooCommerce комиссия эквайринга иногда закладывается в цену на сайте отдельной наценкой, а в 1С хранится чистая цена без учёта комиссии. Это нужно явно прописать в правилах преобразования при выгрузке, а не оставлять на совести менеджера, который вручную корректирует цены раз в месяц.Отдельно слежу за передачей веса и габаритов номенклатуры. Если на сайте подключён расчёт доставки СДЭК, а в 1С у товара не заполнены вес и объём, виджет считает доставку по дефолтным значениям и может занизить или завысить стоимость для покупателя. Это один из частых источников жалоб на «неправильную доставку», которые на самом деле не про СДЭК, а про пустые поля в карточке номенклатуры.
Обмен заказами: как заказ с сайта попадает в 1С и возвращается статус
Заказ, оформленный на сайте, сначала попадает в очередь - это может быть файл в формате CommerceML, запись в промежуточной таблице или вебхук, который сайт отправляет на приёмник. При следующем сеансе обмена 1С забирает новые заказы, создаёт документ, присваивает внутренний номер и статус, а сайт при следующем сеансе получает этот номер и статус обратно, чтобы показать покупателю в личном кабинете.Разрыв между оформлением заказа на сайте и его появлением в 1С обычно равен интервалу обмена, то есть 15-30 минут. Чтобы менеджер не терял время на ожидание, рядом с обменом часто ставлю телеграм-бота на aiogram, который уведомляет о новом заказе сразу после его создания на сайте, не дожидаясь очередного сеанса обмена с 1С.
curl -X POST https://n8n.example.ru/webhook/new-order \
-H "Content-Type: application/json" \
-d '{"order_id": 1042, "customer": "Иванов И.И.", "sum": 4500, "items": [{"sku": "A-100", "qty": 2}]}'
Типичные ошибки при настройке обмена с 1С
Большинство сбоев обмена повторяются от проекта к проекту, и почти все разрешимы за пару минут, если знать, куда смотреть.
- Кодировка Windows-1251 в выгрузке 1С против UTF‑8 на сайте - названия товаров и характеристики приходят с кракозябрами.
- Лимит upload_max_filesize или post_max_size на хостинге сайта меньше размера offers.xml с картинками - обмен обрывается на середине файла.
- Ручной запуск обмена одновременно с запуском по расписанию - заказы или остатки дублируются.
- В 1С поменяли тип цены для сайта, а фильтр выгрузки не обновили - цены на витрине «зависают» на старых значениях.
- Нет логирования ответов сайта на стороне 1С - при сбое непонятно, кто виноват: 1С не достучалась до сайта или сайт вернул ошибку.
Сколько стоит настройка обмена сайта с 1С
Цена зависит от платформы сайта и от того, что именно синхронизируется: только каталог, каталог с остатками или полный цикл с обменом заказами и статусами в обе стороны.
| Задача | Что входит | Цена |
|---|---|---|
| Выгрузка каталога из 1С на Tilda через прослойку | приём CommerceML, разбор, подготовка файла под штатный импорт магазина | от 40 000 ₽ |
| Автоматизация синхронизации остатков и цен по расписанию | сценарий в n8n, обработка ошибок обмена, логирование | от 25 000 ₽ |
| Интернет-магазин с обменом заказами под ключ | каталог, остатки, заказы и статусы в обе стороны, интеграция с СДЭК и эквайрингом | от 80 000 ₽ |
| Сопровождение обмена после запуска | мониторинг сбоев, донастройка при изменениях в 1С | от 15 000 ₽/мес |
Если задача шире, чем разовая выгрузка, обычно оформляю её как комплексную интеграцию сайта с 1С - туда входит и настройка обмена, и доработка сайта под формат данных из 1С, и тестирование на реальных заказах перед запуском.
Частые вопросы
Можно ли настроить обмен с 1С на Tilda без программиста?
Да, если подходит конфигурация: у Тильды есть штатное подключение 1С:Управление торговлей по CommerceML, оно настраивается в кабинете без разработчика. Условий два - версия УТ 10.3.4 и выше и свободный слот CommerceML, который может быть занят МойСкладом. Если условия не выполняются, обмен собирается через скрипт-прослойку, которая забирает данные из 1С и готовит файл под штатный импорт, потому что писать в магазин через Tilda API нельзя.
Как часто должны обновляться остатки на сайте?
Для большинства магазинов хватает интервала 15-30 минут - это баланс между актуальностью данных и нагрузкой на сервер 1С. Для узкого ассортимента с быстрым оборотом, например штучный товар в наличии 1-2 штуки, интервал имеет смысл сократить до 5-10 минут или перейти на HTTP-сервис с обменом в реальном времени.
Что делать, если 1С стоит в облаке, а не на локальном сервере?
Разницы почти нет: важно, чтобы сервер сайта и облачная 1С могли достучаться друг до друга по HTTP или FTP и чтобы у узла обмена был статический адрес или доменное имя. Если провайдер закрывает прямой доступ, обмен веду через HTTP-сервис, опубликованный самим провайдером облака.
Нужно ли хранить данные заказов и клиентов где-то кроме 1С?
Отдельное хранилище вроде Google Sheets или Airtable для контактов клиентов не использую - персональные данные покупателей должны оставаться на серверах в России, как того требует 152-ФЗ. Если нужна витрина заказов для менеджеров вне 1С, разворачиваю её на своём сервере, а не в зарубежном облачном сервисе.