В розничных сетях с развитой интернет-торговлей часто возникает задача объединения разнородных систем: распределенной сети розничных магазинов на базе 1С:Управление торговлей 10.3, центральной базы интернет-магазина на 1С:Управление торговлей 11 и веб-витрины (например, на 1С-Битрикс). Основные требования к такой связке — оперативное резервирование товаров под онлайн-заказы самовывоза, актуализация остатков в режиме реального времени и надежный контроль каналов связи с торговыми точками.
Разберем архитектурные ограничения типовых механизмов, выберем оптимальный способ взаимодействия и пошагово реализуем схему резервирования и мониторинга состояния торговых точек.
Проанализируем, почему типовые подходы обмена данными не подходят для задачи оперативного резервирования:
Оптимальным решением является размещение центрального HTTP-сервиса на стороне УТ 11, к которому локальные базы торговых точек обращаются по инициативе «снизу вверх» (исходящие запросы).
Рассмотрим схему взаимодействия подробнее:
HTTPСоединение.При оформлении заказа на сайте в УТ 11 создается предварительный («мягкий») резерв с ограниченным временем жизни (TTL). Точка забирает заказ, проводит документ резервирования в локальной базе и отправляет в УТ 11 подтверждение жесткого резерва либо отказ (если товар поврежден или продан секундой ранее).
Посмотрим на пример кода регламентного задания в УТ 10.3, которое обращается к сервису УТ 11 для получения входящих заказов и отправки локальных остатков:
Сервер = "ut11.company.ru";
Порт = 443;
ИспользоватьSSL = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение(Сервер, Порт, , , , 15, ИспользоватьSSL);
Запрос = Новый HTTPЗапрос("/ut11_base/hs/exchange/orders?store_id=" + ИдентификаторМагазина);
Попытка
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
// Обработка полученных заказов на резервирование
ОбработатьЗаказыНаРезерв(ТелоОтвета);
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации("ОбменУТ11", УровеньЖурналаРегистрации.Предупреждение, , , ОписаниеОшибки());
КонецПопытки;
Выясним, как центральной базе УТ 11 и сайту оперативно реагировать на обрыв связи с конкретным магазином:
ДатаПоследнейСвязи в регистре сведений СостояниеТорговыхТочек в УТ 11.Если сеть насчитывает более 100 магазинов, прямые частые HTTP-запросы могут создать существенную нагрузку на веб-сервер центральной базы. В качестве альтернативы рассмотрим интеграцию через брокер сообщений:
Использование связки исходящего опроса через HTTP-сервисы или брокер сообщений в сочетании с механизмом Heartbeat позволяет объединить распределенную сеть УТ 10.3 с УТ 11 и сайтом, гарантируя минимальные задержки и защиту от некорректных онлайн-заказов при сбоях связи.