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

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

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

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

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

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

Ниже разобраны оба подхода, настройка кнопок и источников команд, а также типичные ошибки, из-за которых панель не отображается или кнопки не работают.

Что такое командная панель и где она используется

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

Собственную панель добавляют, когда нужно сгруппировать прикладные действия: например, кнопки «Заполнить по остаткам», «Выгрузить в Excel», «Согласовать» в форме документа. Отдельная панель удобнее, чем размещение отдельных кнопок в произвольных местах формы: она единообразно выглядит, поддерживает подменю и автоматически скрывает недоступные команды.

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

Добавление командной панели в конфигураторе

Основной способ — визуальное добавление через редактор формы. Порядок действий одинаков для форм документов, справочников, обработок и отчётов.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор, найдите нужный объект (документ, справочник, обработку) и перейдите на вкладку «Формы».
  2. 2
    Откройте основную форму объекта двойным щелчком.
  3. 3
    В дереве элементов формы (обычно слева вверху) выделите корневой элемент «Форма» или группу, внутри которой должна быть панель.
  4. 4
    Щёлкните правой кнопкой мыши и выберите «Добавить» → «Командная панель» (либо через вкладку «Элементы» на панели инструментов редактора).
  5. 5
    Перетащите панель в нужное положение в дереве элементов — порядок в дереве определяет порядок на форме.
  6. 6
    Добавьте в панель кнопки: правой кнопкой по панели → «Добавить» → «Кнопка», затем свяжите кнопку с командой через свойство «ИмяКоманды».
  7. 7
    Обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия.

После добавления панели задайте её свойства в палитре свойств (правый клик → «Свойства»). Ключевые из них: «ИсточникКоманд» — откуда брать стандартные команды, «Автозаполнение» — заполнять ли панель командами источника автоматически, «РастягиватьПоГоризонтали» — поведение при изменении ширины формы.

Если свойство «Автозаполнение» включено, в панель попадут все команды источника, и добавленные вручную кнопки будут показаны рядом с ними. Если нужна панель только со своими кнопками — отключите автозаполнение, иначе получите дублирование стандартных команд.

Создание команды и привязка кнопки

Кнопка в командной панели не содержит логики сама по себе — она вызывает команду формы. Поэтому сначала создаётся команда, затем кнопка связывается с ней.

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

Обработчик клиентской команды выглядит так:

bsl
&НаКлиенте
Процедура ЗаполнитьПоОстаткам(Команда)
	ЗаполнитьПоОстаткамНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
	// серверная логика заполнения
КонецПроцедуры

После создания команды перетащите её из списка команд в командную панель в дереве элементов — платформа сама создаст кнопку с нужной привязкой. Это надёжнее, чем создавать кнопку вручную и потом искать её в свойствах.

Командная панель табличной части и динамического списка

Отдельный частый случай — панель для таблицы формы (табличной части документа или динамического списка). Здесь панель обычно создаётся платформой автоматически при добавлении таблицы, и в неё попадают команды «Добавить», «Скопировать», «Удалить», «Найти» и другие.

Чтобы добавить свою кнопку в панель таблицы, найдите в дереве элементов таблицу, раскройте её — внутри будет элемент «КоманднаяПанель». Перетащите свою команду именно туда, а не в общую панель формы. Тогда кнопка будет контекстной: например, «Подобрать номенклатуру» появится рядом со стандартными кнопками табличной части.

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

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

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

Типовой код добавления команды, кнопки и самой панели:

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Новая команда формы
	НоваяКоманда = Команды.Добавить("ПоказатьИсторию");
	НоваяКоманда.Действие = "ПоказатьИсторию";
	НоваяКоманда.Заголовок = "История изменений";
	
	// Командная панель внутри группы
	Панель = Элементы.Добавить("ПанельИстории", Тип("ГруппаФормы"), Элементы.ГруппаШапка);
	Панель.Вид = ВидГруппыФормы.КоманднаяПанель;
	
	// Кнопка в панели
	Кнопка = Элементы.Добавить("КнопкаИстория", Тип("КнопкаФормы"), Панель);
	Кнопка.ИмяКоманды = "ПоказатьИсторию";
	
КонецПроцедуры

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

Программно созданные элементы существуют только в рамках текущего сеанса формы. При повторном открытии формы код выполнится заново, поэтому не нужно заботиться об удалении панели — но и нельзя ссылаться на неё до выполнения кода создания.

Доработка панели через расширение конфигурации

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

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

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

Способы добавления командной панели

В конфигураторе

Подходит для собственных конфигураций и постоянных панелей. Быстро и наглядно, но требует снятия объекта с поддержки у типовых решений.

Программно в модуле формы

Подходит, когда состав кнопок зависит от условий. Гибко, но сложнее в отладке и требует ручного создания обработчиков.

Через расширение

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

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

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

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

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

Отображение панели
Норма

Панель видна в заданном месте формы, кнопки не обрезаны

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

Панель отсутствует — проверьте свойство «Видимость» и положение в дереве элементов

Работа кнопок
Норма

Нажатие вызывает нужный обработчик без ошибок

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

Ошибка «процедура не определена» — не совпадает имя в свойстве «Действие» и в модуле

Стандартные команды
Норма

Команды источника появились при включённом автозаполнении

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

Дубли команд — автозаполнение включено, а кнопки добавлены ещё и вручную

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

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

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

Почему командная панель не отображается на форме?

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

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

Найдите в дереве элементов панель с именем вида «КоманднаяПанель» (обычно первая в дереве), щёлкните по ней правой кнопкой и добавьте кнопку, связав её со своей командой. Убедитесь, что автозаполнение панели не перекроет ваши настройки порядка кнопок.

Можно ли добавить подменю в командную панель?

Да. Добавьте в панель элемент «Подменю» (группа с видом «Подменю»), задайте ему заголовок и картинку, затем перетащите внутрь него кнопки команд. Так группируют редко используемые действия, чтобы не перегружать панель.

Как скрыть кнопку для части пользователей?

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

Чем командная панель отличается от обычной группы кнопок?

Командная панель поддерживает автозаполнение командами источника, подменю, автоматическое скрытие недоступных команд и стандартное оформление платформы. Обычная группа с кнопками таких возможностей не даёт — всё придётся реализовывать вручную.

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

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

Итог

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

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