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