Разработка и Конфигурация · 10 мин
Как добавить команду в панель навигации формы в 1С
Пошаговая инструкция: как добавить команду в панель навигации формы в 1С, настройка командного интерфейса, обработчики команд, типичные ошибки и проверка результата.
Панель навигации формы в 1С — это область в верхней части формы, где размещаются команды перехода к связанным данным: подчинённым справочникам, документам, регистрам сведений и произвольным обработкам. Типичная задача разработчика — вывести в эту панель собственную команду, например «Печать договора», «История изменений» или переход к специализированному отчёту. Для этого используется механизм команд формы и группа командной панели «ПанельНавигации».
Способ добавления зависит от типа формы и версии платформы. В управляемых формах команды создаются в конфигураторе на закладке «Команды» редактора формы, либо добавляются программно в обработчике «ПриСозданииНаСервере». Дополнительно в 1С существует понятие командного интерфейса объекта метаданных — там команды навигации настраиваются через свойство «Командный интерфейс» объекта, и они появляются в панели навигации формы автоматически.
Ниже разобраны оба подхода: через командный интерфейс объекта (стандартный и предпочтительный) и через команды самой формы (когда нужна нестандартная логика или программное управление видимостью).
Где находится панель навигации и как она устроена
Панель навигации — это системная группа командной панели формы. В дереве элементов формы она обычно называется «ПанельНавигации» или входит в состав общей командной панели как подчинённая группа. В неё платформа автоматически помещает команды перехода к связанным объектам: например, у элемента справочника «Контрагенты» — команды перехода к договорам, контактным лицам, счетам.
Источники команд для панели навигации два. Первый — командный интерфейс объекта метаданных: платформа сама формирует команды на основании свойств «Вводится на основании», «Использовать стандартные команды» и настроек видимости в командном интерфейсе. Второй — команды формы, которые разработчик размещает в группе панели навигации вручную или программно.
Важно понимать различие: команды командного интерфейса открывают другие объекты с отбором по текущему элементу (например, список договоров конкретного контрагента), а команды формы выполняют произвольный код — открытие обработки, формирование печатной формы, вызов серверной процедуры.
Добавление команды через командный интерфейс объекта
Это стандартный способ, который следует использовать в первую очередь. Откройте в конфигураторе объект метаданных (справочник или документ), перейдите на закладку «Командный интерфейс». Там отображается список команд, которые платформа может поместить в панель навигации форм этого объекта.
Для каждой команды доступен флажок видимости. Установите его напротив нужной команды — например, перехода к подчинённому справочнику или регистру сведений, где текущий объект является владельцем или измерением. После обновления конфигурации базы данных команда появится в панели навигации формы элемента.
Если нужной связи в списке нет, проверьте, что объекты действительно связаны: у подчинённого справочника владельцем должен быть текущий справочник, у регистра сведений — измерение нужного типа, у документа — реквизит, входящий в критерий отбора. Без связи по данным платформа не предложит команду навигации.
- 1Откройте объект метаданных в конфигураторе
- 2Перейдите на закладку «Командный интерфейс»
- 3Установите флажки видимости у нужных команд панели навигации
- 4Обновите конфигурацию базы данных (F7)
- 5Откройте форму элемента в режиме 1С:Предприятие и проверьте панель навигации
Добавление собственной команды формы в панель навигации
Когда стандартных команд недостаточно — нужно открыть произвольную обработку, выполнить печать или запустить алгоритм — создаётся команда формы. Откройте форму объекта в конфигураторе и перейдите на закладку «Команды» → «Команды формы».
Нажмите «Добавить» и заполните свойства команды: имя (например, «ПоказатьИсториюИзменений»), заголовок, который увидит пользователь, картинку при необходимости. В свойстве «Действие» нажмите кнопку выбора — платформа создаст заготовку обработчика в модуле формы. Обработчик может быть клиентским, серверным или составным (клиентская часть вызывает серверную).
Затем вернитесь на закладку «Форма» (дерево элементов) и перетащите созданную команду из списка команд в группу панели навигации. Обычно это группа с именем «ПанельНавигации» внутри командной панели формы. Если такой группы нет, её можно создать: добавьте группу с видом «Панель навигации» в командную панель и поместите команду туда.
&НаКлиенте
Процедура ПоказатьИсториюИзменений(Команда)
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Объект", Объект.Ссылка));
ОткрытьФорму("РегистрСведений.ИсторияИзменений.ФормаСписка", ПараметрыФормы, ЭтотОбъект);
КонецПроцедурыПрограммное добавление команды в панель навигации
В некоторых сценариях команду нужно создать динамически — например, когда набор команд зависит от настроек функциональных опций или вида объекта. Для этого используется обработчик «ПриСозданииНаСервере» и коллекция «Команды» формы.
Сначала программно создаётся команда через Команды.Добавить(), ей назначается заголовок и имя действия (существующей процедуры модуля). Затем создаётся элемент формы типа «КнопкаФормы» с родителем — группой панели навигации — и кнопке присваивается имя команды. Такой подход позволяет управлять видимостью команд условно, без условий в конфигураторе.
Учитывайте ограничение: программно созданные элементы существуют только в рамках текущего экземпляра формы и не сохраняются в конфигурации. Для постоянных команд предпочтительнее декларативное добавление в конфигураторе — его проще сопровождать и видно при просмотре формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НоваяКоманда = Команды.Добавить("ОткрытьОтчетПоОбъекту");
НоваяКоманда.Заголовок = "Отчёт по объекту";
НоваяКоманда.Действие = "ОткрытьОтчетПоОбъекту";
Кнопка = Элементы.Добавить("ОткрытьОтчетПоОбъекту", Тип("КнопкаФормы"), Элементы.ПанельНавигации);
Кнопка.ИмяКоманды = "ОткрытьОтчетПоОбъекту";
КонецПроцедурыНастройка видимости и доступности команды
Команда панели навигации не всегда должна быть видна всем пользователям и в любом состоянии объекта. Для управления доступностью используются несколько механизмов. Функциональные опции позволяют привязать команду к настройке системы: если опция отключена, команда скрывается автоматически. Роли определяют право «Использование» команды — пользователь без права её не увидит.
Для тонкой настройки внутри формы используйте свойство «Видимость» элемента-кнопки. Например, команду печати договора разумно показывать только для записанного объекта: проверку Объект.Ссылка.Пустая() выполняют в обработчиках «ПриОткрытии» или «ПослеЗаписи» и устанавливают видимость кнопки.
Также полезно свойство «Изменяет сохраняемые данные» у команды. Если команда не изменяет данные объекта (а команды навигации обычно не изменяют), оставьте его снятым — иначе платформа будет считать форму модифицированной и запрашивать сохранение без необходимости.
Проверка результата и типичные ошибки
После добавления команды обновите конфигурацию базы данных и откройте форму в режиме 1С:Предприятие. Команда должна отображаться в панели навигации с заданным заголовком, нажатие должно выполнять обработчик без ошибок, а открываемые списки — содержать отбор по текущему объекту.
Если команда не появилась, проверьте по порядку: размещена ли кнопка именно в группе панели навигации, а не в общей командной панели; не снят ли флажок видимости в командном интерфейсе; есть ли у пользователя права на команду и на объект, который она открывает; не перекрывает ли команду настройка «Изменение состава команд» в интерфейсе пользователя.
Частая ошибка — обработчик команды создан, но не связан: в свойстве «Действие» команды пусто или указана процедура, которую потом переименовали. В этом случае при нажатии возникает ошибка «Процедура или функция с указанным именем не определена». Лечится повторным выбором обработчика в свойствах команды.
Как проверить результат
Команда видна в панели навигации с заданным заголовком
Команды нет или она в другой области командной панели
Нажатие выполняет действие без ошибок
Ошибка «процедура не определена» или ничего не происходит
Список отфильтрован по текущему объекту
Открывается полный список всех записей
Форма не требует сохранения после нажатия команды навигации
Появляется запрос сохранения данных
FAQ
Можно ли добавить команду в панель навигации без изменения конфигурации?
Да, через механизм расширений конфигурации. Расширение позволяет заимствовать форму, добавить в неё команду и обработчик, не снимая конфигурацию с поддержки. Это предпочтительный способ для типовых решений, где важно сохранить простое обновление.
Почему команда видна администратору, но не видна обычному пользователю?
Проверьте роли: у команды есть право «Использование», а у объекта, который она открывает, — права просмотра. Также команда может быть привязана к функциональной опции, недоступной пользователю, или скрыта в персональных настройках интерфейса («Все функции» → настройка панели навигации).
Как добавить команду в панель навигации формы списка, а не формы элемента?
Механизм тот же: откройте форму списка в конфигураторе, создайте команду и разместите её в группе панели навигации. Учтите, что в форме списка нет «текущего объекта» как в форме элемента — отбор нужно строить по текущей строке списка, получая её через Элементы.Список.ТекущиеДанные.
Чем панель навигации отличается от панели действий формы?
Панель навигации предназначена для переходов к связанным данным — она отвечает на вопрос «что связано с этим объектом». Панель действий содержит команды работы с самим объектом: записать, провести, печатать, создать на основании. Размещать команду стоит в той панели, которая соответствует её смыслу, — так интерфейс остаётся предсказуемым для пользователей.
Можно ли изменить порядок команд в панели навигации?
Да. В дереве элементов формы команды внутри группы панели навигации можно перемещать мышью — порядок в дереве определяет порядок отображения. Для команд командного интерфейса порядок настраивается на закладке «Командный интерфейс» объекта кнопками перемещения вверх и вниз.
Что важно запомнить
Команду в панель навигации добавляют двумя способами: через командный интерфейс объекта для стандартных переходов к связанным данным и через команды формы для произвольной логики. Команда формы создаётся на закладке «Команды», получает обработчик и перетаскивается в группу «Панель навигации». Обязательно проверяйте видимость, права, передачу отбора по текущему объекту и связь команды с обработчиком.