Как исправить ошибку «Метод объекта не обнаружен (УникальныйИдентификатор)» при выгрузке данных через Универсальный обмен XML?

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

При настройке правил обмена в конфигурации «Конвертация данных» (ред. 2.1) и последующей выгрузке документов через обработку «Универсальный обмен данными в формате XML» разработчики нередко сталкиваются с исключением:

Ошибка при выгрузке данных: Метод объекта не обнаружен (УникальныйИдентификатор)

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

Причина ошибки и особенности работы платформы

В платформе 1С:Предприятие метод УникальныйИдентификатор() определен только для ссылочных типов хранения данных, обладающих глобальным идентификатором (GUID). К ним относятся:

  1. СправочникСсылка
  2. ДокументСсылка
  3. ПланВидовХарактеристикСсылка
  4. ПланСчетовСсылка
  5. ПланВидовРасчетаСсылка
  6. ПланОбменаСсылка

Однако значения перечислений (ПеречислениеСсылка), примитивные типы (числа, строки, булево, даты), системные значения (Неопределено, NULL), а также объекты (например, СправочникОбъект или ДокументОбъект) данным методом не обладают.

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

Пошаговое решение проблемы при конвертации перечисления в справочник

Рассмотрим, как правильно настроить перенос, когда в базе-источнике реквизит имеет тип «Перечисление», а в базе-приемнике — «Справочник»:

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

Другие распространенные ситуации возникновения ошибки

Проанализируем другие типовые сценарии, приводящие к аналогичной ошибке:

  1. Обращение к объекту вместо ссылки в обработчиках событий: Если в коде обработчиков ПКО («Перед выгрузкой», «При выгрузке») вызывается Источник.УникальныйИдентификатор(), а в качестве источника передан объект, возникнет ошибка. Корректный вызов для объекта выглядит так: Источник.Ссылка.УникальныйИдентификатор().
  2. Программный вызов функции ВыгрузитьПоПравилу(): При передаче структуры, строки или неопределенного значения в ПКО, в котором включен поиск по GUID.
  3. Реквизиты составного типа: Если реквизит может содержать как ссылку на справочник, так и примитивное значение (или пустое значение типа Неопределено), перед выгрузкой по правилу необходимо убедиться, что значение действительно является ссылкой.

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

Если в правилах много объектов и сложно определить, на каком именно реквизите прерывается обмен, воспользуемся штатным механизмом отладки:

  1. В конфигурации «Конвертация данных» нажмем кнопку «Выгрузка модуля отладки» и сохраним сформированный текстовый файл.
  2. В рабочей базе-источнике откроем обработку «Универсальный обмен данными в формате XML» и перейдем на вкладку «Отладка выгрузки».
  3. Включим режим отладки, подключим сохраненный алгоритм и запустим выгрузку в режиме отладки конфигуратора.
  4. Точка останова сработает точно на проблемном свойстве или объекте, что позволит мгновенно увидеть несовместимый тип данных в переменной Источник.
← На главную