Как исправить ошибку «Поле объекта не обнаружено (Хранилище вариантов)» при регистрации внешнего отчета в 1С

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

При работе с внешними отчетами и обработками в среде 1С:Предприятие 8.3 разработчики часто сталкиваются с ошибкой «Поле объекта не обнаружено (Хранилище вариантов)». Эта проблема обычно возникает в момент загрузки файла в справочник «Дополнительные отчеты и обработки», поэтому важно проводить регулярный анализ конфигураций, расширений, отчетов и обработок на наличие ошибок. Ошибка сигнализирует о том, что программные механизмы системы пытаются обратиться к свойству метаданных, которое отсутствует у данного объекта или не определено в его настройках. Рассмотрим подробно причины возникновения этой ситуации и разберем по шагам способы её решения.

Причина 1: Несоответствие типа файла и вида регистрации

Проанализируем механику работы платформы 1С с внешними файлами. Существует два основных типа файлов для расширения функционала: .erf (внешний отчет) и .epf (внешняя обработка), разработку которых удобнее вести через плагин для VS Code. Главное техническое различие между ними заключается в том, что у отчета (ERF) на уровне метаданных существует стандартное свойство Хранилище вариантов, предназначенное для работы с настройками компоновки данных (СКД). У обработки (EPF) такого свойства нет.

Выясним причину ошибки: если вы пытаетесь зарегистрировать файл как «Дополнительный отчет», но при этом сам файл является обработкой (EPF), или в коде регистрации допущена логическая ошибка, система выдаст искомое исключение. Рассмотрим пример кода в модуле объекта, который часто становится источником проблемы:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    // Ошибка может быть здесь:
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет;
    ...
    Возврат ПараметрыРегистрации;
КонецФункции

Если ваш файл физически является обработкой, а в коде указан вид ДополнительныйОтчет, система БСП попытается прочитать свойство ХранилищеВариантов из метаданных файла и, не найдя его, прервет работу. Для исправления ситуации необходимо привести в соответствие вид обработки:


// Для внешней обработки (.epf) правильно использовать:
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка;

Причина 2: Незаполненное свойство «Хранилище вариантов» в ERF-файле

Бывают ситуации, когда файл имеет расширение .erf и регистрируется как отчет, но ошибка все равно сохраняется. Рассмотрим подробнее структуру самого отчета в Конфигураторе. Откройте ваш внешний отчет, перейдите в его свойства (корень дерева метаданных отчета) и найдите строку Хранилище вариантов.

В типовых конфигурациях (таких как БП 3.0, УТ 11, ERP) это поле должно быть заполнено значением ХранилищеВариантовОтчетов. Если это поле пустое, программный код БСП при регистрации может споткнуться на проверке:


Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
    РегистрационныеДанные.ХранилищеВариантов = ВнешнийОбъектМетаданные.ХранилищеВариантов.Имя;
КонецЕсли;

Что нужно сделать:

  1. Откройте отчет в Конфигураторе как внешний файл.
  2. В палитре свойств найдите пункт Хранилище вариантов.
  3. Выберите из выпадающего списка ХранилищеВариантовОтчетов (или аналогичное, принятое в вашей конфигурации).
  4. Сохраните файл и повторите попытку регистрации.

Причина 3: Конфликты с устаревшими подсистемами

Проанализируем ситуацию, когда отчет переносится из старой базы в новую. В сообщениях форума упоминается проблема, когда система ругается на отсутствие полей типа Руководителю82. Это происходит потому, что в модуле внешнего отчета могут быть жестко прописаны обращения к подсистемам, которые были удалены или переименованы в новых релизах конфигураций.

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

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

Рассмотрим пример корректировки назначения отчета:


// Вместо обращения к конкретным подсистемам, которые могут отсутствовать:
// ПараметрыРегистрации.Назначение.Добавить(Метаданные.Подсистемы.СтараяПодсистема); 

// Используйте строковые идентификаторы объектов, к которым привязан отчет:
ПараметрыРегистрации.Назначение.Добавить("Справочник.Контрагенты");
ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");

Причина 4: Проблемы в самописных конфигурациях

Если вы работаете в полностью самописной конфигурации, где БСП внедрена частично или отсутствует вовсе, добавление «Хранилища вариантов» в свойства отчета может не помочь, если само хранилище не определено в корне всей конфигурации. Посмотрим на настройки всей базы:

  1. В Конфигураторе выделите корень дерева метаданных (название конфигурации).
  2. В свойствах найдите пункт Хранилище вариантов отчетов.
  3. Если там пусто, необходимо создать объект типа Хранилище настроек или использовать стандартное, если оно предусмотрено вашей архитектурой.

Без этой глобальной настройки платформа может игнорировать локальные настройки внешних файлов отчетов.

Рекомендации по отладке и кэшированию

Иногда после внесения всех исправлений ошибка продолжает появляться. Рассмотрим нюанс с кэшированием метаданных. Платформа 1С может кэшировать структуру внешней обработки при неудачной попытке регистрации. Чтобы гарантированно применить изменения, выполните следующие шаги:

  1. В модуле отчета измените версию (например, с "1.0" на "1.1") в переменной ПараметрыРегистрации.Версия.
  2. Полностью удалите карточку отчета из справочника Дополнительные отчеты и обработки.
  3. Запишите изменения и создайте новую карточку, выбрав исправленный файл.
  4. Если ошибка сохраняется, воспользуйтесь отладчиком. Установите точку останова в общем модуле ДополнительныеОтчетыИОбработки (процедура загрузки/регистрации) и посмотрите, на каком именно объекте спотыкается система. Часто это помогает увидеть, что программа обращается вовсе не к тому «Хранилищу», о котором вы думали.

Важный момент для разработчиков: Если ваш отчет не использует сложную систему вариантов СКД и строится на простой форме, попробуйте изменить его вид на ДополнительнаяОбработка. Это самый быстрый способ обойти проверки БСП, связанные с ХранилищемВариантов, при этом функциональность отчета для пользователя никак не изменится.

← На главную