Как при конвертации из УТ 10.2 в УТ 11.4 заполнить Партнера в табличной части и настроить рекурсивные ссылки

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

При переходе с устаревших версий конфигураций, таких как УТ 10.2 на платформе 8.1, на современные системы вроде УТ 11.4, разработчики часто сталкиваются с изменением архитектуры справочников. Одной из самых заметных перемен стало разделение сущности «Контрагент» на две: Партнеры (управленческий учет) и Контрагенты (юридические лица). В этой статье мы подробно разберем, как с помощью «Конвертации данных 2.0» (КД 2.0) корректно перенести данные, если в источнике нужного реквизита нет в табличной части, а в приемнике он обязателен.

Различие архитектуры Партнеров и Контрагентов

Прежде чем приступать к написанию правил, проанализируем ситуацию. В УТ 10.2 справочник Контрагенты содержал в себе и управленческую, и юридическую информацию. В УТ 11.4 справочник Партнеры является иерархическим и определяет структуру холдинга, а Контрагенты — это лишь перечень юридических лиц, связанных с конкретными партнерами. Рассмотрим, как программно обеспечить связь этих объектов при переносе документов.

Проблема доступа к данным шапки из табличной части

Типичная ситуация: вы переносите документ (например, ПКО или Реализацию). В УТ 11 в табличной части документа появился обязательный реквизит Партнер. В исходном документе в УТ 10.2 этого реквизита в строках таблицы нет, но в шапке документа указан Контрагент. Выясним, как «подняться» из строки табличной части к реквизитам документа-владельца.

В «Конвертации данных 2.0» при выгрузке табличных частей (через ПКГС — Правила конвертации групп свойств) система предоставляет нам предопределенные переменные:

  1. ОбъектКоллекции — это текущая строка табличной части (структура или строка таблицы значений).
  2. Объект — это сам объект-владелец (весь документ-источник или справочник).

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

Решение 1: Прямое присвоение значения в ПКС

Разберем ситуацию, когда нам нужно заполнить Партнер в строке таблицы, используя Контрагента из шапки. Для этого в правиле конвертации свойства (ПКС) для реквизита Партнер выполним следующие действия:

  1. Оставим поле Источник пустым.
  2. В поле Правило укажем нужное ПКО (например, КонтрагентыВПартнеры).
  3. В обработчике «Перед выгрузкой» напишем код:

// Получаем контрагента из шапки документа-источника
Значение = Объект.Контрагент;

Таким образом, для каждой строки табличной части система будет брать контрагента из шапки документа и по правилу конвертации превращать его в ссылку на партнера в приемнике. Это стандартный и наиболее эффективный метод работы в КД 2.0.

Решение 2: Использование ИсходящихДанных для сложных случаев

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


ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Код", Объект.Контрагент.Код);
ИсходящиеДанные.Вставить("Наименование", Объект.Контрагент.Наименование);
// Дополнительные параметры, которых нет в строке ТЧ

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

Настройка рекурсивной ссылки (Головной контрагент)

Рассмотрим вторую часть вопроса: наличие реквизита ГоловнойКонтрагент, который ссылается на этот же справочник Контрагенты. Это называется рекурсивной ссылкой. В КД 2.0 это настраивается достаточно просто:

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

Важный нюанс: Если в источнике объект ссылается сам на себя (например, контрагент является головным для самого себя), убедитесь, что у вас корректно настроены Поля поиска. Обычно поиск идет по Уникальному Идентификатору (УИД), и КД 2.0 отлично справляется с циклическими ссылками автоматически.

Практические советы по работе с УТ 10.2

Поскольку УТ 10.2 базируется на платформе 8.1, при выгрузке данных следует учитывать несколько технических моментов:

Подведем итог: для успешной конвертации из УТ 10.2 в УТ 11.4 ключевым является понимание контекста выполнения кода. Используя переменную Объект внутри правил для табличных частей, вы получаете полный доступ ко всем данным документа-источника, что позволяет легко заполнять новые обязательные реквизиты приемника.

← На главную