К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как программно скрыть панель навигации формы в 1С 8.3

Как программно скрыть панель навигации формы в 1С 8.3: свойства формы, отображение команд, динамическое управление видимостью, типичные ошибки и FAQ.

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

Типовые сценарии, когда панель навигации мешает: форма встроена в интерфейс помощника пошагового ввода, объект является вспомогательным и ссылки на него из других списков не нужны, пользователи работают с формой в упрощённом режиме, либо навигационные команды дублируют кнопки, уже выведенные разработчиком на форму. Во всех этих случаях панель управляется штатными средствами платформы — без внешних компонент.

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

Что такое панель навигации и чем она управляется

В управляемом приложении верхняя часть формы объекта, списка или отчёта содержит две логические области: панель команд (кнопки действий) и панель навигации (команды перехода). Панель навигации заполняется автоматически: платформа собирает команды, объявленные в командном интерфейсе объекта метаданных, — переходы к регистрам сведений, где объект является измерением, к связанным справочникам, к подчинённым спискам.

Именно поэтому попытка найти панель навигации в дереве элементов формы в конфигураторе ни к чему не приведёт — её там нет. Управление выполняется двумя путями: настройкой видимости конкретных команд в командном интерфейсе объекта и установкой свойства формы, которое скрывает панель целиком. Первый способ влияет на содержимое панели во всех формах объекта, второй — только на конкретную форму.

Скрытие панели навигации через свойства формы в конфигураторе

Самый простой и надёжный способ — отключить панель декларативно, без единой строки кода. Откройте форму в конфигураторе, выделите корневой элемент «Форма» в дереве элементов и откройте палитру свойств. Найдите свойство «Отображение панели навигации» (ОтображениеПанелиНавигации) и установите значение «Скрыть».

Доступные значения свойства: «Авто» — панель отображается, если в ней есть хотя бы одна видимая команда; «Показать» — панель отображается принудительно; «Скрыть» — панель не отображается независимо от наличия команд. Значение «Авто» стоит по умолчанию, поэтому у форм, у которых нет навигационных команд, панель часто и так не видна.

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

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

Программное скрытие панели навигации на сервере

Для динамического управления свойство устанавливается в коде модуля формы. Правильное место — обработчик ПриСозданииНаСервере: на этом этапе форма ещё не отрисована, и изменение свойства не вызовет перерисовки интерфейса. Пример кода:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Параметры.Свойство("РежимУпрощенногоВвода") Тогда

ЭтаФорма.ОтображениеПанелиНавигации = ОтображениеПанелиНавигации.Скрыть;

КонецЕсли;

КонецПроцедуры

Тип ОтображениеПанелиНавигации — системное перечисление со значениями Авто, Показать и Скрыть. Обращение к свойству выполняется через объект формы (ЭтаФорма), а не через элементы формы — это частая ошибка начинающих разработчиков, которые ищут панель в коллекции Элементы.

Если видимость панели должна зависеть от прав пользователя, проверку роли выполняйте в том же обработчике через РольДоступна() или через функциональные опции. Учтите, что изменение свойства после отображения формы (например, в клиентских обработчиках нажатий) может привести к заметной перерисовке окна, поэтому весь расчёт условий лучше выполнять один раз при создании.

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ЭтаФорма.ОтображениеПанелиНавигации = ОтображениеПанелиНавигации.Скрыть;
КонецПроцедуры

Управление составом панели через командный интерфейс объекта

Если нужно не скрыть панель целиком, а убрать из неё отдельные команды, используется командный интерфейс объекта метаданных. В конфигураторе откройте объект (справочник, документ), перейдите на закладку «Командный интерфейс» и снимите флажки видимости у ненужных команд в группе «Панель навигации». Когда видимых команд не останется, панель при значении «Авто» перестанет отображаться сама.

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

Дополнительно командами можно управлять программно через коллекцию КомандныйИнтерфейс.ПанельНавигации не поддерживается напрямую, но видимость конкретных команд формы регулируется через Элементы и свойство Видимость соответствующих кнопок, если они были вручную добавлены на форму.

Способы скрытия панели навигации

Свойство формы в конфигураторе

Подходит, когда панель скрывается всегда; не требует кода, действует только на одну форму

Программно в ПриСозданииНаСервере

Подходит, когда видимость зависит от условий; требует кода и тестирования ветвлений

Командный интерфейс объекта

Подходит для точечного отключения команд; действует на все формы объекта сразу

Особенности для форм списка, выбора и динамических списков

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

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

Типичные ошибки и ограничения

