Интеграция 1С и Tilda: товары, остатки и заказы без ручного ввода

· 11 мин

Содержание

Готового модуля «1С ↔ Тильда» в типовых конфигурациях нет: штатный Обмен с сайтом в 1С рассчитан на формат CommerceML и движки вроде 1С-Битрикс, а Tilda так не работает . Подключить 1С к Тильде можно тремя путями: товары и цены выгружать из 1С в CSV и загружать в каталог Tilda, а заказы принимать в 1С через webhook Tilda и HTTP-сервис. Третий путь — промежуточный коннектор, который сам говорит с обеими сторонами.

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

Способы интеграции 1С с Тильдой: что выбрать

Выбор зависит от двух вещей: где стоит база 1С и сколько заказов в день.

СпособЧто синхронизируетКогда подходитСлабое место
CSV вручнуюТовары, цены, остатки → TildaДо 300–500 позиций, остатки меняются редкоЧеловек должен не забыть загрузить файл
Webhook Tilda → HTTP-сервис 1СЗаказы → 1СБаза опубликована и доступна из интернетаНужен программист 1С и веб-сервер
Webhook → свой скрипт на хостинге → 1С забираетЗаказы → 1СБаза стоит в офисе без белого IPЕщё один компонент, который надо поддерживать
Готовый коннектор или CRM-посредникТовары и заказы в обе стороныНет своего программиста, бюджет на подписку естьЕжемесячная плата и зависимость от сервиса

Чаще всего работает связка первых двух: каталог раз в день грузится файлом, заказы идут в 1С сразу. Это снимает основную ручную работу без покупки модулей.

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

Подготовка 1С и сайта на Tilda перед интеграцией

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

В 1С:

  • 🔑 Артикулы. У каждой позиции, которая продаётся на сайте, должен быть уникальный артикул. По нему товар Tilda будет сопоставляться с номенклатурой. Дубли артикулов — главный источник «чужих» товаров в заказе.
  • 💰 Вид цены для сайта. Заведите отдельный вид цены, например «Интернет-магазин». В УТ 11 это Виды цен, в БП 3.0 — Типы цен номенклатуры. Так розничная цена в магазине не будет случайно уезжать на сайт.
  • 🏬 Склад для сайта. Решите, с какого склада брать остаток. Если склад один — просто зафиксируйте его.
  • 👤 Покупатель по умолчанию. Для розничных заказов удобно завести контрагента «Покупатели сайта», а имя и телефон клиента писать в комментарий заказа. Создавать отдельного контрагента на каждый заказ имеет смысл, только если вы ведёте по ним историю.

В Tilda:

  • 📦 Товары должны жить в каталоге товаров Tilda, а не быть «нарисованы» в блоках карточек. Только каталог умеет импорт из файла и передаёт артикул в заказе.
  • 🏷 В каждой карточке каталога заполните поле артикула (SKU) — тем же значением, что в 1С.
  • 🧪 Сделайте тестовую страницу с корзиной, не опубликованную для покупателей. На ней будете проверять обмен.

Перед первой загрузкой каталога выгрузите текущий каталог Tilda в CSV и сохраните файл. Неудачный импорт перезапишет цены и описания, а этот файл позволит откатиться за минуту.

Публикация 1С и HTTP-сервис для приёма заказов с Тильды

Чтобы Tilda передавала заказ прямо в 1С, у базы должен быть адрес в интернете. Его даёт публикация на веб-сервере (Apache или IIS) и HTTP-сервис, который принимает запрос.

Создайте HTTP-сервис в расширении

Типовую конфигурацию не снимайте с поддержки. Всё делается в расширении:

  1. Откройте базу в Конфигураторе: Конфигурация → Расширения конфигурации, создайте расширение.
  2. В дереве расширения: Общие → HTTP-сервисы, добавьте сервис, например TildaOrders. Корневой URL — tilda.
  3. Добавьте шаблон URL /order и в нём метод POST. Назначьте обработчик.
  4. Создайте в расширении роль с правом на этот HTTP-сервис. Без неё сервис ответит ошибкой доступа.

Код обработчика

Пример ниже принимает заказ в формате JSON, проверяет секретный ключ из адреса, отвечает на тестовый запрос Tilda и разбирает состав заказа:

Функция OrderPOST(Запрос)

    // Секрет передаётся в адресе: .../hs/tilda/order?key=...
    Ключ = Запрос.ПараметрыЗапроса.Получить("key");
    Если Ключ <> "замените-на-свой-длинный-ключ" Тогда
        Возврат Новый HTTPСервисОтвет(403);
    КонецЕсли;

    Тело = Запрос.ПолучитьТелоКакСтроку();

    // При подключении webhook Tilda шлёт проверочный запрос test=test
    Если СтрНайти(Тело, "test") > 0 И СтрДлина(Тело) < 30 Тогда
        Ответ = Новый HTTPСервисОтвет(200);
        Ответ.УстановитьТелоИзСтроки("ok");
        Возврат Ответ;
    КонецЕсли;

    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(Тело);
    Данные = ПрочитатьJSON(Чтение, Истина); // Истина — получить Соответствие
    Чтение.Закрыть();

    Оплата = Данные.Получить("payment");
    НомерЗаказа = Оплата.Получить("orderid");
    Сумма = Оплата.Получить("amount");

    Состав = "";
    Для Каждого Товар Из Оплата.Получить("products") Цикл
        Состав = Состав + СтрШаблон("%1 | %2 | %3 шт. | %4 руб.",
            Товар.Получить("sku"), Товар.Получить("name"),
            Товар.Получить("quantity"), Товар.Получить("price")) + Символы.ПС;
    КонецЦикла;

    ЗаписьЖурналаРегистрации("Tilda.Заказ", УровеньЖурналаРегистрации.Информация, , ,
        СтрШаблон("Заказ %1 на сумму %2" + Символы.ПС + "%3", НомерЗаказа, Сумма, Состав));

    Возврат Новый HTTPСервисОтвет(200);

КонецФункции

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

Состав полей в JSON зависит от настроек корзины и формы на Tilda. Не пишите разбор «по памяти»: сохраните тело первого реального запроса в журнал целиком (Тело) и стройте код по нему.

Опубликуйте базу на веб-сервере

  1. Запустите Конфигуратор от имени администратора Windows: Администрирование → Публикация на веб-сервере.
  2. Укажите имя публикации, например shop, и включите флажок публикации HTTP-сервисов, отметьте TildaOrders.
  3. Нажмите Опубликовать. Адрес сервиса будет вида https://ваш-домен/shop/hs/tilda/order.

Tilda не умеет передавать логин и пароль 1С. Практический приём: заведите в 1С отдельного пользователя только с ролью для HTTP-сервиса и пропишите его в файле публикации default.vrd, в строке подключения атрибута ib — параметры Usr= и Pwd=. Тогда веб-сервер сам войдёт в базу под этим пользователем, а не под администратором.

Публикуйте только по HTTPS (сертификат на веб-сервере или на прокси перед ним) и не открывайте наружу веб-клиент той же публикации. Наружу должен смотреть один адрес /hs/tilda/.

Подключите webhook в Tilda

  1. В Tilda: Настройки сайта → Формы, выберите Webhook.
  2. Вставьте адрес сервиса вместе с ключом: https://ваш-домен/shop/hs/tilda/order?key=....
  3. Если в настройках есть выбор формата, включите отправку данных в JSON — под него написан код выше.
  4. Сохраните. Tilda отправит проверочный запрос; если 1С вернула 200, сервис подключится.
  5. Откройте блок с корзиной или формой заказа на странице и в его настройках отметьте webhook как получателя данных. Без этого шага заказы в 1С не придут, хотя подключение «зелёное».

Выгрузка товаров, цен и остатков из 1С в каталог Tilda

Каталог Tilda принимает импорт из CSV. Задача на стороне 1С — получить файл с нужными колонками.

Соберите файл

Удобнее всего сделать небольшой отчёт на СКД или внешнюю обработку , которая выводит одну таблицу: артикул, наименование, цена по виду цены «Интернет-магазин», остаток на складе сайта, группа номенклатуры. Готовый отчёт сохраняется из табличного документа в CSV или XLSX, а XLSX потом пересохраняется в CSV.

Если программиста нет, соберите таблицу из двух стандартных выгрузок в Excel: список номенклатуры с ценами и отчёт по остаткам. Склейте их по артикулу и сохраните как CSV в кодировке UTF-8.

Сопоставьте поля

Заголовки колонок возьмите из файла, который Tilda выдаёт при экспорте каталога. Так вы не ошибётесь в названиях. Основные соответствия:

Сопоставление полей
Артикул номенклатуры→SKU
Наименование (или «Наименование для печати»)→Title
Цена по виду «Интернет-магазин»→Price
Остаток на складе сайта→Quantity
Группа номенклатуры→Category
Описание из карточки 1С→Description
Цена до скидки (если показываете зачёркнутую)→Price Old

Загрузите и проверьте

  1. Откройте каталог товаров в Tilda и выберите импорт из CSV.
  2. Укажите файл, проверьте, что колонки распознаны верно.
  3. После импорта откройте 3–5 товаров выборочно: цена, остаток, артикул.

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

