Почему отчеты в 1С не группируются по подсистемам как документы и как это исправить?

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

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

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

Техническая причина: разница между Панелью навигации и Панелью действий

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

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

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

Решение 1: Использование пользовательских групп команд в Конфигураторе

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

Выполним следующие действия по шагам:

  1. Откроем дерево метаданных в конфигураторе и найдем родительскую подсистему Отчеты.
  2. Кликнем по ней правой кнопкой мыши и выберем пункт «Открыть командный интерфейс».
  3. Обратим внимание на дерево групп команд. Платформа позволяет создавать собственные группы внутри стандартных разделов панели действий.
  4. Создадим новую группу команд. Для этого выделим ветку «Панель действий.Отчеты» и нажмем кнопку добавления группы. Создадим две группы: «Отчеты по закупкам» и «Отчеты по продажам».
  5. В свойствах созданных групп укажем понятное представление для пользователя.
  6. Теперь перейдем к настройке видимости команд. Перетащим команды открытия конкретных отчетов в созданные нами группы команд.
  7. Сохраним конфигурацию базы данных и запустим режим «1С:Предприятие». Теперь на панели действий наши отчеты будут четко разделены по созданным вручную группам.

Решение 2: Использование собственных команд отчетов

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

Рассмотрим этот алгоритм подробнее:

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

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    // Открываем основную форму нашего отчета программно
    ОткрытьФорму("Отчет.ПродажиПоКонтрагентам.Форма", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры

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

Решение 3: Проектирование интерфейса по современным стандартам «1С»

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

Разберем, почему это так, и как правильно проектировать структуру приложения:

Поэтому правильным архитектурным решением будет отказаться от родительской подсистемы Отчеты. Вместо этого отчеты по закупкам следует поместить непосредственно в раздел Закупки, а отчеты по продажам — в раздел Продажи.

Решение 4: Использование механизма БСП «Варианты отчетов»

В современных конфигурациях (таких как УТ 11, ERP, БП 3.0, УНФ), созданных на базе Библиотеки Стандартных Подсистем (БСП), стандартный вывод команд отчетов в панель действий практически никогда не используется. Вместо этого применяется мощный и гибкий механизм подсистемы «Варианты отчетов».

Как это работает на практике:

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

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


Процедура НастроитьВариантыОтчетов(Настройки) Экспорт
    
    // Укажем настройки для нашего нового отчета по продажам
    ОписаниеОтчета = Настройки.ОписанияОтчетов.Добавить();
    ОписаниеОтчета.Отчет = Метаданные.Отчеты.ПродажиПоКонтрагентам;
    
    // Привязываем отчет к функциональному разделу "Продажи"
    ОписаниеОтчета.Разделы.Добавить(Метаданные.Подсистемы.Продажи);
    
    // Определяем группу внутри раздела для визуального разделения
    ОписаниеОтчета.Группа = "Анализ продаж";
    
КонецПроцедуры

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

← На главную