WordPress · 8 мин чтения

CommerceML и Тильда: можно ли связать 1С с магазином на Tilda

Ко мне регулярно приходят с одним и тем же вопросом: в 1С уже настроен обмен CommerceML с интернет-магазином, а сайт хотят собрать или уже собрали на Тильде, и непонятно, заведётся ли старая связка на новой платформе. Отвечаю сразу: штатный обмен по CommerceML у Тильды есть, справка платформы прямо описывает выгрузку товаров из 1С:Управление торговлей и передачу заказов обратно в 1С. Другое дело, что у этого обмена свои ограничения по версии конфигурации и по числу подключённых сервисов, и там, где они не проходят, связку приходится собирать руками. Дальше разбираю оба варианта и показываю, как я это делаю на практике.

Что такое CommerceML и откуда он взялся

CommerceML - формат обмена данными между 1С и интернет-магазином. Первую редакцию стандарта выпустили в 2000 году специалисты «1С» и «Extra.RU» при поддержке технических специалистов представительства Microsoft в России, сейчас опубликованы первая и вторая редакции, а также отдельный стандарт CommerceML EDI. Стандарт описывает структуру XML-файлов: import.xml с карточками товаров, offers.xml с ценами и остатками, а также orders.xml для обратной передачи заказов на сторону 1С. Обмен идёт по HTTP: сайт публикует специальный обработчик, обычно файл вроде 1c_exchange.php, а 1С Управление торговлей или Комплексная автоматизация обращается к нему в режимах checkauth, init, file, import и query, поочерёдно скачивая и заливая файлы.

Готовый модуль обмена «из коробки» есть у Битрикса, у части плагинов для OpenCart, InSales, Diafan и ещё десятка CMS с открытым кодом: там можно положить на сервер свой php-обработчик и дать 1С достучаться до файловой системы сайта. У облачных платформ такой обработчик реализует сама площадка на своей стороне, и Тильда как раз из этой категории.

Поддерживает ли Тильда CommerceML напрямую

Да, поддерживает. В справке Тильды это написано прямым текстом: «В интернет-магазин на Тильде можно выгружать товары из системы 1С: Управление торговлей, а из интернет-магазина можно передавать заказы в систему 1С». Обработчик обмена площадка держит у себя, свой php-скрипт заливать никуда не нужно, подключение делается в настройках магазина.

Ограничений при этом два, и оба всплывают уже после того, как клиент пообещал коммерческому директору «обмен как на Битриксе». Первое - версия конфигурации: «Обмен данными можно настроить с 1С: Управление торговлей версии 10.3.4 и выше», причём «версии после 11.2 не тестировались и могут содержать изменения, которые потребуют доработки интеграции на стороне системы 1С». Второе - один канал на всех: «На данный момент можно подключить только один сервис по протоколу CommerceML: либо систему «МойСклад», либо систему 1С. Одновременно оба сервиса использовать не получится». Если склад у клиента уже висит на МойСкладе, штатный слот занят и 1С в него не встанет.

Помимо CommerceML товары попадают в магазин ручным вводом в панели, импортом CSV или XLS-файла и загрузкой фида в формате YML, том же, что используют для Яндекс.Маркета или Google Merchant. Отдельно стоит Tilda API на api.tildacdn.info: он доступен только на тарифе Business, ограничен лимитом «150 запросов в час» и работает исключительно на чтение, семь GET-методов отдают список проектов, список страниц и html-код страницы. Записать через него товар, цену или остаток нельзя, и это первое заблуждение, которое приходится разбирать на созвоне.

Как я связываю 1С и Tilda на практике

Если штатный обмен проходит по версии УТ и слот CommerceML свободен, я настраиваю именно его: это дешевле любой разработки. Кастомная схема нужна в остальных случаях - слот занят МойСкладом, конфигурация не УТ, требуется логика сверх простой выгрузки. Тогда между 1С и Tilda ставится промежуточный слой, скрипт или сценарий, который забирает данные с одной стороны и кладёт их в понятном формате на другую. На практике использую три схемы в зависимости от размера каталога и бюджета клиента.

Разовая выгрузка каталога

Подходит для каталога до 200-300 позиций, которые обновляются нечасто. Из 1С выгружается CommerceML-файл, import.xml плюс offers.xml, дальше небольшой скрипт на Python конвертирует его в CSV или YML под требования Tilda, и готовый файл загружается в панели интернет-магазина руками. Без автоматизации, зато дёшево и не требует постоянного доступа к серверу 1С.

Автоматическая синхронизация по расписанию

Для каталогов побольше, где остатки меняются каждый день, основной вариант - всё тот же штатный обмен по CommerceML: сеансы инициирует сама 1С регламентным заданием, внешний код не нужен. Когда штатный канал закрыт, ставлю сценарий в n8n: HTTP-нода стучится в обработчик обмена 1С с Basic-авторизацией, забирает актуальные offers.xml, парсит их и сопоставляет товары по артикулу. Дальше у сценария два выхода. Если слот CommerceML свободен, а закрыт только штатный путь на стороне 1С, нетиповая конфигурация или облако без узла обмена, сценарий сам собирает import.xml и offers.xml и отдаёт их в приёмник Тильды по тому же протоколу обмена 1С: checkauth, init, file, import, с контентом файла в теле запроса. Если слот занят МойСкладом, записать данные в магазин извне нечем: сценарий готовит файл в формате импорта, а сама загрузка остаётся ручным шагом, и тогда честный ответ один: либо освобождать слот CommerceML под 1С, либо переносить витрину на платформу, где каталог правится программно.

Пример обращения к обработчику обмена 1С в упрощённом виде:

curl -u exchange_user:exchange_pass 
  "https://shop.example.ru/1c_exchange.php?type=catalog&mode=init"

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

