Возникла необходимость найти конкретный отчёт, однако в системе был доступен лишь элемент навигации, ведущий на вариант этого отчёта. Более простого решения для непосредственного получения самого объекта мне обнаружить не удалось, поэтому был выбран следующий метод: конвертация навигационной ссылки в прямую ссылку на объект отчёта.
Как это часто бывает в разработке, не пришлось изобретать велосипед — готовое решение было найдено в интернете и успешно адаптировано.
Стоит отметить, что данный подход универсален. Если требуется найти не отчёт, а любой другой объект метаданных, можно воспользоваться отладчиком, устанавливая точки останова (F9) и анализируя контекст выполнения.
&НаСервере
Процедура Команда1НаСервере()
// Вставить содержимое обработчика.
Об =ПолучитьСсылкуИзНавигационной(НС);
сообщить(Об.Отчет);
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры
&НаСервере
Функция ПолучитьСсылкуИзНавигационной(НС) Экспорт
ПерваяТочка = Найти(НС, "e1cib/data/");
ВтораяТочка = Найти(НС, "?ref=");
ПредставлениеТипа = Сред(НС, ПерваяТочка + 11, ВтораяТочка - ПерваяТочка - 11);
ШаблонЗначения = ЗначениеВСтрокуВнутр(ПредопределенноеЗначение(ПредставлениеТипа + ".ПустаяСсылка"));
ЗначениеСсылки = СтрЗаменить(ШаблонЗначения, "00000000000000000000000000000000", Сред(НС, ВтораяТочка + 5));
Возврат ЗначениеИзСтрокиВнутр(ЗначениеСсылки);
КонецФункции
Примерный алгоритм применения можно увидеть в приведенном коде или приложенной обработке. Вызывается через "Файл" - "Открыть". Пример будет работоспособен на любой конфигурации на управляемых формах.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.24.62
Вступайте в нашу телеграмм-группу Инфостарт