При переходе с устаревших версий конфигураций, таких как УТ 10.2 на платформе 8.1, на современные системы вроде УТ 11.4, разработчики часто сталкиваются с изменением архитектуры справочников. Одной из самых заметных перемен стало разделение сущности «Контрагент» на две: Партнеры (управленческий учет) и Контрагенты (юридические лица). В этой статье мы подробно разберем, как с помощью «Конвертации данных 2.0» (КД 2.0) корректно перенести данные, если в источнике нужного реквизита нет в табличной части, а в приемнике он обязателен.
Прежде чем приступать к написанию правил, проанализируем ситуацию. В УТ 10.2 справочник Контрагенты содержал в себе и управленческую, и юридическую информацию. В УТ 11.4 справочник Партнеры является иерархическим и определяет структуру холдинга, а Контрагенты — это лишь перечень юридических лиц, связанных с конкретными партнерами. Рассмотрим, как программно обеспечить связь этих объектов при переносе документов.
Типичная ситуация: вы переносите документ (например, ПКО или Реализацию). В УТ 11 в табличной части документа появился обязательный реквизит Партнер. В исходном документе в УТ 10.2 этого реквизита в строках таблицы нет, но в шапке документа указан Контрагент. Выясним, как «подняться» из строки табличной части к реквизитам документа-владельца.
В «Конвертации данных 2.0» при выгрузке табличных частей (через ПКГС — Правила конвертации групп свойств) система предоставляет нам предопределенные переменные:
Многие разработчики пытаются использовать ИсходящиеДанные, создавая сложные структуры, однако существует более простой и элегантный способ. Рассмотрим его по шагам.
Разберем ситуацию, когда нам нужно заполнить Партнер в строке таблицы, используя Контрагента из шапки. Для этого в правиле конвертации свойства (ПКС) для реквизита Партнер выполним следующие действия:
КонтрагентыВПартнеры).
// Получаем контрагента из шапки документа-источника
Значение = Объект.Контрагент;
Таким образом, для каждой строки табличной части система будет брать контрагента из шапки документа и по правилу конвертации превращать его в ссылку на партнера в приемнике. Это стандартный и наиболее эффективный метод работы в КД 2.0.
Иногда данных одного только реквизита недостаточно, и нужно передать целый набор параметров для поиска или создания объекта «на лету». В этом случае проанализируем механизм работы со структурой ИсходящиеДанные. Если вы решили пойти по этому пути в табличной части, код в обработчике ПКС «Перед выгрузкой» будет выглядеть так:
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Код", Объект.Контрагент.Код);
ИсходящиеДанные.Вставить("Наименование", Объект.Контрагент.Наименование);
// Дополнительные параметры, которых нет в строке ТЧ
Важно помнить: если вы используете ИсходящиеДанные в ПКС, то в соответствующем ПКО (Правиле конвертации объекта) в обработчике «Перед загрузкой» вы должны будете принять эти данные через переменную ВходящиеДанные. Однако, как мы выяснили ранее, для простых ссылок это избыточно.
Рассмотрим вторую часть вопроса: наличие реквизита ГоловнойКонтрагент, который ссылается на этот же справочник Контрагенты. Это называется рекурсивной ссылкой. В КД 2.0 это настраивается достаточно просто:
Контрагенты найдите ПКС для реквизита ГоловнойКонтрагент.Контрагенты.Важный нюанс: Если в источнике объект ссылается сам на себя (например, контрагент является головным для самого себя), убедитесь, что у вас корректно настроены Поля поиска. Обычно поиск идет по Уникальному Идентификатору (УИД), и КД 2.0 отлично справляется с циклическими ссылками автоматически.
Поскольку УТ 10.2 базируется на платформе 8.1, при выгрузке данных следует учитывать несколько технических моментов:
V8Exchan81.epf.AddFiles\Переходы с других конфигураций\) кажутся слишком сложными, используйте их как справочник логики: посмотрите, какие именно свойства заполняются для связи Партнер - Контрагент.Подведем итог: для успешной конвертации из УТ 10.2 в УТ 11.4 ключевым является понимание контекста выполнения кода. Используя переменную Объект внутри правил для табличных частей, вы получаете полный доступ ко всем данным документа-источника, что позволяет легко заполнять новые обязательные реквизиты приемника.