Книга знаний

1С:Предприятие / v8 / Приемы программирования / Обмен данными, УРБД

v8: Выборочная миграция данных в УРБД

Скелет кода по настройке выборочной миграции данных в УРБД.Автор статьи:
Последняя редакция №1 от 10.07.06
URL: http://kb.mista.ru/article.php?id=278

Ключевые слова: УРБД,миграция,выборочная


Иногда в УРБД нужно, чтобы элементы мигрировали не по всем базам, а только в выборочные места.
Это легко настроить.
Объясняю по шагам.

Для начала нужно смотреть состав объектов плана обмена и отключить у таких объектов авторегистрацию изменений.
Правой кнопкой щелкаем на плане обмена, выбираем команду "Состав", в колонке "Авторегистрация" выбираем "Запретить".

Далее в процедуру ПриЗаписи вставить вызов процедуры обРегистрацияИзменений (именно внутри такого условия):

Процедура ПриЗаписи(Отказ)
   Если ЭтотОбъект.ОбменДанными.Получатели.АвтоЗаполнение и не ЭтотОбъект.ОбменДанными.Загрузка Тогда
       обРегистрацияИзменений(ЭтотОбъект) ;
   КонецЕсли;
КонецПроцедуры

В процедуре обРегистрацияИзменений вызывается функция обОтправлятьОбъектВУзел для проверки того, нужно ли отправлять объект в указанную базу.

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

Вот собственно и все.
Для настройки типовых конфигураций на поддержке (вроде УПП) можно у всех объектов отключить авторегистрацию (это проще, чем копаться с тем, какие объекты должны мигрировать всюду, какие - нет) и выполнить глобальный парсинг модулей, чтобы перехватывать события записи всех объектов.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика