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