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