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