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