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