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