HelpF.pro

Кнопка ~ Программное добавление на управляемую форму поля или кнопки?

Код 1C v 8.2 УП
 &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Добавляем новый реквизит в форму
ДобавляемыеРеквизиты = Новый Массив;
Реквизит = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"), , "Введите строку", Истина);
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

//Добавляем новое поле ввода на форму
Элемент = ЭтаФорма.Элементы.Добавить("Поле", Тип("ПолеФормы"), ЭтаФорма);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = "Реквизит1";

//Добавляем новую команду
Кмд = ЭтаФорма.Команды.Добавить("Команда1");
Кмд.Действие = "НажатиеКнопки";
Кмд.Заголовок = "Нажатие кнопки";

//Добавляем новую кнопку
Элемент2 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
Элемент2.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
Элемент2.ИмяКоманды = "Команда1";

КонецПроцедуры

&НаКлиенте
Процедура НажатиеКнопки()
// Вставить содержимое обработчика.
ЭтаФорма.Реквизит1 = "Готово";

КонецПроцедуры


Программное добавление кнопок в управляемый интерфейс
Если упрощенно, то помог код следующего содержания:
Код 1C v 8.2 УП
 &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Для Каждого ТекИмяКнопки Из Параметры.МассивИменКнопок Цикл
КомандаФормы = Команды.Добавить(ТекИмяКнопки);
КомандаФормы.Действие = "ПроцедураОбработкиНажатия";
Элементы.Добавить(ТекИмяКнопки,Тип("КнопкаФормы"), Элементы.ПоПравилуОбработкиПодменю);
Элементы[ТекИмяКнопки].Заголовок = ТекИмяКнопки;
Элементы[ТекИмяКнопки].ИмяКоманды = ТекИмяКнопки;
КонецЦикла
КонецПроцедуры

Параметры.МассиИменКнопок – Массив, в котором содержаться имена создаваемых кнопок.
Элементы.ПоПравилуОбработкиПодменю – группа подменю, в которую добавляются кнопки.
«ПроцедураОбработкиНажатия» – имя процедуры, которая объявлена на стороне клиента. Именно ей будет передаваться управление в случае нажатия кнопки. Идентификацию того, какая именно кнопка была нажата проводил по имени команды.
Код 1C v 8.2 УП
 &НаКлиенте
Процедура ПроцедураОбработкиНажатия(Элемент)
Состояние("Выполняется нажатие кнопки с командой" + Элемент.Имя);
КонецПроцедуры

Следует отметить, что обязательно создание команд. Если кнопке не определить имя команды, то платформа такую кнопку не покажет.
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/950.html