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