Как добавить навигационную ссылку в шапку управляемой формы в 1С?

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

При проектировании интерфейсов в управляемом приложении «1С:Предприятие 8» разработчики часто сталкиваются с задачей размещения навигационных ссылок в верхней части управляемой формы (непосредственно под ее заголовком). Эти ссылки, которые в современных интерфейсах и типовых конфигурациях (таких как «1С:Управление нашей фирмой», «1С:ERP» или «1С:Комплексная автоматизация») могут выделяться цветным шрифтом, представляют собой элементы командного интерфейса формы (панели навигации формы).

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

Механизм автоматического формирования ссылок платформой

Прежде чем приступать к конфигурированию и написанию кода, проанализируем, как платформа «1С:Предприятие» генерирует данные ссылки в автоматическом режиме. Существует два основных механизма связи данных, при которых платформа самостоятельно выводит ссылки на связанные списки в панель навигации:

  1. Связи справочников через отношение подчинения: Если в конфигурации существует справочник, для которого текущий справочник назначен «Владельцем» (на вкладке «Владельцы» в конфигураторе), платформа автоматически выведет ссылку на подчиненный справочник в группу переходов командного интерфейса формы владельца. При нажатии на эту ссылку откроется форма списка подчиненного объекта с автоматическим отбором по текущему элементу-владельцу.
  2. Ведущие измерения регистров: Если текущий объект (например, справочник «Направления деятельности») используется в качестве измерения какого-либо регистра (сведений, накопления или расчета) и для этого измерения в конфигураторе включено свойство «Ведущее», платформа автоматически сформирует в командной панели формы ссылку на записи этого регистра с отбором по текущему элементу. Именно по такому принципу чаще всего выводится стандартная ссылка на «Счета учета», если они хранятся в соответствующем регистре сведений.

Динамическое формирование ссылок средствами БСП

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

Рассмотрим, как устроен этот процесс изнутри. При открытии управляемой формы в обработчике события ПриСозданииНаСервере происходит вызов методов интеграции БСП:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Интеграция подсистемы подключаемых команд БСП
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    
КонецПроцедуры

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


// Процедура размещается в модуле менеджера справочника (например, НаправленияДеятельности)
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов) Экспорт
    
    НоваяКоманда = КомандыОтчетов.Добавить();
    НоваяКоманда.Идентификатор = "СвязанныйОтчетПоНаправлению";
    НоваяКоманда.Представление = НСтр("ru = 'Отчет по направлению'");
    НоваяКоманда.Порядок = 20;
    НоваяКоманда.ПоказыватьВПанелиНавигацииФормы = Истина;
    
КонецПроцедуры

Решение задачи автора: Добавление ссылки на альтернативную форму объекта

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

Выясним причину, почему такие ссылки не видны в редакторе формы в конфигураторе. Дело в том, что в конструкторе управляемой формы на вкладке «Элементы» эти гиперссылки по умолчанию скрыты, так как они управляются через свойства командного интерфейса самой формы.

Разберем по шагам универсальный и простой способ реализации этой задачи без написания сложного программного кода:

Шаг 1. Создание дополнительной формы объекта

Если для объекта требуется отображать альтернативный набор реквизитов (например, специализированные настройки), сначала создадим дополнительную форму элемента справочника (или документа):

  1. В дереве метаданных найдем нужный справочник и перейдем на вкладку «Формы».
  2. Нажмем кнопку добавления новой формы, выберем тип «Форма элемента» и дадим ей уникальное имя (например, ФормаСчетовУчета).
  3. Разместим на этой форме необходимые реквизиты и настроим интерфейс.

Шаг 2. Настройка команды перехода к форме

Чтобы платформа автоматически создала навигационную ссылку для переключения на эту форму, необходимо связать ее с основным объектом через команду:

  1. В ветке нашего справочника найдем раздел «Команды» и добавим новую команду (например, ОткрытьСчетаУчета).
  2. В свойствах созданной команды настроим следующие параметры:
    • Тип параметра команды: Выберем ссылку на наш справочник (например, СправочникСсылка.НаправленияДеятельности). Это сделает команду контекстной (параметризуемой).
    • Группа: Укажем стандартную группу командного интерфейса панели навигации — Панель навигации формы.Перейти или Панель навигации формы.Важное (если ссылка должна выделяться жирным шрифтом).
    • Режим изменения данных: Изменяет сохраняемые данные (при необходимости).
  3. В модуле команды напишем код открытия нашей альтернативной формы:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    // ПараметрКоманды содержит ссылку на текущий элемент справочника
    ПараметрыФормы = Новый Структура("Ключ", ПараметрКоманды);
    
    // Открываем созданную нами альтернативную форму элемента
    ОткрытьФорму("Справочник.НаправленияДеятельности.Форма.ФормаСчетовУчета", 
                 ПараметрыФормы, 
                 ПараметрыВыполненияКоманды.Источник, 
                 ПараметрыВыполненияКоманды.Уникальность, 
                 ПараметрыВыполненияКоманды.Окно);
                 
КонецПроцедуры

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

Альтернативный вариант: Использование параметризуемых общих команд

Если нам требуется вызывать внешнюю обработку, форму стороннего списка документов или специализированный отчет, но мы не хотим перегружать структуру самого справочника лишними командами, проанализируем использование механизма Общих команд конфигурации:

  1. В окне метаданных перейдем в ветку «Общие» -> «Общие команды» и добавим новую команду.
  2. В свойствах команды в поле «Тип параметра команды» выберем типы объектов, на формах которых должна отображаться данная ссылка (можно выбрать как один справочник, так и несколько типов через составной тип данных).
  3. В свойстве «Группа» выберем соответствующую область панели навигации формы (например, Панель навигации формы.См. также).
  4. В модуле общей команды опишем логику перехода или открытия нужного окна с передачей текущей ссылки в качестве параметра отбора.

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

← На главную