Как найти отчет в конфигураторе или среди внешних обработок по его названию в интерфейсе 1С:ERP

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

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

Использование стандартного функционала Информация для технического специалиста

Начиная с современных версий платформы 1С:Предприятие 8.3, в распоряжении разработчика есть мощный встроенный инструмент. Если мы откроем форму нужного отчета в пользовательском режиме, в правом верхнем углу окна (кнопка с тремя точками или "Сервис и настройки") можно выбрать пункт "Информация для технического специалиста". Проанализируем, что это нам дает:

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

Анализ навигационной ссылки и ее расшифровка

Одним из самых надежных способов является получение навигационной ссылки объекта. Для этого, находясь в форме отчета, нажмем комбинацию клавиш Shift+F11 (или кнопку "Получить ссылку"). Мы получим строку вида e1cib/data/Справочник.ВариантыОтчетов?ref=ab58000c2971d06a11ebe54cee230eda. Разберем по шагам, как превратить эту ссылку в понятное имя объекта.

Поскольку ссылка ведет на элемент справочника ВариантыОтчетов, нам нужно найти этот элемент в базе и посмотреть, на какой именно отчет он ссылается. Мы можем воспользоваться консолью запросов или программным кодом для получения ссылки из внутреннего строкового представления. Проанализируем пример кода, который позволяет преобразовать навигационную ссылку в объект:


// Предположим, НС - это наша навигационная ссылка
ПерваяТочка = Найти(НС, "e1cib/data/");
ВтораяТочка = Найти(НС, "?ref=");

ПредставлениеТипа = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);
ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));
ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));

// Теперь получаем реальную ссылку на элемент справочника
СсылкаНаВариант = ЗначениеИзСтрокиВнутр(ЗначениеСсылки);

// Далее через точку обращаемся к реквизиту "Отчет"
ИмяОбъекта = СсылкаНаВариант.Отчет;

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

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

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


ВЫБРАТЬ
    ВариантыОтчетов.Ссылка КАК Вариант,
    ВариантыОтчетов.Отчет КАК ОбъектМетаданных,
    ВариантыОтчетов.ТипОтчета КАК ТипОтчета,
    ВариантыОтчетов.КлючВарианта КАК Ключ
ИЗ
    Справочник.ВариантыОтчетов КАК ВариантыОтчетов
ГДЕ
    ВариантыОтчетов.Наименование ПОДОБНО "%ВашеНазваниеОтчета%"

Разберем результаты запроса. Поле ТипОтчета подскажет нам, является ли отчет встроенным или дополнительным. Если отчет встроенный, в поле ОбъектМетаданных будет содержаться ссылка на ИдентификаторОбъектовМетаданных, из которого легко получить имя для поиска в конфигураторе. Если отчет внешний, мы увидим ссылку на элемент справочника дополнительных обработок.

Работа с отладчиком и стеком вызовов

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

  1. Запустим конфигурацию в режиме отладки.
  2. Откроем нужный отчет и нажмем кнопку формирования.
  3. В конфигураторе нажмем кнопку "Остановить" (Пауза).
  4. Откроем окно "Стек вызовов".

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

Глобальный поиск по макетам и синонимам

Если отчет встроен в конфигурацию, но его синоним отличается от того, что вы видите в интерфейсе (например, имя переопределено в коде), можно использовать Глобальный поиск (Ctrl+Shift+F). Выясним причину, по которой отчет может не находиться обычным поиском по имени:

Проверка через справочник Идентификаторы объектов метаданных

В конфигурациях на базе БСП (Библиотека стандартных подсистем), таких как ERP, важную роль играет справочник Идентификаторы объектов метаданных. Все объекты, участвующие в подсистемах (варианты отчетов, права доступа и т.д.), зарегистрированы в нем. Рассмотрим, как его использовать:

  1. Через функции для технического специалиста найдем справочник Идентификаторы объектов метаданных.
  2. В строке поиска введем наименование отчета.
  3. Найденная запись покажет нам "Полное имя" (например, Отчет.Продажи), которое мы сможем мгновенно найти в дереве конфигурации.

Особенности расширений конфигурации

Поскольку ваша ERP "переписана в хвост и в гриву", существует большая вероятность, что отчет добавлен или изменен в расширении. При глобальном поиске в конфигураторе убедитесь, что в области поиска выбраны все расширения. В дереве метаданных такие отчеты помечаются характерной иконкой. Помните, что логика отчета может находиться в основной конфигурации, а его форма или схема компоновки данных (СКД) могут быть полностью замещены в расширении. В этом случае искать нужно именно в модулях расширения, используя аннотации &Вместо или &После. Для быстрого поиска объектов метаданных внутри расширений можно воспользоваться инструментом для поиска по метаданным и управления расширениями.

Мониторинг журнала регистрации

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

  1. Перейдем в раздел Администрирование — Обслуживание — Журнал регистрации.
  2. Установим фильтр по текущему пользователю и времени запуска отчета.
  3. Ищем событие "Данные. Выполнение" или "Данные. Открытие".
  4. В колонке "Данные" часто отображается метаданное имя объекта, который был вызван платформой. Это кратчайший путь к пониманию того, с каким объектом мы имеем дело.

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

← На главную