Как в 1С:Конвертации данных 2.0 ограничить выгрузку документов по организации?

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

При настройке обмена данными между информационными базами в конфигурации «1С:Конвертация данных 2.0» часто возникает задача выгружать документы не по всем организациям, а только по одной или нескольким выбранным. Разберем основные способы решения этой задачи, оценим их плюсы, минусы и особенности влияния на производительность и ссылочную целостность.

Способ 1. Фильтрация в обработчиках ПКО с помощью флага Отказ

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

Посмотрим на пример кода, который необходимо разместить в обработчике ПКО Перед выгрузкой:


Если ЗначениеЗаполнено(Источник.Организация) 
    И Источник.Организация <> Справочники.Организации.НайтиПоРеквизиту("ИНН", "7701234567") Тогда
    Отказ = Истина;
КонецЕсли;

Если для обмена создан отдельный параметр конвертации (например, ОрганизацияОтбора), условие примет более универсальный вид:


Если ЗначениеЗаполнено(Параметры.ОрганизацияОтбора) 
    И Источник.Организация <> Параметры.ОрганизацияОтбора Тогда
    Отказ = Истина;
КонецЕсли;

Разберем важный нюанс: при таком подходе платформа сначала физически считывает каждый документ из базы данных, передает его в алгоритм и только потом отменяет выгрузку. Если в базе содержится большой объем данных по другим организациям, этот метод может существенно замедлить процесс обмена.

Способ 2. Ограничение на уровне ПВД через произвольный алгоритм

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

Рассмотрим по шагам реализацию этого механизма:

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

Посмотрим на пример кода выборки в обработчике ПВД:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Реализация.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК Реализация
    |ГДЕ
    |	Реализация.Организация = &Организация
    |	И Реализация.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";

Запрос.УстановитьПараметр("Организация", Параметры.ОрганизацияОтбора);
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ВыгрузитьПоПравилу(Выборка.Ссылка, , , , "РеализацияТоваровУслуг");
КонецЦикла;

Этот метод исключает лишнее чтение неподходящих объектов и кардинально ускоряет выполнение обмена.

Способ 3. Использование правил регистрации объектов (ПРО)

Если обмен строится на основе планов обмена в типовых конфигурациях, фильтрацию целесообразно выполнять на этапе регистрации изменений. Для этого настраиваются Правила регистрации объектов (ПРО).

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

Способ 4. Интерактивная настройка отбора в обработке выгрузки

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

  1. Загружаем правила конвертации в обработку.
  2. На вкладке Выгружаемые данные находим нужный документ.
  3. В колонке Настройка отбора нажимаем кнопку редактирования и добавляем условие по реквизиту Организация.

Важные нюансы ссылочной целостности

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

Чтобы полностью исключить выгрузку нежелательных объектов по ссылкам, необходимо в соответствующих Правилах конвертации свойств (ПКС) вышестоящих объектов включить признак Не выгружать объекты свойств по ссылкам либо предварительно очищать ссылочные поля в обработчиках событий.

← На главную