Как настроить перенос двух разных объектов в один в Конвертации данных 2.0 и исправить ошибку поиска свойства

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

При разработке правил обмена в конфигурации «Конвертация данных 2.0» часто возникает задача объединения нескольких типов источников в один целевой тип приемника. Например, в конфигурации-источнике начисления ведутся в двух разных планах видов расчета — ОсновныеНачисленияОрганизаций и ДополнительныеНачисленияОрганизаций, а в конфигурации-приемнике существует только один общий план видов расчета ОсновныеНачисленияОрганизаций. Ниже мы разберем, как правильно организовать правила конвертации объектов и реквизитов, а также рассмотрим решение распространенной ошибки при произвольной выгрузке табличных частей.

Структура ПКО и ПВД для объединения двух объектов

Для перегрузки двух независимых планов видов расчета в один целевой объект необходимо создать два отдельных Правила Конвертации Объектов (ПКО):

  1. ПКО 1: Источник — ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций, Приемник — ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций.
  2. ПКО 2: Источник — ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций, Приемник — ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций.

Для каждого ПКО создается свое Правило Выгрузки Данных (ПВД), чтобы объекты обоих типов могли выгружаться независимо при полном или частичном обмене.

Привязка нескольких ПКО к реквизиту или колонке табличной части

Когда ссылка на вид расчета встречается в качестве реквизита документа или колонки табличной части, возникает вопрос: как указать правило конвертации для этого реквизита? Рассмотрим два основных подхода.

Способ 1. Автоматическое определение правила платформой

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

Способ 2. Явное назначение ПКО в обработчике «Перед выгрузкой»

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


Если ЗначениеЗаполнено(ОбъектКоллекции.ВидРасчета) Тогда
    Если ТипЗнч(ОбъектКоллекции.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") Тогда
        ИмяПКО = "ОсновныеНачисленияОрганизаций";
    ИначеЕсли ТипЗнч(ОбъектКоллекции.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") Тогда
        ИмяПКО = "ДополнительныеНачисленияОрганизаций";
    КонецЕсли;
    Значение = ОбъектКоллекции.ВидРасчета;
КонецЕсли;

Причина ошибки «Поле объекта не обнаружено» (Код 17) и ее устранение

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

Ошибка получения значения свойства подчиненного объекта ... ОписаниеОшибки = Поле объекта не обнаружено

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

Для исправления ошибки разберем по шагам следующие действия:

  1. Перейдем в настройки ПКС реквизита ВидРасчета в табличной части документа.
  2. Полностью очистим поле «Источник» (оставим его пустым).
  3. В обработчике «Перед выгрузкой» данного ПКС укажем явную передачу значения из строки таблицы: Значение = ОбъектКоллекции.ВидРасчета;

После очистки поля «Источник» платформа КД 2.0 прекратит попытки автоматического обращения к объекту по имени реквизита и берет значение напрямую из переменной Значение, успешно применяя необходимое ПКО по типу ссылки.

← На главную