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

Отчеты и Аналитика · 11 мин

Как вывести варианты отчёта на форму в 1С

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

В управляемых формах 1С часто требуется показать пользователю список вариантов отчёта прямо на форме — например, на рабочем столе отдела, в панели руководителя или в форме собственной разработки. Платформа предоставляет для этого два основных механизма: стандартную панель вариантов отчётов и программный доступ к хранилищу вариантов через объект ХранилищеВариантовОтчетов.

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

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

Что такое варианты отчёта и где они хранятся

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

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

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

Способ 1. Стандартная панель вариантов на форме отчёта

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

Чтобы конкретный вариант появился в этой панели у пользователя, проверьте настройки видимости. В форме выбора варианта есть команда настройки видимости, где можно отметить, кому из пользователей вариант доступен. Без этой настройки пользовательский вариант виден только автору.

Для отчётов, размещённых в подсистемах, варианты дополнительно настраиваются в панели настройки раздела: там задаётся, какие варианты выводятся в списке отчётов подсистемы и какие открываются по умолчанию. Это удобно, когда нужно, чтобы на рабочем месте менеджера сразу были видны три-четыре рабочих варианта, а не весь список.

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

Способ 2. Программное получение списка вариантов

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

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

&НаСервере

Процедура ЗаполнитьВариантыОтчета()

КлючОтчета = "Отчет.ПродажиПоМенеджерам";

ТаблицаВариантов = ХранилищеВариантовОтчетов.ПолучитьТаблицу(КлючОтчета);

Для Каждого СтрокаВарианта Из ТаблицаВариантов Цикл

НоваяСтрока = ВариантыНаФорме.Добавить();

НоваяСтрока.КлючВарианта = СтрокаВарианта.КлючВарианта;

НоваяСтрока.Наименование = СтрокаВарианта.Наименование;

КонецЦикла;

КонецПроцедуры

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

bsl
ТаблицаВариантов = ХранилищеВариантовОтчетов.ПолучитьТаблицу("Отчет.ПродажиПоМенеджерам");

Вывод вариантов в реквизиты формы

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

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

&НаКлиенте

Процедура ВариантыНаФормеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

ТекущиеДанные = Элементы.ВариантыНаФорме.ТекущиеДанные;

Если ТекущиеДанные = Неопределено Тогда

Возврат;

КонецЕсли;

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

ПараметрыФормы.Вставить("КлючВарианта", ТекущиеДанные.КлючВарианта);

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

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

КонецПроцедуры

Параметр СформироватьПриОткрытии заставляет отчёт сразу выполниться с выбранным вариантом — пользователю не нужно дополнительно нажимать «Сформировать». Это стандартный параметр формы отчёта, поддерживаемый платформой и БСП.

Вывод вариантов в виде кнопок и декоративных элементов

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

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

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

Способы вывода вариантов на форму

Стандартная панель вариантов

Подходит для формы самого отчёта. Настраивается без кода, но внешний вид и место размещения фиксированы.

Таблица значений на форме

Гибкий вывод с произвольными колонками. Требует серверного кода заполнения и обработчика выбора.

Программные кнопки

Лучший вид для рабочих столов. Требует контроля количества вариантов и аккуратной работы с командами формы.

Список значений (выпадающий список)

Компактно при малом числе вариантов, но неудобно при длинных наименованиях и большом списке.

Проверка результата и типичные ошибки

После настройки проверьте результат под учётной записью реального пользователя, а не под администратором: у администратора видны все варианты, и проблемы с правами не проявятся. Убедитесь, что список заполняется, вариант открывается по двойному клику или кнопке, отчёт формируется с ожидаемыми настройками.

Наиболее частая ошибка — неверный ключ отчёта. Для отчёта конфигурации ключ имеет вид «Отчет.ИмяОтчета», для внешнего отчёта — «ВнешнийОтчет.ИмяФайла». Если ключ указан неправильно, ПолучитьТаблицу вернёт пустую таблицу без какого-либо сообщения об ошибке, и форма просто останется пустой.

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

Типичные ошибки
01
Неверный ключ отчёта — ПолучитьТаблицу возвращает пустоту без ошибки, форма остаётся пустой.
02
Вызов хранилища в клиентской процедуре — ошибка выполнения, код должен быть серверным.
03
Проверка только под администратором — проблемы с правами и видимостью вариантов не выявляются.
04
Отсутствие проверки ТекущиеДанные = Неопределено в обработчике выбора — ошибка при клике по пустой области таблицы.
05
Вывод всех вариантов без фильтра — на форме появляются служебные и чужие пользовательские варианты.

Ограничения и когда лучше обратиться к разработчику

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

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

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

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

Заполнение списка на форме
Норма

Список содержит ожидаемые варианты отчёта

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

Список пуст — проверьте ключ отчёта и права пользователя

Открытие варианта
Норма

Отчёт открывается и сразу формируется с нужными настройками

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

Открывается пустая форма или ошибка — проверьте ключ варианта и параметры

Видимость у пользователя
Норма

Пользователь видит только доступные ему варианты

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

Видны чужие или служебные варианты — добавьте фильтрацию или используйте механизмы БСП

Часто задаваемые вопросы

Можно ли вывести варианты отчёта на начальную страницу?

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

Почему ПолучитьТаблицу возвращает пустой результат?

Чаще всего указан неверный ключ отчёта (например, без префикса «Отчет.») или у текущего пользователя нет доступных вариантов этого отчёта. Проверьте ключ в конфигураторе и наличие вариантов в форме выбора варианта отчёта.

Как открыть отчёт с конкретным вариантом из кода?

Передайте в параметры формы отчёта структуру с ключом КлючВарианта и, при необходимости, СформироватьПриОткрытии = Истина. Форма отчёта применит указанный вариант при открытии.

Видны ли пользовательские варианты другим пользователям?

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

Как вывести варианты внешнего отчёта?

Так же, как для отчёта конфигурации, но ключ будет вида «ВнешнийОтчет.ИмяФайла». Учтите, что внешний отчёт должен быть подключён, иначе хранилище не сможет сопоставить варианты.

Нужно ли изменять типовую конфигурацию для вывода вариантов на свою форму?

Нет. Собственная форма обработки с программным заполнением списка вариантов не требует изменения типовых объектов. Для доработки типовой формы отчёта используйте расширение конфигурации.

Итог

Что важно запомнить

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