К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как сделать вертикальное меню в 1С

Пошаговая инструкция по созданию вертикального меню в 1С: панель навигации, командный интерфейс подсистем, программное формирование меню на форме, типичные ошибки.

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

Выбор подхода зависит от задачи. Если нужно, чтобы пользователь в разделе «Продажи» видел слева список документов и отчётов — настраивается командный интерфейс подсистемы. Если нужно собственное меню на конкретной форме обработки или рабочем столе — создаётся группа с вертикальным расположением и кнопками. Ниже разобраны оба сценария, а также программный способ для динамических меню.

Как устроена навигация в управляемом интерфейсе 1С

В режиме «Такси» интерфейс приложения состоит из нескольких стандартных областей: панель разделов (список подсистем), панель открытых окон, панель функций текущего раздела и рабочая область. Вертикальное меню команд внутри раздела выводится в панели функций — она по умолчанию может располагаться слева, сверху или быть скрытой.

Пользователь может сам переключить положение панели через «Вид» → «Настройка панелей», но разработчик задаёт состав команд и их группировку в конфигураторе. Именно состав панели навигации подсистемы определяет, какие пункты увидит пользователь в вертикальном списке слева.

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

Настройка вертикального меню раздела через командный интерфейс

Откройте конфигуратор, найдите в дереве конфигурации ветку «Общие» → «Подсистемы» и выберите нужную подсистему. В палитре свойств нажмите кнопку открытия у свойства «Командный интерфейс» — откроется редактор со списком всех команд, попадающих в панель навигации этого раздела.

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

Чтобы добавить в меню собственную команду — например, открытие внешней обработки или отчёта, — создайте общую команду (ветка «Общие» → «Общие команды»), задайте ей представление и обработчик, затем включите её в состав подсистемы через тот же редактор командного интерфейса. После обновления конфигурации базы данных пункт появится в меню раздела.

Порядок настройки меню раздела
  1. 1
    Откройте конфигуратор и перейдите в «Общие» → «Подсистемы»
  2. 2
    Выберите подсистему и откройте её командный интерфейс
  3. 3
    Упорядочьте команды в группе «Навигация», снимите флажки с лишних
  4. 4
    Добавьте общие команды при необходимости и включите их в подсистему
  5. 5
    Обновите конфигурацию базы данных и проверьте меню в режиме предприятия

Создание вертикального меню на управляемой форме

Если меню нужно на конкретной форме — обработки, документа или рабочего стола, — используется группа формы с вертикальной группировкой. Откройте форму в конфигураторе, добавьте элемент «Группа» вида «Обычная группа» и установите свойство «Группировка» в значение «Вертикальная». Все элементы внутри такой группы будут выстраиваться друг под другом.

Внутрь группы добавьте кнопки, связанные с командами формы. Создайте команды на закладке «Команды» редактора формы, для каждой напишите обработчик в модуле, затем перетащите команды в дерево элементов внутрь вертикальной группы — платформа автоматически создаст кнопки.

Чтобы меню выглядело аккуратно, настройте свойства группы: отключите «Отображение» заголовка, если рамка не нужна, задайте «Ширину» и «Растягивать по горизонтали» у кнопок, чтобы они имели одинаковый размер. Для визуального отделения меню от содержимого формы группу часто размещают слева внутри горизонтальной группы-контейнера.

Программное формирование меню

Когда состав меню зависит от данных — прав пользователя, настроек, списка документов, — элементы добавляются программно в обработчике «ПриСозданииНаСервере». Сначала создаются команды формы, затем кнопки в заранее подготовленной вертикальной группе.

Типовой фрагмент кода выглядит так:

НоваяКоманда = Команды.Добавить("ОткрытьПродажи");

НоваяКоманда.Заголовок = "Продажи";

НоваяКоманда.Действие = "Подключаемый_ВыполнитьКоманду";

НоваяКнопка = Элементы.Добавить("КнопкаПродажи", Тип("КнопкаФормы"), Элементы.ГруппаМеню);

