Организация обмена данными в режиме «по событию» требует принципиального изменения архитектурного подхода. Вместо того чтобы полагаться на регламентные задания, работающие по расписанию, мы должны перевести систему в режим потоковой обработки. В этом руководстве мы разберем, как сделать обмен надежным, производительным и устойчивым к отказам приемной стороны.
Многие начинающие разработчики пытаются реализовать отправку данных сразу в событии ПриЗаписи. На первый взгляд, это кажется простым решением, но при интенсивной работе системы вы столкнетесь с рядом критических трудностей:
Чтобы избежать описанных выше проблем, мы предлагаем использовать промежуточное хранилище — РегистрСведений. Такой подход превращает синхронное действие пользователя в асинхронную задачу для системы.
Шаг 1: Регистрация события. В обработчике ПослеЗаписи объекта (именно ПослеЗаписи, чтобы гарантировать, что транзакция в основной базе завершена) мы записываем факт изменения в специальный регистр:
Процедура ПослеЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;
Запись = РегистрыСведений.ОчередьОбменаДанными.СоздатьМенеджерЗаписи();
Запись.ОбъектСсылка = ЭтотОбъект.Ссылка;
Запись.ДатаИзменения = ТекущаяДатаСеанса();
Запись.Записать();
КонецПроцедуры
Шаг 2: Фоновая обработка. Мы создаем РегламентноеЗадание, которое работает с высокой частотой (например, раз в минуту или чаще). Это задание «выгребает» записи из нашего регистра, формирует пакеты данных и отправляет их получателю.
Если ваша система является высоконагруженной, использование внутренних инструментов 1С может оказаться недостаточным. В таких случаях мы рекомендуем архитектуру на базе брокеров сообщений. Это внешние сервисы, которые выступают в роли «буфера».
JSON или XML и отправляет его во внешнюю очередь.Этот подход полностью развязывает системы. Даже если база-получатель будет выключена на техническое обслуживание, данные не потеряются — они будут ждать своей очереди в брокере.
При реализации потокового обмена мы должны учитывать важные нюансы:
Используя предложенные методы — создание очереди через РегистрСведений или интеграцию с брокерами — вы сможете построить профессиональную систему обмена данными, которая не будет мешать пользователям работать в 1С, обеспечивая при этом высокую надежность доставки информации.