Отключение повторного запуска обработчиков обновления после обмена с узлом в РИБ
Интеграция - Перенос данных 1C
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Проблема
В системах 1С на базе БСП, таких как ЕРП/КА/УТ, предусмотрена система синхронизации данных, из которой можно развернуть узлы распределенной информационной базы. После очередного обновления конфигурации метаданные или логика работы могут быть изменены, что способно повлиять на сами данные, которые должны быть приведены в соответствие. Для этого запускаются обработчики обновления, которые и приводят данные в соответствие с новой конфигурацией. Эти обновленные данные мигрируют по узлам информационной базы согласно правилам обмена для обеспечения консистентности информационных баз.
Последовательность обновления данных рассмотрим на примере плана обмена из УТ11 "РИБ с фильтрами":
- Обновление данных в центральном узле;
- Выгрузка данных на узел и запуск обработчиков обновления на узлах;
- Загрузка в центральном узле файла с периферийного узла;
- Запуск в центральном узле всех! обработчиков обновления конфигурации;
Проблемное место — это пункт №4, на заглавной картинке таких обработчиков набралось 247. Зачастую обработчики написаны так, чтобы обновлять только незаполненные данные, которые они должны заполнить, то есть повторный запуск не должен приводить к перезаписи. Но логика может оказаться совсем иной: обработка снова запускается и повторяет ранее сделанные действия, что совсем нехорошо - съедается время, ресурсы. Ниже приведен пример такого обработчика из последних обновлений. Подобный обработчик будет запускаться постоянно при каждом последующем обновлении, так как просто с определенной даты регистрирует документы к обработке независимо от того, надо это или нет.
В общем случае, возможна такая ситуация, когда после обновления с узла могут прийти данные не обновленные и их надо повторно обновить именно только в центральном узле, так как, например, только в центральном узле предполагается наличие всех нужных данных. Однако если мы на момент обновления центральной базы и узла уверены, что на узле новых данных не появится и обмены последними новыми данными успешно завершены, то запускать пункт №4 смысла нет. В моем случае именно такой сценарий при каждом обновлении, поэтому далее рассмотрим как исключить пункт №4.
Вариант решения
Процесс повторного вызова всех обработчиков регулируется определенными данными в регистре сведений ОбработчикиСобытийСинхронизацииДанных. Именно в нем регистрируется повторный вызов обработчиков в центральном узле с именем обработчика ОбновлениеИнформационнойБазы:

Возможные решения состоят в том, чтобы либо не регистрировать это событие, либо не обрабатывать. Я выбрал второй путь, так как он проще: наглядней и более читаемый. Обработчик находится в модуле менеджера указанного регистра сведений, через расширение меняем его логику, по сути нам нужно избежать вызова процедуры:
ОбновлениеИнформационнойБазыСлужебный.ПриПолученииПервогоСообщенияОбменаРИБПослеОбновления():
После исправления и проверке на демке УТ 11 версии 11.5.22.170 с переходом на 11.5.22.174, убеждаемся, что вызов с регистрацией и запуском всех обработчиков предыдущих версий не выполняется, и видим только обработчики текущего релиза 14 шт.

Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.174
Вступайте в нашу телеграмм-группу Инфостарт