Книга знаний

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

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

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

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


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

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

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

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


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

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


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

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

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