Интеграция 1С и Tilda: товары, остатки и заказы без ручного ввода
Содержание
Готового модуля «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-сервис в расширении
Типовую конфигурацию не снимайте с поддержки. Всё делается в расширении:
- Откройте базу в Конфигураторе:
Конфигурация → Расширения конфигурации, создайте расширение. - В дереве расширения:
Общие → HTTP-сервисы, добавьте сервис, напримерTildaOrders. Корневой URL —tilda. - Добавьте шаблон URL
/orderи в нём методPOST. Назначьте обработчик. - Создайте в расширении роль с правом на этот 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. Не пишите разбор «по памяти»: сохраните тело первого реального запроса в журнал целиком (Тело) и стройте код по нему.
Опубликуйте базу на веб-сервере
- Запустите Конфигуратор от имени администратора Windows:
Администрирование → Публикация на веб-сервере. - Укажите имя публикации, например
shop, и включите флажок публикации HTTP-сервисов, отметьтеTildaOrders. - Нажмите
Опубликовать. Адрес сервиса будет видаhttps://ваш-домен/shop/hs/tilda/order.
Tilda не умеет передавать логин и пароль 1С. Практический приём: заведите в 1С отдельного пользователя только с ролью для HTTP-сервиса и пропишите его в файле публикации default.vrd, в строке подключения атрибута ib — параметры Usr= и Pwd=. Тогда веб-сервер сам войдёт в базу под этим пользователем, а не под администратором.
Публикуйте только по HTTPS (сертификат на веб-сервере или на прокси перед ним) и не открывайте наружу веб-клиент той же публикации. Наружу должен смотреть один адрес /hs/tilda/.
Подключите webhook в Tilda
- В Tilda:
Настройки сайта → Формы, выберитеWebhook. - Вставьте адрес сервиса вместе с ключом:
https://ваш-домен/shop/hs/tilda/order?key=.... - Если в настройках есть выбор формата, включите отправку данных в JSON — под него написан код выше.
- Сохраните. Tilda отправит проверочный запрос; если 1С вернула
200, сервис подключится. - Откройте блок с корзиной или формой заказа на странице и в его настройках отметьте webhook как получателя данных. Без этого шага заказы в 1С не придут, хотя подключение «зелёное».
Выгрузка товаров, цен и остатков из 1С в каталог Tilda
Каталог Tilda принимает импорт из CSV. Задача на стороне 1С — получить файл с нужными колонками.
Соберите файл
Удобнее всего сделать небольшой отчёт на СКД или внешнюю обработку , которая выводит одну таблицу: артикул, наименование, цена по виду цены «Интернет-магазин», остаток на складе сайта, группа номенклатуры. Готовый отчёт сохраняется из табличного документа в CSV или XLSX, а XLSX потом пересохраняется в CSV.
Если программиста нет, соберите таблицу из двух стандартных выгрузок в Excel: список номенклатуры с ценами и отчёт по остаткам. Склейте их по артикулу и сохраните как CSV в кодировке UTF-8.
Сопоставьте поля
Заголовки колонок возьмите из файла, который Tilda выдаёт при экспорте каталога. Так вы не ошибётесь в названиях. Основные соответствия:
Загрузите и проверьте
- Откройте каталог товаров в Tilda и выберите импорт из CSV.
- Укажите файл, проверьте, что колонки распознаны верно.
- После импорта откройте 3–5 товаров выборочно: цена, остаток, артикул.
Остаток лучше выгружать «свободный», то есть за вычетом резервов под уже принятые заказы. Иначе сайт продаст то, что менеджер вчера отложил другому клиенту.
Округляйте остатки на сайте вниз и держите страховой запас: выгружайте Остаток − 1 для ходовых позиций. Пока файл не перезагружен, сайт живёт вчерашними цифрами.
Заказы с сайта на Тильде в 1С: от корзины до отгрузки
Когда логирование в журнал работает, обработчик дорабатывают так, чтобы он создавал документ.
Что создавать:
- В УТ 11 и КА — документ
Заказ клиента. Из него дальше делают оплату, резерв иРеализацию товаров и услуг. - В БП 3.0 заказов клиентов нет, обычно создают
Счёт покупателю. На его основании потом оформляют поступление оплаты и реализацию.
Порядок обработки одного заказа:
- Проверить, нет ли уже документа с этим номером заказа Tilda. Номер удобно хранить в комментарии или в номере входящего документа. Повторная отправка не должна создать дубль.
- Найти номенклатуру по артикулу (
sku). Не нашли — не придумывать товар, а записать заказ с пометкой «требует проверки» и уведомить менеджера. - Сверить цену из заказа с ценой в 1С. Расхождение — тоже на проверку: так ловят устаревший каталог на сайте.
- Записать документ без проведения. Проводит менеджер после звонка клиенту.
- Вернуть Tilda ответ
200.
Не делайте тяжёлую работу прямо в обработчике. Tilda ждёт ответа несколько секунд. Надёжнее сохранить сырой заказ в регистр сведений расширения и сразу ответить 200, а документы создавать регламентным заданием раз в 1–2 минуты. Тогда медленная база или блокировка не приведут к потере заказа.
Оплата. Если на сайте подключена онлайн-оплата, в 1С заказ приходит с суммой, но деньги поступят от платёжного агрегатора одним реестром за день, за вычетом комиссии. Сверяйте оплату по номеру заказа из реестра, а не по сумме: у двух заказов на 2 490 руб. сумма совпадёт.
Отгрузка и статусы. Статус «отгружен» из 1С обратно в Tilda типовыми средствами не передаётся. Если клиенту нужны уведомления, их отправляют из 1С (почта, SMS-сервис) или через CRM, подключённую к сайту.
Проверка обмена 1С и Tilda перед запуском
Пройдите сценарий на тестовой странице, прежде чем включать webhook на рабочей корзине.
Где смотреть, если что-то не сошлось:
- Журнал регистрации 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» или пересохраните через текстовый редактор.