НоваяКнопка.ИмяКоманды = "ОткрытьПродажи";

Все программно созданные команды можно направить в один общий обработчик, а внутри него определять нажатую кнопку по параметру «Команда». Это удобно, когда пунктов много и писать отдельную процедуру на каждый нерационально. Не забудьте, что обработчик команды должен существовать в модуле формы до момента создания кнопки, иначе при нажатии возникнет ошибка.

bsl
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    Если Команда.Имя = "ОткрытьПродажи" Тогда
        ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаСписка");
    КонецЕсли;
КонецПроцедуры

Как выбрать подходящий способ

Для стандартной навигации по разделам всегда используйте командный интерфейс подсистем: он автоматически учитывает права доступа, поддерживает настройку пользователем и не требует кода. Собственные формы-меню оправданы, когда нужен нестандартный внешний вид, динамический состав пунктов или интеграция меню внутрь рабочей области обработки.

Сравнение вариантов

Командный интерфейс подсистемы

Штатная панель навигации слева. Учитывает права, настраивается пользователем, но ограничена стандартным оформлением.

Вертикальная группа на форме

Полный контроль над видом и расположением. Требует ручной проверки прав и не попадает в стандартную панель разделов.

Программное создание кнопок

Меню строится по данным в момент открытия формы. Гибко, но сложнее в сопровождении и отладке.

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Состав меню раздела
Норма

Все нужные команды видны, лишние скрыты, порядок соответствует редактору

Тревожный признак

Пункт отсутствует — команда не включена в подсистему или нет прав

Кнопки на форме
Норма

Кнопки выстроены вертикально, нажатие выполняет команду

Тревожный признак

Кнопки в строку — неверная группировка; ошибка при нажатии — нет обработчика

Права пользователей
Норма

Под ограниченной учётной записью лишние пункты не видны

Тревожный признак

Кнопка видна всем и вызывает ошибку прав при нажатии

Типичные ошибки
01
Изменение командного интерфейса без обновления конфигурации БД — в режиме предприятия меню остаётся старым
02
Кнопки добавлены в корень формы, а не в вертикальную группу — меню выстраивается горизонтально
03
Программная команда без обработчика в модуле — ошибка «Процедура не обнаружена» при нажатии
04
Самодельное меню без проверки прав — пользователи видят недоступные им функции

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

Итог

Что важно запомнить

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

Частые вопросы

Можно ли переместить панель навигации вниз или вправо?

Платформа позволяет пользователю менять положение панелей через «Вид» → «Настройка панелей», доступны стандартные варианты расположения. Программно зафиксировать произвольное положение панели навигации нельзя — это системная область интерфейса.

Почему добавленная команда не появилась в меню раздела?

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

Как сделать выпадающее подменю внутри вертикального меню на форме?

Добавьте в вертикальную группу элемент «Подменю» и поместите кнопки внутрь него. Подменю будет раскрываться при нажатии, как стандартная кнопка «Ещё». Вложенность подменю поддерживается, но глубокие иерархии ухудшают удобство работы.

Можно ли изменить порядок пунктов меню без конфигуратора?

Состав стандартной панели навигации пользователь может частично настроить через «Настройка навигации» в режиме предприятия: скрыть лишние команды и изменить их порядок. Добавить новые команды таким способом нельзя — только через конфигуратор.

Как добавить картинку к пункту меню на форме?

У команды формы задайте свойство «Картинка», выбрав изображение из библиотеки картинок или общей картинки конфигурации. У кнопки установите нужное значение «Отображение» — например, «Картинка и надпись», чтобы показывались оба элемента.

Работает ли программное создание кнопок в обычных формах?

В обычных формах используется другой объектный интерфейс: элементы добавляются через коллекцию «ЭлементыФормы» с указанием типа и родителя. Принцип похож, но свойства и методы отличаются, поэтому код для управляемых форм напрямую не переносится.