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