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