К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как в 1С получить ссылку на отчет

Как в 1С получить ссылку на отчет: через метаданные, программно на встроенном языке, по навигационной ссылке. Примеры кода, типичные ошибки и ответы на вопросы.

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

Отчеты в 1С бывают двух типов: встроенные (описанные в конфигурации как объекты метаданных) и внешние (файлы .erf, подключаемые к базе). Для встроенного отчета не существует ссылки в том смысле, в каком она есть у справочника или документа, — отчет не является ссылочным объектом и не хранится в таблице данных. Поэтому «ссылкой» обычно называют либо навигационную ссылку вида e1cib/app/Отчет.ПродажиЗаПериод, либо программный объект Отчеты.ИмяОтчета, либо ссылку на вариант отчета в справочнике «Варианты отчетов».

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

Что считать ссылкой на отчет в 1С

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

  • Навигационная ссылка — строка вида e1cib/app/Отчет.ИмяОтчета, которую можно вставить в браузер, отправить коллеге или сохранить в избранное. Она открывает форму отчета в клиенте.
  • Программный объект отчета — обращение через менеджер отчетов Отчеты.ИмяОтчета, позволяющее создать объект, получить схему компоновки и сформировать результат.
  • Ссылка на вариант отчета — элемент справочника «Варианты отчетов» (в конфигурациях на Библиотеке стандартных подсистем). Это настоящая ссылочная сущность, которую можно хранить в реквизитах и передавать между объектами.

Ошибка выбора сущности — главная причина нерабочего кода. Например, попытка записать навигационную ссылку в реквизит типа «СправочникСсылка» не сработает, а поиск отчета методом НайтиПоНаименованию в справочнике бессмыслен, потому что отчет — не справочник.

Как получить навигационную ссылку на отчет через интерфейс

Самый простой способ — не требует программирования. Откройте нужный отчет в режиме «Предприятие», затем в главном меню (кнопка с тремя полосками или значок «Ещё» в зависимости от версии платформы) выберите команду «Получить ссылку» или «Вывести ссылку». В открывшемся окне платформа покажет навигационную ссылку, которую можно скопировать в буфер обмена.

Полученная строка будет выглядеть примерно так: e1cib/app/Отчет.АнализПродаж. Если база опубликована на веб-сервере, ссылка дополняется адресом публикации, и ее можно открыть в браузере. Такую ссылку удобно сохранить в избранное панели навигации — отчет будет доступен в один клик.

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

Как программно получить объект отчета и сформировать его

Для обращения к отчету из встроенного языка используется менеджер отчетов. Базовый пример — создание объекта отчета и получение его схемы компоновки данных:

ОтчетОбъект = Отчеты.АнализПродаж.Создать();

СхемаКД = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

Если нужно просто открыть форму отчета у пользователя, используйте метод ОткрытьФорму:

ОткрытьФорму("Отчет.АнализПродаж.Форма");

А для открытия отчета с конкретными параметрами передайте структуру параметров вторым аргументом:

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

ОткрытьФорму("Отчет.АнализПродаж.Форма", ПараметрыФормы);

Чтобы получить навигационную ссылку программно (например, для записи в регистр или отправки по почте), используйте функцию ПолучитьНавигационнуюСсылку. Для формы отчета она формируется конкатенацией: "e1cib/app/Отчет.АнализПродаж". Для объектов данных функция платформы вернет ссылку автоматически, но для отчета строку обычно собирают вручную, так как отчет не является ссылочным объектом.

bsl
НавигационнаяСсылка = "e1cib/app/Отчет.АнализПродаж";
ОтчетОбъект = Отчеты.АнализПродаж.Создать();
ОткрытьФорму("Отчет.АнализПродаж.Форма");

Как получить ссылку на вариант отчета

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

Найти нужный вариант можно запросом или методом менеджера справочника:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ ПЕРВЫЕ 1

| ВариантыОтчетов.Ссылка КАК Ссылка

|ИЗ

| Справочник.ВариантыОтчетов КАК ВариантыОтчетов

