Как исправить ошибку «Поле объекта не обнаружено» при загрузке правил синхронизации в КД3?

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

При настройке обмена через универсальный формат в конфигурации 1С:Конвертация данных 3.0 (КД3) специалисты часто сталкиваются с ошибкой выполнения обработки ЗагрузкаПравилСинхронизацииИзФайлов. Вызов ошибки выглядит следующим образом:

{Обработка.ЗагрузкаПравилСинхронизацииИзФайлов.Форма.Форма.Форма(475)}: Поле объекта не обнаружено ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентиф...

В этой статье мы подробно разберем, почему возникает данное исключение, рассмотрим регламентный порядок загрузки правил и изучим несколько рабочих способов устранения проблемы.

Проанализируем причину возникновения ошибки

Выясним причину, почему платформа 1С выдает сбой при попытке обратиться к менеджеру перечислений. В правилах конвертации объектов (ПКО), которые предназначены только для отправки данных (односторонние правила), вариант идентификации объектов не заполняется. Из-за этого при формировании файлов правил выгружается пустой атрибут: ВариантИдентификации="".

В платформе 1С обращение к значениям перечисления по строковому имени выполняется с помощью квадратных скобок: Перечисления.ВариантыИдентификацииОбъектов[ИмяВарианта]. Если передать туда пустую строку "", платформа не возвращает пустую ссылку или Неопределено, а генерирует ошибку времени выполнения «Поле объекта не обнаружено», воспринимая пустую строку как попытку обратиться к несуществующему реквизиту объекта.

Пошаговый регламент загрузки правил в Конвертацию данных 3.0

Прежде чем переходить к исправлению ошибки, разберем правильную последовательность действий для корректной загрузки правил синхронизации в КД3:

  1. Загрузка структуры формата: с помощью обработки Загрузка структуры формата в информационную базу КД3 загружается используемый формат данных.
  2. Загрузка структуры конфигурации: из рабочей базы выгружается структура метаданных (с помощью специальной обработки) и загружается в КД3 через обработку Загрузка структуры конфигурации.
  3. Создание элемента справочника «Конвертации»: в базе КД3 создается запись, в которой указывается целевая конфигурация и поддерживаемые версии формата.
  4. Подготовка файлов в источнике: в информационной базе (например, Комплексная автоматизация или Управление торговлей) запускается обработка Выгрузка правил синхронизации через универсальный формат. Она формирует комплект XML-файлов с правилами.
  5. Сохранение модуля менеджера: из Конфигуратора рабочей базы сохраняется в текстовый файл общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
  6. Загрузка правил: в базе КД3 открывается обработка Загрузка правил синхронизации из файлов, указывается каталог со сформированными файлами, выбирается нужная конвертация и модуль менеджера обмена.

Способ 1. Быстрое исправление в XML-файле PKO.xml

Если требуется срочно загрузить правила без изменения конфигурации КД3 и написания кода, разберем вариант с корректировкой выгруженного файла правил. Посмотрим на алгоритм действий:

  1. Перейдем в каталог, куда были выгружены файлы правил синхронизации.
  2. Откроем файл PKO.xml в любом текстовом редакторе (например, Notepad++).
  3. Воспользуемся функцией поиска и замены по файлу.
  4. Заменим все вхождения ВариантИдентификации="" на значение по умолчанию, например: ВариантИдентификации="ПоУникальномуИдентификатору".
  5. Сохраним файл PKO.xml и повторим загрузку правил через обработку.

Способ 2. Исправление кода загрузки через расширение или Конфигуратор

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

В модуле формы обработки ЗагрузкаПравилСинхронизацииИзФайлов найдем процедуру ЗагрузитьПКО и заменим прямое обращение к перечислению на проверку с помощью функции ЗначениеЗаполнено():


Если ЗначениеЗаполнено(СтруктураАтрибутов.ВариантИдентификации) Тогда
    ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентификации];
Иначе
    ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов.ПустаяСсылка();
КонецЕсли;

Данную доработку рекомендуется выполнять через расширение конфигурации, чтобы не снимать информационную базу Конвертации данных 3.0 с типовой поддержки.

Способ 3. Обновление релиза КД3 и внешних обработок

Проанализируем еще один системный вариант решения. Ошибка чтения пустых значений вариантов идентификации была исправлена разработчиками в более свежих релизах конфигурации Конвертация данных, редакция 3.0, а также в обновленных версиях обработки ВыгрузкаПравилСинхронизацииЧерезУниверсальныйФормат.epf. Обновление базы КД3 и используемых выгрузчиков устраняет необходимость вручную править XML-файлы или дописывать код обмена.

← На главную