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