Округляйте остатки на сайте вниз и держите страховой запас: выгружайте Остаток − 1 для ходовых позиций. Пока файл не перезагружен, сайт живёт вчерашними цифрами.

Заказы с сайта на Тильде в 1С: от корзины до отгрузки

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

Что создавать:

  • В УТ 11 и КА — документ Заказ клиента. Из него дальше делают оплату, резерв и Реализацию товаров и услуг.
  • В БП 3.0 заказов клиентов нет, обычно создают Счёт покупателю. На его основании потом оформляют поступление оплаты и реализацию.

Порядок обработки одного заказа:

  1. Проверить, нет ли уже документа с этим номером заказа Tilda. Номер удобно хранить в комментарии или в номере входящего документа. Повторная отправка не должна создать дубль.
  2. Найти номенклатуру по артикулу (sku). Не нашли — не придумывать товар, а записать заказ с пометкой «требует проверки» и уведомить менеджера.
  3. Сверить цену из заказа с ценой в 1С. Расхождение — тоже на проверку: так ловят устаревший каталог на сайте.
  4. Записать документ без проведения. Проводит менеджер после звонка клиенту.
  5. Вернуть Tilda ответ 200.

Не делайте тяжёлую работу прямо в обработчике. Tilda ждёт ответа несколько секунд. Надёжнее сохранить сырой заказ в регистр сведений расширения и сразу ответить 200, а документы создавать регламентным заданием раз в 1–2 минуты. Тогда медленная база или блокировка не приведут к потере заказа.

Оплата. Если на сайте подключена онлайн-оплата, в 1С заказ приходит с суммой, но деньги поступят от платёжного агрегатора одним реестром за день, за вычетом комиссии. Сверяйте оплату по номеру заказа из реестра, а не по сумме: у двух заказов на 2 490 руб. сумма совпадёт.

Отгрузка и статусы. Статус «отгружен» из 1С обратно в Tilda типовыми средствами не передаётся. Если клиенту нужны уведомления, их отправляют из 1С (почта, SMS-сервис) или через CRM, подключённую к сайту.

Проверка обмена 1С и Tilda перед запуском

Пройдите сценарий на тестовой странице, прежде чем включать webhook на рабочей корзине.

Проверка интеграции перед запуском
Выполнено: 0 / 8

Где смотреть, если что-то не сошлось:

  • Журнал регистрации 1С (Администрирование → Обслуживание → Журнал регистрации в БП и УТ) — отбор по событию Tilda.Заказ и по ошибкам.
  • Логи веб-сервера — доходит ли запрос до сервера вообще и с каким кодом ответа.
  • Свой тестовый запрос. Отправьте заказ сами через curl, чтобы отделить проблему 1С от проблемы Tilda:
curl -X POST "https://ваш-домен/shop/hs/tilda/order?key=..." \
  -H "Content-Type: application/json" \
  -d '{"payment":{"orderid":"T-1001","amount":"2490","products":[{"sku":"A-15","name":"Кружка","quantity":"1","price":"2490"}]}}'

Если curl проходит, а заказы с сайта нет — ищите на стороне Tilda: получатель данных в блоке, адрес webhook, формат.

Ошибки при подключении 1С к Тильде и как их снять

Диагностика: выберите симптом

Ещё одна неочевидная ловушка — кодировка CSV. Excel по умолчанию сохраняет CSV в Windows-1251, и Tilda покажет вместо названий «кракозябры». Сохраняйте файл как «CSV UTF-8» или пересохраните через текстовый редактор.

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

Можно ли подключить 1С к Тильде через штатный «Обмен с сайтом»?
Нет. Штатный обмен работает по CommerceML с сайтами, которые этот формат поддерживают. Tilda его не принимает, поэтому нужен CSV, webhook или коннектор.
Нужна ли доработка 1С, если использовать готовый коннектор?
Обычно ставится модуль коннектора или настраивается его обмен с 1С. Типовую конфигурацию при этом снимать с поддержки не нужно, если модуль поставляется расширением. Уточните это до оплаты.
Работает ли интеграция с 1С:Фреш или облачной базой?
Приём webhook в облачную базу зависит от того, разрешает ли провайдер публиковать свои HTTP-сервисы. Если нет, используйте посредника: скрипт или сервис принимает заказ, а база забирает его сама.
Как часто обновлять остатки на сайте?
При десятках продаж в день — не реже раза в день, перед открытием. Если остатки меняются каждый час, ручной CSV не справится: нужен коннектор с автоматической синхронизацией.
Сколько стоит такая интеграция?
Ориентировочно: связка CSV и webhook силами фрилансера 1С — от 15–20 часов работы программиста. Готовые коннекторы обычно стоят от 1 до 5 тыс. руб. в месяц. Цены примерные и зависят от объёма каталога.