Первая типичная ошибка — попытка скрыть панель через Элементы.Найти() с поиском несуществующего элемента. Панель навигации не входит в дерево элементов формы, и такой код либо ничего не делает, либо вызывает ошибку обращения к неопределённому значению.

Вторая ошибка — установка свойства в клиентском контексте с ожиданием мгновенного эффекта без лишних вызовов сервера. Хотя свойство формально доступно, корректное место изменения — серверный обработчик создания формы. Третья ошибка — скрытие панели у формы, где пользователи реально пользовались командами перехода: после обновления конфигурации это вызывает поток обращений, поэтому перед изменением полезно уточнить сценарии работы у ключевых пользователей.

Ограничение платформы: нельзя скрыть панель навигации только для части пользователей декларативно — для ролевого разграничения требуется программный код. Также свойство не управляет панелью действий (командной панелью); для неё существует отдельное свойство формы и отдельные механизмы.

Типичные ошибки
01
Поиск панели в коллекции Элементы формы — панель не является элементом формы, код не работает
02
Изменение свойства в клиентских обработчиках после открытия — лишние серверные вызовы и перерисовка окна
03
Снятие команд в командном интерфейсе без анализа сценариев — у пользователей пропадают привычные переходы
04
Ожидание, что скрытие панели запрещает переходы — команды остаются доступны через меню «Ещё»

Как проверить результат и откатить изменения

После изменения свойства или командного интерфейса обновите конфигурацию базы данных и откройте форму в режиме предприятия под учётной записью с типовыми правами. Проверьте три состояния: форма открывается без ошибок, панель навигации не отображается, остальные элементы формы (командная панель, табличные части) работают как раньше.

Проверьте также открытие формы в разных режимах: из списка, из поля ввода (режим выбора), по навигационной ссылке. Если панель скрывалась программно по условию, протестируйте обе ветки условия — с пользователем, попадающим под условие, и без него.

Откат изменений безопасен: верните свойству значение «Авто» или удалите добавленный код и обновите конфигурацию. Данные при этом не затрагиваются — изменение касается только интерфейса. Единственный риск возникает при параллельной работе пользователей во время обновления конфигурации базы, поэтому обновление выполняйте вне рабочего времени или при завершённых сеансах.

Контрольные точки

Как проверить результат

Видимость панели при открытии формы
Норма

Панель навигации отсутствует, форма открывается без ошибок

Тревожный признак

Панель видна или появляется сообщение об ошибке в модуле формы

Работа в режиме выбора
Норма

Форма выбора открывается без панели, выбор элемента работает

Тревожный признак

При выборе из поля ввода поведение отличается от ожидаемого

Доступность команд через «Ещё»
Норма

Нужные команды доступны в меню «Ещё», если это планировалось

Тревожный признак

Пропали команды, которые должны были остаться

Частые вопросы

Можно ли скрыть панель навигации только у конкретной команды, оставив остальные?

Да. Для этого используется командный интерфейс объекта: снимите флажок видимости у конкретной команды в группе «Панель навигации». Свойство формы ОтображениеПанелиНавигации работает только с панелью целиком и точечную настройку не поддерживает.

Почему свойство ОтображениеПанелиНавигации не видно в палитре свойств?

Свойство доступно только у корневого элемента «Форма» в управляемой форме. Убедитесь, что выделен именно корневой узел дерева элементов, а не группа или реквизит. В обычных формах этого свойства нет — там панель навигации устроена иначе.

Скрывается ли панель навигации у формы, созданной динамически в коде?

Да. Для программно создаваемых форм свойство устанавливается так же — через объект формы до её отображения. Подход тот же: в модуле формы в обработчике ПриСозданииНаСервере присвойте свойству значение ОтображениеПанелиНавигации.Скрыть.

Влияет ли скрытие панели на производительность формы?

Заметного влияния нет. Скрытие панели лишь убирает её отрисовку и формирование команд перехода, что может незначительно ускорить открытие формы у объектов с большим числом связанных данных. Проблем с производительностью это изменение не создаёт.

Можно ли скрыть панель навигации для всех форм конфигурации сразу?

Штатной глобальной настройки «скрыть везде» нет. Варианты: отключить команды в командном интерфейсе каждого объекта, настроить общий интерфейс через подсистемы и функциональные опции, либо централизованно обрабатывать создание форм через общий модуль с обработчиком ожидания и анализом открываемых окон — последний способ трудоёмок и применяется редко.

Чем отличается панель навигации от командной панели формы?

Командная панель содержит кнопки действий («Записать», «Провести», «Печать»), а панель навигации — команды перехода к связанным данным. Это разные области с разными свойствами: скрытие панели навигации не затрагивает командную панель и наоборот.

Итог

Что важно запомнить

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