Как загрузить правила регистрации объектов в УПП 1.3?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При настройке обмена данными между конфигурациями часто возникает необходимость управлять составом выгружаемых данных не только на этапе самой выгрузки, но и в момент их записи. Для этого в конфигурации «Конвертация данных 2.1» создаются специальные правила регистрации объектов (ПРО). Однако в конфигурации «Управление производственным предприятием 1.3» (УПП 1.3), работающей на обычных формах, интерфейс существенно отличается от современных конфигураций на базе управляемых форм: привычный справочник Правила регистрации объектов в меню отсутствует. Разберем, где именно хранятся правила регистрации в УПП 1.3, как их загрузить и что необходимо учесть для их корректной работы.

Архитектурные особенности обмена данными в УПП 1.3

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

  1. Классический механизм обмена (на базе справочника НастройкиОбменаДанными). Это устаревший механизм, который изначально не поддерживает файлы правил регистрации объектов, сформированные в КД 2.1. В нем отбор данных регулируется исключительно стандартной платформенной авторегистрацией либо фильтрами в обработчиках правил конвертации данных (ПВД и ПКО).
  2. Механизм на базе подсистемы «Обмен данными» БСП (Библиотека стандартных подсистем). Только те планы обмена, которые интегрированы с этой подсистемой (например, ОбменРозницаУправлениеПредприятием, СинхронизацияДанныхЧерезУниверсальныйФормат, обмены с Документооборотом и др.), умеют считывать и исполнять ПРО.

Способ 1. Загрузка правил через регистр сведений «Правила для обмена данными»

Если используемый план обмена функционирует на базе подсистемы обмена БСП, загрузка правил выполняется в режиме «1С:Предприятие» через специальный регистр сведений. Выполним настройку по шагам:

  1. Откроем главное меню программы: Операции -> Регистр сведений.
  2. Найдем в списке и откроем регистр сведений Правила для обмена данными (в метаданных — РегистрСведений.ПравилаДляОбменаДанными).
  3. Создадим новую запись или откроем существующую для нужного узла плана обмена.
  4. В поле План обмена выберем план обмена, для которого настраивается регистрация.
  5. В поле Вид правил обязательно укажем значение Правила регистрации объектов (элемент перечисления ВидыПравилДляОбменаДанными).
  6. В качестве источника правил установим переключатель в положение Загрузить из файла.
  7. Нажмем кнопку Загрузить правила и укажем путь к XML-файлу правил регистрации, выгруженному из конфигурации «Конвертация данных 2.1».
  8. Сохраним запись регистра по кнопке Записать и закрыть.

После этого система запишет двоичные данные правил в тело регистра, и обработчики БСП будут использовать именно этот актуальный файл.

Способ 2. Внедрение правил через макет плана обмена в конфигураторе

Типовые конфигурации часто хранят правила регистрации непосредственно внутри метаданных. Если мы разрабатываем собственный план обмена или хотим зафиксировать правила в релизе конфигурации, разберем порядок действий в конфигураторе:

  1. Откроем ветку нужного плана обмена в дереве метаданных конфигуратора.
  2. В ветке Макеты создадим новый макет с точным именем ПравилаРегистрации.
  3. Тип макета укажем как Двоичные данные или Текстовый документ и загрузим в него содержимое полученного XML-файла.
  4. В режиме «1С:Предприятие» в регистре сведений Правила для обмена данными переключим источник правил в положение Использовать правила из конфигурации.

Обязательные системные условия для работы правил регистрации

Простая загрузка XML-файла в регистр или макет не запустит регистрацию автоматически. Для того чтобы правила заработали, проверим и настроим следующие системные компоненты:

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

Альтернативные варианты регистрации данных

Если используемый план обмена относится к старому механизму УПП 1.3 (без БСП) и переводить его на подсистему БСП нецелесообразно, рассмотрим альтернативные пути фильтрации данных:

  1. Перенос условий в правила конвертации данных (ПКО и ПВД). Откажемся от отдельного файла ПРО. В «Конвертации данных 2.1» настроим выгрузку в обработчиках ПВД через произвольный алгоритм выборки либо в обработчике события Перед выгрузкой соответствующего ПКО установим условие:
    
    Если Не ОбъектПодходитПодКритерии(Источник) Тогда
        Отказ = Истина;
    КонецЕсли;
    
    При таком подходе объект регистрируется платформой, но при формировании пакета обмена отсекается и не переносится в базу-приемник.
  2. Программная регистрация через подписку на событие. Установим в составе плана обмена авторегистрацию в положение Запретить. Создадим собственную подписку на событие ПриЗаписи для нужных документов или справочников. В модуле подписки опишем программный фильтр и выполним явную регистрацию методом платформы:
    
    Если Источник.Организация = НужнаяОрганизация Тогда
        ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Источник.Ссылка);
    КонецЕсли;
    
  3. Использование внешней обработки «Регистрация изменений для обмена». Если регистрация требуется разово или обмен выполняется ручными пакетами, зарегистрируем объекты вручную через стандартную обработку, наложив произвольный отбор по реквизитам.
← На главную