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