Двусторонний обмен с заказами

Самая сложная схема - когда заказы с Tilda должны попадать обратно в 1С, а не только каталог идти вперёд. При штатном подключении это часть того же обмена: заказы из магазина уходят в 1С по CommerceML без единой строки кода. Кастом нужен, если штатный слот занят другим сервисом или заказ надо разложить сложнее, чем умеет типовая выгрузка. Тогда Tilda отправляет уведомление о заказе через вебхук, я ловлю его в n8n, формирую документ и кладу его в 1С через HTTP-сервис на базе OData либо сначала передаю в CRM, откуда 1С уже забирает заказы привычным для бухгалтерии способом. Тем же вебхуком обычно закрываю уведомление менеджеру в Telegram через aiogram-бота, чтобы не сверять почту вручную по десять раз в день.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Синхронизация остатков и цен без ручной сверки

Ключевой момент - сопоставление товаров по артикулу, а не по названию: названия в 1С и в карточках Tilda почти всегда расходятся из-за ручного редактирования текстов под сайт. Для товаров с вариантами, размер, цвет, объём, использую механизм «Лотов» в Tilda-магазине, а в 1С такие позиции обычно приходят как отдельные предложения в offers.xml с общим родительским товаром.

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

Ещё нюанс, который часто упускают: сама 1С нередко стоит в закрытом контуре без прямого выхода в интернет, и тогда обмену нужен промежуточный сервер с доступом в обе сети, VPN до 1С и белый IP наружу в сторону Тильды. Без этого не запустится ни штатный обмен, ни кастомный сценарий, сколько бы ни было готово кода.

Заказы, доставка и оплата: что реально стыкуется с 1С

Оплата на Tilda чаще всего идёт через T‑Bank эквайринг, встроенный в чекаут магазина, и 1С по умолчанию ничего не знает о статусе оплаты, кроме того, что прилетает вместе с заказом. Если нужно видеть в 1С именно оплаченные заказы, а не все подряд, добавляю обработку статуса из вебхука Tilda или T‑Bank отдельным шагом перед созданием документа.

Расчёт стоимости и сроков доставки через СДЭК на этапе оформления заказа не завязан на CommerceML вообще: его делает встроенный калькулятор СДЭК Тильды по адресу из корзины, а кастомный скрипт нужен только для сценариев сверх этого, например несколько складов отправки или свои правила поверх штатного тарифа. Отдельная задача - ограничить доставку своим курьером по зонам на карте: для неё у меня в библиотеке есть готовый виджет зон доставки для Tilda, который сверяет адрес с полигонами и не даёт оформить заказ вне покрытия, без разработки с нуля.

Сколько стоит связать 1С и Tilda и сколько это займёт

Цена и сроки зависят от того, нужен ли обмен в одну сторону или в обе, и как часто должны обновляться остатки.

Сценарий Что настраивается Срок Цена
Разовая выгрузка каталога Экспорт CommerceML из 1С, конвертация в CSV или YML, ручная загрузка в Tilda 3-5 дней от 3 000 рублей
Автоматическая синхронизация каталога и остатков Настройка штатного обмена по CommerceML, а где слот занят - сценарий в n8n, который забирает данные из 1С по расписанию и готовит файл под импорт 1-2 недели от 25 000 рублей
Двусторонний обмен с заказами и доставкой Приём заказов из Tilda, передача в 1С или CRM, статус оплаты, интеграция с СДЭК 2-3 недели от 40 000 рублей

Если на проекте уже есть отдельные куски, например, каталог выгружается, а заказы ещё нет, беру доработку отдельным кастомным скриптом для Tilda без пересборки всей схемы с нуля.

Частые вопросы

Можно ли выгрузить каталог из 1С в Тильду вообще без программиста

Да, если конфигурация подходит: штатное подключение 1С:Управление торговлей по CommerceML настраивается в кабинете Тильды без разработчика. Не подходит версия или слот CommerceML занят МойСкладом - остаётся разовая выгрузка руками: 1С формирует CommerceML-файлы, дальше их нужно привести к CSV или YML любым конвертером и загрузить через штатный импорт Tilda.

Работает ли обмен CommerceML с Тильдой в реальном времени

Нет, и дело не в Тильде, а в природе самого протокола. CommerceML сеансовый: инициатором обмена всегда выступает 1С, которая запускает сеанс по регламентному заданию. То, что выглядит как «реальное время», на практике - это частое расписание, раз в 15-30 минут, а не мгновенная передача каждой продажи.

Что делать, если в 1С другая конфигурация, например Управление торговлей 11, а не 10.3

Тильда пишет инструкцию на примере УТ 11, заявляет обмен с версии 10.3.4 и выше и отдельно предупреждает, что версии после 11.2 не тестировались и могут потребовать доработки на стороне 1С. То есть УТ 11 до 11.2 внутри протестированного диапазона, а более новые релизы надо проверять на реальной базе. Структура CommerceML между версиями УТ, Бухгалтерии и Комплексной автоматизации отличается в деталях: составе полей, характеристиках, ставках НДС. Перед разработкой моста всегда сначала смотрю реальную выгрузку с конкретной базы клиента, а не пишу код по общей спецификации протокола.

Как заказы из Tilda попадают обратно в 1С

При штатном подключении - прямо по CommerceML: справка Тильды описывает передачу заказов из интернет-магазина в 1С как часть того же обмена. Если штатный слот занят другим сервисом или заказ надо обогатить до попадания в базу, работает вебхук Tilda: его ловит внешний сценарий, обычно в n8n, и дальше формирует документ в 1С через HTTP-сервис или передаёт заказ в CRM, откуда 1С забирает его штатными средствами.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно