Как скрыть элементы навигационной панели «Основное» и «Файлы» в управляемой форме

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

При работе с типовыми конфигурациями, такими как УТ 11, ERP или КА, разработчики часто сталкиваются с задачей упрощения интерфейса. Одной из неочевидных проблем является скрытие элементов в верхней части формы — так называемой панели навигации, где расположены переключатели «Основное», «Файлы», «История изменений» и другие. Сложность заключается в том, что этих элементов нет в обычном дереве элементов формы в конфигураторе. Рассмотрим подробнее, как решить эту задачу, используя современные механизмы платформы 1С.

Анализ проблемы: почему элементов нет в дереве формы

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

Решение 1. Программное управление через CommandInterface

Разберем, как обратиться к этим элементам через программный код. В контексте управляемой формы существует свойство КомандныйИнтерфейс, которое предоставляет доступ к навигационным командам. Чтобы скрыть ненужные элементы централизованно (например, через расширение), нам необходимо использовать процедуру-перехватчик ПриСозданииНаСервере.

Посмотрим на пример кода, который необходимо разместить в модуле формы расширения с аннотацией &После:


&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Скрываем конкретные группы команд в панели навигации
    // Чаще всего команда "Файлы" находится в группе "Перейти" или "СмТакже"
    
    ГруппыНавигации = ЭтаФорма.КомандныйИнтерфейс.Навигация.ПолучитьСодержимое();
    
    Для Каждого Группа Из ГруппыНавигации Цикл
        Если Группа.Имя = "ГруппаПерейти" Тогда
            Группа.Видимость = Ложь;
        КонецЕсли;
    КонецЦикла;

    // Или обращение напрямую, если известно точное имя
    ЭтаФорма.КомандныйИнтерфейс.Навигация.ГруппаСмТакже.Видимость = Ложь;
    
КонецПроцедуры

Важно помнить, что скрытие всех дочерних команд в группе автоматически приводит к исчезновению заголовка этой группы. Выясним причину отображения элемента «Основное»: он появляется только тогда, когда на форме есть хотя бы две закладки навигации. Если мы скроем все дополнительные команды (Файлы, Задачи, История), элемент «Основное» исчезнет сам собой, так как системе больше нечего будет разделять.

Решение 2. Использование возможностей платформы 8.3.15 и выше

Если вы используете современную версию платформы (начиная с 8.3.15), задача значительно упрощается. В этих версиях разработчики 1С реализовали полноценную поддержку управления командным интерфейсом прямо в расширениях.

Выполним следующие шаги:

  1. Заимствуем нужную форму в расширение конфигурации.
  2. В редакторе формы в нижней части окна переходим на закладку «Командный интерфейс».
  3. Находим нужные команды (например, связанные с присоединенными файлами) и просто снимаем флажки в колонке «Видимость» для нужных ролей или для всех пользователей.

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

Решение 3. Настройка через функциональные опции (ФО)

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

Проанализируем этот путь:

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

Решение 4. Управление через роли и права доступа

Посмотрим на ситуацию со стороны безопасности. Часто требования заказчика «скрыть кнопку» на самом деле означают «запретить доступ». Если у пользователя нет прав на чтение объектов, связанных с командой (например, прав на справочник ВерсииОбъектов для «Истории изменений» или ЗаказКлиентаПрисоединенныеФайлы для «Файлов»), платформа автоматически скроет эти команды из панели навигации.

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

Итоговые рекомендации

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

← На главную