1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Добавляем новый реквизит в форму ДобавляемыеРеквизиты = Новый Массив; Реквизит = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"), , "Введите строку", Истина); ДобавляемыеРеквизиты.Добавить(Реквизит); ИзменитьРеквизиты(ДобавляемыеРеквизиты); //Добавляем новое поле ввода на форму Элемент = ЭтаФорма.Элементы.Добавить("Поле", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = "Реквизит1"; //Добавляем новую команду Кмд = ЭтаФорма.Команды.Добавить("Команда1"); Кмд.Действие = "НажатиеКнопки"; Кмд.Заголовок = "Нажатие кнопки"; //Добавляем новую кнопку Элемент2 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма); Элемент2.Вид = ВидКнопкиФормы.ОбычнаяКнопка; Элемент2.ИмяКоманды = "Команда1"; КонецПроцедуры &НаКлиенте Процедура НажатиеКнопки() // Вставить содержимое обработчика. ЭтаФорма.Реквизит1 = "Готово"; КонецПроцедуры |
Программное добавление кнопок в управляемый интерфейс
Если упрощенно, то помог код следующего содержания:
1 2 3 4 5 6 7 8 9 10 |
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Для Каждого ТекИмяКнопки Из Параметры.МассивИменКнопок Цикл КомандаФормы = Команды.Добавить(ТекИмяКнопки); КомандаФормы.Действие = "ПроцедураОбработкиНажатия"; Элементы.Добавить(ТекИмяКнопки,Тип("КнопкаФормы"), Элементы.ПоПравилуОбработкиПодменю); Элементы[ТекИмяКнопки].Заголовок = ТекИмяКнопки; Элементы[ТекИмяКнопки].ИмяКоманды = ТекИмяКнопки; КонецЦикла КонецПроцедуры |
Параметры.МассиИменКнопок – Массив, в котором содержаться имена создаваемых кнопок.
Элементы.ПоПравилуОбработкиПодменю – группа подменю, в которую добавляются кнопки.
«ПроцедураОбработкиНажатия» – имя процедуры, которая объявлена на стороне клиента. Именно ей будет передаваться управление в случае нажатия кнопки. Идентификацию того, какая именно кнопка была нажата проводил по имени команды.
1 2 3 4 |
&НаКлиенте Процедура ПроцедураОбработкиНажатия(Элемент) Состояние("Выполняется нажатие кнопки с командой" + Элемент.Имя); КонецПроцедуры |
Следует отметить, что обязательно создание команд. Если кнопке не определить имя команды, то платформа такую кнопку не покажет.