Как программно управлять составом панели навигации формы в 1С:Предприятие 8?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Вопрос об изменении состава панели навигации справочника в режиме исполнения возникает у многих разработчиков. Часто требуется скрыть определенные пункты (например, «Договоры» или «Банковские счета») для определенных пользователей или при наступлении определенных условий. Давайте разберем, какие возможности нам предоставляет платформа 1С для решения этой задачи.

Ограничения платформы

Первое, что необходимо уяснить: платформа 1С не предусматривает прямого доступа к командам панели навигации через код формы, аналогично тому, как мы управляем видимостью обычных полей через свойство Элементы.ИмяЭлемента.Видимость. Системные команды, расположенные в группах «Перейти» и «См. также», формируются автоматически на основе состава метаданных и прав доступа. Поэтому попытка найти простое свойство для их отключения будет безуспешной.

Метод 1: Настройка в конфигураторе через расширение

Если ваша задача — просто скрыть пункты навсегда для всех пользователей, не затрагивая основной код конфигурации, самым надежным способом будет использование расширения.

  1. Добавьте форму справочника в расширение конфигурации.
  2. В окне редактирования формы найдите вкладку «Командный интерфейс».
  3. В правой части окна раскройте группы «Перейти» и «См. также».
  4. Снимите флаги видимости с объектов, которые не должны отображаться в панели навигации.
  5. Сохраните изменения и обновите конфигурацию.

Этот способ является наиболее «чистым», так как он не требует написания кода и полностью опирается на штатные механизмы платформы.

Метод 2: Использование функциональных опций

Если видимость элементов должна зависеть от условий, нам на помощь приходят Функциональные опции. Это идеологически правильный механизм 1С для управления интерфейсом.

Для реализации этого метода:

  1. Создайте Функциональную опцию (ФО) и свяжите ее с нужным объектом метаданных (например, подчиненным справочником).
  2. Привяжите эту опцию к параметрам сеанса или константе.
  3. Используйте метод УстановитьПараметрыФункциональныхОпцийИнтерфейса для динамического управления видимостью.

Рассмотрим пример кода для управления видимостью «на лету»:


// В модуле формы или управляемого приложения
ПараметрыФО = Новый Структура;
ПараметрыФО.Вставить("МояФункциональнаяОпция", Истина);
УстановитьПараметрыФункциональныхОпцийИнтерфейса(ПараметрыФО);

Этот метод позволяет менять видимость без необходимости перезапуска сеанса пользователя. Важно помнить, что если вы привязываете объект к функциональной опции, он может пропасть не только в панели навигации, но и в других частях системы. Поэтому тщательно проектируйте связи между объектами и ФО.

Метод 3: Работа с правами доступа

Никогда не забывайте про возможности Ролей. Платформа 1С автоматически исключает из панели навигации все команды, на которые у текущего пользователя нет прав. Если ваша задача — скрыть функционал для определенных групп пользователей, проще всего создать отдельную роль, в которой убрать доступ к чтению или просмотру объектов. Это самый безопасный способ, который гарантирует, что пользователь не сможет получить доступ к данным через другие формы или отчеты.

Почему не стоит использовать манипуляции с хранилищем настроек?

Иногда возникает идея программно записывать настройки формы в ХранилищеОбщихНастроек. Мы настоятельно не рекомендуем этот метод. Он является «костыльным», так как пользователь в любой момент может зайти в меню настройки панели навигации и вернуть всё обратно. Программное навязывание настроек пользователю — это плохой тон разработки, который приводит к конфликтам с интерфейсом.

Резюме

При решении задачи по изменению состава панели навигации следуйте этим рекомендациям:

Комбинируя эти подходы, вы сможете добиться требуемого поведения системы, сохраняя при этом ее стабильность и обновляемость.

← На главную