v8: Выборочная миграция данных в УРБД Ключевые слова: УРБД,миграция,выборочная
Иногда в УРБД нужно, чтобы элементы мигрировали не по всем базам, а только в выборочные места.
Это легко настроить.
Объясняю по шагам.
Для начала нужно смотреть состав объектов плана обмена и отключить у таких объектов авторегистрацию изменений.
Правой кнопкой щелкаем на плане обмена, выбираем команду "Состав", в колонке "Авторегистрация" выбираем "Запретить".
Далее в процедуру ПриЗаписи вставить вызов процедуры обРегистрацияИзменений (именно внутри такого условия):
Процедура ПриЗаписи(Отказ)
Если ЭтотОбъект.ОбменДанными.Получатели.АвтоЗаполнение и не ЭтотОбъект.ОбменДанными.Загрузка Тогда
обРегистрацияИзменений(ЭтотОбъект) ;
КонецЕсли;
КонецПроцедуры
В процедуре обРегистрацияИзменений вызывается функция обОтправлятьОбъектВУзел для проверки того, нужно ли отправлять объект в указанную базу.
Процедура обРегистрацияИзменений(Объект) Экспорт
ГлавныйУзел = ПланыОбмена.ГлавныйУзел();
Если ГлавныйУзел=Неопределено Тогда //это центральная база
Если ЗначениеНеЗаполнено(КодОбъекта) Тогда
// Изменение в центральной базе и не указано подразделение.
// объект никуда не передаем.
Возврат;
КонецЕсли;
ПланОбмена = ПланыОбмена.Распределенка.Выбрать();
Пока ПланОбмена.Следующий() Цикл
//В сам себя не отправляем
Если ПланОбмена = ПланыОбмена.Распределенка.ЭтотУзел() тогда
Продолжить;
КонецЕсли;
//Некое хитрое условие
Если обОтправлятьОбъектВУзел(Объект, ПланОбмена) Тогда
Объект.ОбменДанными.Получатели.Добавить(ПланОбмена.Ссылка);
КонецЕсли;
КонецЦикла;
Иначе
//изменен периферийный объект в базе создания
Объект.ОбменДанными.Получатели.Добавить(ГлавныйУзел);
КонецЕсли;
КонецПроцедуры
Вот собственно и все.
Для настройки типовых конфигураций на поддержке (вроде УПП) можно у всех объектов отключить авторегистрацию (это проще, чем копаться с тем, какие объекты должны мигрировать всюду, какие - нет) и выполнить глобальный парсинг модулей, чтобы перехватывать события записи всех объектов. |