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