При разработке и адаптации типовых бухгалтерских отчетов (например, «Карточка счета», «Оборотно-сальдовая ведомость» и др.) в конфигурациях «1С:ERP Управление предприятием», «1С:Комплексная автоматизация» или «1С:Бухгалтерия предприятия» разработчики часто сохраняют типовой отчет во внешний файл с расширением .erf. Однако при попытке открыть такой файл в режиме «1С:Предприятие» возникает критическая ошибка:
Объект метаданных не найден по полному имени: "ВнешнийОтчет.КарточкаСчета".
ВызватьИсключение ЗаголовокОшибки + Символы.ПС + Символы.ПС + ОписаниеОшибки()
Разберем подробнее, почему возникает данная ситуация, как устроена работа подсистемы бухгалтерской отчетности и какими путями можно решить эту проблему без изменения основной конфигурации.
Проанализируем архитектуру типовых решений на базе Библиотеки Стандартных Подсистем (БСП) и подсистемы бухгалтерских отчетов:
Отчеты[ИмяОтчета]. Для внешнего отчета такая конструкция возвращает ошибку или Неопределено.БухгалтерскиеОтчетыВызовСервера или функции работы с метаданными). Они пытаются получить объект по полному имени через Метаданные.НайтиПоПолномуИмени() или через справочник «Идентификаторы объектов метаданных». Так как внешнего отчета нет в дереве конфигурации, система формирует имя вида ВнешнийОтчет.ИмяОтчета и аварийно завершает работу с исключением.Рассмотрим основные способы решения задачи в зависимости от стоящих перед разработчиком целей.
Если нам необходимо сохранить типовую форму отчета и ее интерфейс, разберем по шагам, как переписать внутренние вызовы:
// Типовой вызов менеджера:
// МенеджерОтчета = Отчеты[БухгалтерскиеОтчетыКлиентСервер.ПолучитьИдентификаторОбъекта(Форма)];
// МенеджерОтчета.СформироватьОтчет(...);
ОбъектОтчета = РеквизитФормыВЗначение("Отчет");
ОбъектОтчета.СформироватьОтчет(...);
БухгалтерскиеОтчетыВызовСервера.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ);
Копируем исходный код этих процедур напрямую в модуль объекта нашего внешнего отчета и вызываем локальные методы вместо процедур общего модуля.Во многих практических задачах весь функционал типовой формы бухгалтерского отчета не требуется — нужны только структура запроса, поля и группировки. В этом случае наиболее чистым и поддерживаемым решением будет перенос схемы:
Если требуется внести изменения в типовой отчет, сохранив конфигурацию на полной поддержке поставщика, самым надежным способом является использование механизма расширений (.cfe):
&Вместо, &Перед или &После, избегая любых проблем с поиском метаданных в общих модулях БСП.Таким образом, для быстрой модификации логики лучше использовать механизм расширений, а для автономного отчета — либо полностью очистить его от зависимостей подсистемы бухгалтерских отчетов, либо реализовать его на базе чистого СКД.