Как найти отчет в конфигураторе 1С 8.3, если его название в программе не совпадает с именем объекта метаданных?

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

При работе с современными конфигурациями 1С, такими как Управление торговлей 11, ERP 2 или Комплексная автоматизация, разработчики часто сталкиваются с ситуацией, когда отчет в режиме «Предприятие» называется одним образом, а в дереве метаданных конфигуратора найти его по этому имени невозможно. Это происходит из-за того, что в современных системах активно используется «Библиотека стандартных подсистем» (БСП), которая позволяет создавать множество «вариантов» одного и того же отчета с произвольными заголовками.

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

Причина сложности поиска: механизм вариантов отчетов

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

Метод 1: Поиск через отладку процедуры открытия формы

Это один из самых надежных способов, который позволяет увидеть «внутреннюю кухню» системы в момент запуска отчета. Разберем по шагам, как это сделать:

  1. Запустим базу в режиме конфигуратора и перейдем в режим отладки.
  2. В конфигураторе откроем глобальный поиск (Ctrl + Shift + F) и найдем процедуру ОткрытьФормуОтчета в общем модуле ВариантыОтчетовКлиент.
  3. Установим точку останова (клавиша F9) на строке, где вызывается функция ОткрытьФорму. Обычно это выглядит так:

// В модуле ВариантыОтчетовКлиент находим фрагмент:
ПолноеИмяОтчета = Вид + "." + ПараметрыОткрытия.ИмяОтчета;
// ...
ОткрытьФорму(ПолноеИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Истина);

Затем перейдем в режим «Предприятие» и нажмем на нужный нам отчет. Программа «зависнет», и управление передастся в конфигуратор. Рассмотрим значения переменных в этой точке. Переменная ПолноеИмяОтчета будет содержать строку вида Отчет.НазваниеНужногоОбъекта. Это и есть то имя, которое нужно искать в дереве конфигурации.

Рассмотрим более подробный пример кода, который может встретиться в типовых конфигурациях при открытии варианта:


Процедура ОткрытьФормуОтчета(Знач ФормаВладелец, Знач Вариант, Знач ДополнительныеПараметры = Неопределено) Экспорт
    Тип = ТипЗнч(Вариант);
    // ... логика определения параметров ...
    Если ПараметрыОткрытия.ТипОтчета = "Внутренний" Или ПараметрыОткрытия.ТипОтчета = "Расширение" Тогда
        Вид = "Отчет";
    ИначеЕсли ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда
        Вид = "ВнешнийОтчет";
    КонецЕсли;
    
    ПолноеИмяОтчета = Вид + "." + ПараметрыОткрытия.ИмяОтчета;
    // В этой строке через Shift+F9 смотрим значение ПолноеИмяОтчета
    ОткрытьФорму(ПолноеИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Истина);
КонецПроцедуры

Метод 2: Использование режима «Функции для технического специалиста»

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

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

Метод 3: Инструмент «Информация для разработчика»

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

  1. Откроем отчет, который не можем найти, в режиме «Предприятие».
  2. В верхнем правом углу нажмем на кнопку «Сервис и настройки» (значок «три полоски» или «шестеренка»).
  3. Выберем пункт «Справка» — «Информация для разработчика».
  4. В появившемся окне нас интересует строка «Форма». Там будет указан путь, например: Отчет.УправленческийБаланс.Форма.ФормаОтчета.

Это самый быстрый способ. Объект УправленческийБаланс и будет искомым именем в конфигураторе.

Метод 4: Справочник «Варианты отчетов»

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

  1. Через «Функции для технического специалиста» найдем справочник «Варианты отчетов».
  2. В списке найдем запись, название которой совпадает с названием нашего «загадочного» отчета.
  3. Откроем карточку этой записи. В поле «Отчет» будет указана ссылка на основной объект метаданных.
  4. Нажав на кнопку выбора или «лупу» в этом поле, мы увидим реальное имя отчета.

Метод 5: Проверка расширений конфигурации

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

  1. В конфигураторе выберем меню «Конфигурация» — «Расширения конфигурации».
  2. Откроем каждое имеющееся расширение (двойным кликом по строке «Конфигурация» в окне расширения).
  3. Проверим ветку «Отчеты» внутри каждого расширения.

Метод 6: Использование замера производительности

Если отчет формируется, но мы не понимаем, откуда он берет данные (например, если это отчет на базе Обработки), используем «Замер производительности»:

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

Заключение

Мы рассмотрели основные методы идентификации объектов в 1С 8.3. Чаще всего комбинация использования «Информации для разработчика» и отладки в общем модуле вариантов отчетов позволяет найти любой, даже самый глубоко «спрятанный» отчет в типовых конфигурациях. Помните, что в УТ 11 и ERP данные отчетов почти всегда строятся на Системе Компоновки Данных (СКД), поэтому после нахождения отчета в конфигураторе обязательно загляните в его Основную схему компоновки данных на вкладку «Настройки», чтобы увидеть, как именно формируются поля вывода. Для анализа и диагностики схемы компоновки данных можно использовать инструмент для отладки отчетов на СКД.

← На главную