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