При подготовке тестовых баз, разделении учета или переносе начальной информации из 1С:Управление производственным предприятием часто требуется перенести лишь часть объектов конфигурации. Автоматическое создание правил в 1С:Конвертация данных 2.1 генерирует правила для всех справочников и документов подряд, что приводит к избыточной выгрузке данных. Разберем по шагам, как правильно настроить выборочный обмен и исключить перенос ненужной информации.
Понятие ключевых элементов: ПВД, ПКО и ПКС
Для понимания логики выборочной выгрузки проанализируем структуру правил конвертации:
Правила выгрузки данных (ПВД) — определяют точку входа, то есть какие именно таблицы базы-источника считываются при запуске обмена. Если для объекта нет активного ПВД, сам по себе он выгружаться не начнет.
Правила конвертации объектов (ПКО) — описывают сопоставление полей и логику создания конкретного объекта в базе-приемнике. ПКО срабатывает либо по вызову из ПВД, либо каскадно при выгрузке ссылки на объект из другого документа или справочника.
Правила конвертации свойств (ПКС) — задают соответствие реквизитов и табличных частей между источником и приемником.
Способ 1. Управление составом правил выгрузки данных (ПВД)
Если правила уже созданы автоматически, самым простым решением является отключение или удаление лишних правил выгрузки данных. Посмотрим, как это работает:
Перейдем в дерево правил на вкладку Правила выгрузки данных.
Отключим активность (снимем признак включения) или удалим те ПВД, объекты которых не должны выгружаться в качестве самостоятельных сущностей.
Оставим активными только те ПВД, которые соответствуют утвержденному списку переносимых документов и справочников (например, только справочник Номенклатура или документы ввода остатков).
При таком подходе из базы будут считываться только объекты, указанные в активных ПВД, а все зависимые данные будут подтягиваться исключительно по ссылкам.
Способ 2. Предотвращение каскадной выгрузки связанных объектов по ссылкам
Частая проблема выборочного переноса заключается в том, что даже при отключенном ПВД объект все равно переносится, если на него ссылается выгружаемый документ. Разберем, как ограничить вытягивание связанных данных:
В настройках целевого ПКО установим флаг Не создавать новый объект в приемнике, если он не найден. Это защитит базу-приемник от создания дублей и лишних элементов.
В свойствах ПКО включим признак Выгружать объект полностью только при наличии ссылки или настроим признак Не замещать существующие объекты при загрузке.
В конкретных ПКС, ссылающихся на второстепенные справочники, установим признак Не выгружать значение либо переопределим передачу значения.
В обработчике ПКО Перед выгрузкой установим программный фильтр. Если объект не удовлетворяет условию, выгрузка отменяется:
Если Источник.ПометкаУдаления Тогда
Отказ = Истина;
КонецЕсли;
Способ 3. Использование произвольных алгоритмов и фильтров в ПВД
Когда требуется перенести данные одного вида объекта не целиком, а по определенному условию (например, документы только за определенный период или по выбранной организации), стандартной выборки недостаточно. Рассмотрим программную настройку отбора в ПВД:
Откроем нужное Правило выгрузки данных и переключим способ выборки на Произвольный алгоритм.
В обработчике Перед обработкой напишем запрос для точечной выборки необходимых данных и передадим результат в обработку выгрузки:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеТоваровУслуг
|ГДЕ
| Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ДатаНачала", Параметры.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", Параметры.ДатаОкончания);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка, , , , "ПоступлениеТоваровУслуг");
КонецЦикла;
Способ 4. Настройка отборов в универсальной обработке выгрузки
Если правила уже сформированы, а фильтры требуется менять оперативно перед каждым обменом, воспользуемся возможностями внешней обработки Универсальный обмен данными XML:
Откроем обработку в базе-источнике и загрузим файл правил обмена.
На вкладке Выгружаемые данные снимем флаги со всех ненужных объектов.
Для оставленных объектов развернем колонку Отбор и настроим фильтрацию по реквизитам (пометка удаления, организация, дата, статус).
На вкладке Параметры укажем граничные условия, если они предусмотрены в алгоритмах правил.
Оптимизация производительности при выгрузке из УПП
Выгрузка крупных информационных массивов из базы УПП требует контроля расхода оперативной памяти. Проанализируем ключевые рекомендации для стабильной работы:
В обработке Универсальный обмен данными XML обязательно включим опцию Выгружать данные порциями и зададим размер порции от 500 до 2000 объектов. Это предотвратит переполнение памяти и аварийное завершение процесса.
При переносе исторических документов закрытых периодов целесообразно переносить сформированные движения регистров накопления и сведений, чтобы избежать необходимости массового перепроведения документов в базе-приемнике.
Если целью является получение чистой базы с разделенным учетом по организациям, рассмотрим вариант использования типового механизма Свертка информационной базы с последующей очисткой лишних данных вместо ручного переноса через правила конвертации.