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