|ГДЕ

| ВариантыОтчетов.Наименование = &Наименование

| И НЕ ВариантыОтчетов.ПометкаУдаления";

Запрос.УстановитьПараметр("Наименование", "Продажи за месяц");

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

СсылкаНаВариант = Выборка.Ссылка;

КонецЕсли;

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

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

Как работать со ссылками на внешние отчеты

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

ВнешнийОтчет = ВнешниеОтчеты.Создать("C:\Отчеты\МойОтчет.erf", Ложь);

ВнешнийОтчет.СкомпоноватьРезультат();

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

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

Типичные ошибки при получении ссылки на отчет

Первая распространенная ошибка — попытка получить ссылку на встроенный отчет так, как это делается для справочников: через НайтиПоНаименованию или ПолучитьСсылку. У отчетов нет таблицы данных, и такие методы к ним неприменимы. Результат — ошибка компиляции или выполнения.

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

Третья ошибка — использование навигационной ссылки, полученной в одной базе, в другой базе с отличающейся конфигурацией. Четвертая — обращение к справочнику «Варианты отчетов» в самописной конфигурации без БСП, где этого справочника просто нет. Перед переносом кода проверяйте состав метаданных целевой базы.

Типичные ошибки
01
Поиск отчета методами справочника — у встроенного отчета нет ссылки-объекта, используйте Отчеты.ИмяОтчета
02
Использование синонима вместо имени метаданных — берите имя из конфигуратора
03
Перенос навигационной ссылки между разными базами — ссылка работает только в своей базе
04
Обращение к справочнику «Варианты отчетов» в конфигурации без БСП — такого объекта там нет

Как проверить, что ссылка получена правильно

Для навигационной ссылки проверка простая: вставьте ее в команду «Перейти по ссылке» (в главном меню клиента) или в браузер для веб-клиента. Должна открыться форма именно того отчета, который ожидался. Если открывается ошибка «Объект не найден» — проверьте имя отчета и текущую базу.

Для программного объекта убедитесь, что вызов Отчеты.ИмяОтчета.Создать() не вызывает исключения, а схема компоновки возвращается непустой. Для ссылки на вариант отчета проверьте, что запрос вернул строку, ссылка не пустая (Не Ссылка.Пустая()) и объект не помечен на удаление.

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

Контрольные точки

Как проверить результат

Навигационная ссылка
Норма

Открывается форма нужного отчета

Тревожный признак

Ошибка «Объект не найден» — неверное имя или другая база

Программный объект
Норма

Создать() выполняется без исключения

Тревожный признак

Ошибка компиляции — имя отчета не совпадает с метаданными

Ссылка на вариант
Норма

Ссылка непустая, объект не помечен на удаление

Тревожный признак

Пустая ссылка — вариант с таким наименованием не найден

Частые вопросы

Можно ли получить ссылку на отчет как на элемент справочника?

Нет. Встроенный отчет — это объект метаданных, а не объект данных, у него нет таблицы в базе и уникального идентификатора ссылки. Ближайшие аналоги — навигационная ссылка на форму отчета и ссылка на вариант отчета в справочнике «Варианты отчетов» в конфигурациях на БСП.

Как открыть отчет сразу с нужными настройками?

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

Почему код Отчеты.МойОтчет.Создать() выдает ошибку?

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

Как отправить коллеге ссылку на отчет?

Откройте отчет, получите навигационную ссылку через команду «Получить ссылку» и отправьте ее. Ссылка сработает, только если коллега работает в той же информационной базе и у него есть права на этот отчет.

Работает ли навигационная ссылка на отчет в веб-клиенте?

Да, если база опубликована на веб-сервере. Ссылка дополняется адресом публикации и открывается в браузере. При этом вариант отчета и права пользователя проверяются так же, как в тонком клиенте.

Как получить список всех отчетов конфигурации программно?

Переберите коллекцию Метаданные.Отчеты в цикле — у каждого элемента доступны имя и синоним. Это удобно для построения собственного меню отчетов или проверки существования отчета перед обращением к нему.