При освоении конфигурации «Конвертация данных 2.0» начинающие разработчики часто сталкиваются с вопросом: как избежать выгрузки всей базы справочников, если нужно перенести только конкретные документы? Важно понимать, как система обрабатывает ссылки и как правильно настроить правила, чтобы в базу-приемник попадали только необходимые данные. Рассмотрим этот процесс подробно.
Для начала проанализируем разницу между двумя ключевыми механизмами: Правилами выгрузки данных (ПВД) и Правилами конвертации объектов (ПКО). Это фундамент, на котором строится логика любого обмена.
Основная особенность платформы заключается в том, что если в выгружаемом объекте (например, в документе) есть ссылка на другой объект (справочник Контрагенты или Номенклатура), то система автоматически попытается выгрузить этот зависимый объект. Это происходит по цепочке, даже если для этого справочника не создано правило в ПВД.
Представим ситуацию: нам нужно перенести реализации, и мы хотим, чтобы контрагенты и номенклатура создавались в приемнике только в том случае, если они указаны в этих реализациях. Проанализируем необходимые действия:
Таким образом, выгружается то, что указано в ПВД, а далее подтягивается только та номенклатура и те контрагенты, которые реально задействованы в этих документах, согласно их ПКО.
Иногда автоматическая выгрузка всех связанных объектов приводит к «раздуванию» файла обмена. Рассмотрим инструменты, которые позволяют ограничить глубину выгрузки:
Флаг «Не выгружать объекты свойств (только ссылки)». В настройках ПКС (Правила конвертации свойств) можно указать этот признак. В этом случае в файл обмена запишутся только поля поиска (например, УИД, Код или ИНН). Это полезно, если вы уверены, что объект уже есть в приемнике и его не нужно обновлять или создавать заново.
Флаг «Выгружать объект полностью только при наличии ссылки на него в ПВД». Данная настройка в ПКО позволяет жестко ограничить выгрузку. Если объект встретится как ссылка, он выгрузится минимально (только для идентификации), если он не выбран в ПВД как самостоятельный объект выгрузки.
Для более гибкого контроля мы можем использовать обработчики событий. Рассмотрим несколько практических примеров.
Если нам нужно программно запретить выгрузку конкретного свойства как полноценного объекта, мы можем использовать параметр ИмяПКО в обработчике «Перед выгрузкой» свойства (ПКС). Посмотрим на пример кода:
// Если объект не должен создаваться в приемнике полностью,
// а нужна только ссылка
ИмяПКО = "";
Если же мы хотим полностью отменить выгрузку конкретного зависимого элемента (например, если номенклатура помечена на удаление), используем обработчик «Перед выгрузкой» в ПКО самого справочника:
Если Объект.ПометкаУдаления Тогда
Отказ = Истина;
КонецЕсли;
Проанализируем ситуацию с производительностью. Платформа кэширует информацию о выгруженных объектах. Если один и тот же контрагент встречается в сотне документов, он будет полностью описан в XML-файле только один раз. В остальных случаях система запишет только краткую ссылку по внутреннему идентификатору (GUID).
При использовании выгрузки «только по ссылке» нужно быть осторожными. Выясним основные причины возможных ошибок:
Для ускорения обмена в идентичных конфигурациях рекомендуется включать режим «Использовать быстрый поиск» в настройках ПКО. Это позволит системе сопоставлять объекты напрямую по GUID, минуя сложные алгоритмы поиска по полям (наименование, артикул и прочее), что значительно сокращает время обработки файла в базе-приемнике.