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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Основные принципы программного создания кнопок

Для корректного добавления кнопки в командную панель необходимо выполнить два ключевых действия: создать саму команду в коллекции ЭтаФорма.Команды и создать элемент управления типа КнопкаФормы, привязав его к этой команде. Важно помнить, что все эти манипуляции должны выполняться на сервере, преимущественно в обработчике события ПриСозданииНаСервере.

Пошаговое руководство по добавлению кнопки

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

  1. Создаем объект команды в коллекции ЭтаФорма.Команды.
  2. Назначаем команде заголовок и имя процедуры-обработчика.
  3. Добавляем элемент управления в коллекцию Элементы.
  4. Устанавливаем свойство ИмяКоманды у созданного элемента.

Рассмотрим пример реализации данного алгоритма:


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

&НаКлиенте
Процедура ВыполнитьТестоваяКоманда(Команда)
    // Здесь размещаем логику, которая должна выполняться при нажатии
    Сообщить("Кнопка нажата!");
КонецПроцедуры

Почему возникают ошибки при добавлении?

Чаще всего при работе с элементами форм возникают следующие сложности:

Рекомендации по отладке

Если после выполнения кода кнопка не появилась или возникла ошибка, воспользуйтесь следующими советами:

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

Во-вторых, всегда проверяйте наличие элемента перед добавлением, если код может быть вызван повторно: Элементы.Найти("ВашеИмя"). Повторное добавление элемента с тем же именем вызовет исключение.

В-третьих, обратите внимание на свойство Действие команды. Оно должно указывать на существующую процедуру, которая определена в модуле формы с директивой &НаКлиенте. Без привязанного обработчика кнопка может быть неактивной или работать некорректно.

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

← На главную