Как настроить варианты выгрузки в правилах обмена Конвертации Данных без переключения флажков?

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

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

Рассмотрим, как заложить логику выборочной выгрузки непосредственно в сами правила обмена (XML-файл), не меняя код обработки и не создавая отдельные внешние файлы.

Анализ архитектурных ограничений платформы

Проанализируем, почему нельзя просто снять или поставить галочки в дереве ПВД программно из кода правил обмена. Дерево ПВД строится обработкой «Универсальный обмен данными» в момент загрузки XML-файла правил. Код из обработчиков самих правил начинает исполняться только после того, как пользователь нажимает кнопку «Выгрузить данные».

Изменение элементов формы обработки напрямую из XML-файла правил не предусмотрено архитектурой Конвертации Данных 2.х. Однако вместо визуального снятия флажков мы можем использовать программную отмену обработки лишних ПВД непосредственно в момент выгрузки.

Управление выгрузкой с помощью параметров правил

Выясним основной принцип решения задачи. В Конвертации Данных предусмотрен механизм работы с параметрами. Если в правилах создан параметр, обработка «Универсальный обмен данными» автоматически выводит его на вкладку «Параметры выгрузки». Пользователю достаточно выбрать нужный режим из списка, после чего алгоритмы правил сами отключат выполнение ненужных ПВД.

Разберем по шагам порядок настройки такого механизма в конфигурации «Конвертация данных 2.х»:

  1. Откроем правила обмена и перейдем на вкладку «Параметры».
  2. Добавим новый параметр, например, РежимВыгрузки. В качестве типа данных зададим строку или список значений с вариантами (например, ПолнаяВыгрузка и ТолькоФизЛица).
  3. В поле значения по умолчанию установим основной режим, например, ПолнаяВыгрузка.
  4. Перейдем к Правилам Выгрузки Данных (ПВД), выполнение которых должно зависеть от выбранного режима.
  5. В каждом таком ПВД закроем исполнение с помощью обработчика «Перед обработкой».

Посмотрим на пример кода, который необходимо прописать в обработчике «Перед обработкой» для ПВД, выгружающих ненужные объекты при частичной дозагрузке:


Если Параметры.РежимВыгрузки = "ТолькоФизЛица" Тогда
    Отказ = Истина;
КонецЕсли;

Установка значения Отказ = Истина; в обработчике «Перед обработкой» полностью отменяет выборку данных из информационной базы по данному ПВД. Это предотвращает лишнюю нагрузку на сервер базы данных и ускоряет процесс выгрузки.

Централизованное управление через глобальный обработчик

Если правил выгрузки данных много, прописывать условия в каждом ПВД вручную неудобно. Рассмотрим более удобный способ — вынос логики управления в глобальный обработчик правил «Перед выгрузкой данных».

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


// Алгоритм в обработчике "Перед выгрузкой данных"
Параметры.Вставить("ОтключатьЛишниеПВД", (Параметры.РежимВыгрузки = "ТолькоФизЛица"));

После этого в обработчике «Перед обработкой» нужных ПВД достаточно написать короткую проверку:


Если Параметры.ОтключатьЛишниеПВД Тогда
    Отказ = Истина;
КонецЕсли;

Использование ПВД с произвольным алгоритмом

Для задач дозагрузки узкого спектра данных (например, только физических лиц) существует альтернативный вариант: создание отдельного ПВД с способом выборки данных «Произвольный алгоритм».

Разберем, как это работает:

  1. Создаем новое ПВД с именем ДозагрузкаФизЛиц и режимом выборки Произвольный алгоритм.
  2. В обработчике «Перед обработкой» пишем выборку объектов и явный вызов функции ВыгрузитьПоПравилу().
  3. Стандартные ПВД отключаем через параметр РежимВыгрузки, как было описано выше.

Таким образом, использование параметров обмена и свойства Отказ = Истина; в обработчиках ПВД позволяет гибко управлять составом выгружаемых данных через интерфейс стандартной обработки без необходимости модифицировать внешние файлы и вручную переключать флажки.

← На главную