Сегодня поговорим о том, как программно создать кнопку и поле ввода в управляемой форме.
Программное создание кнопки
Для создания кнопки, нам потребуется добавить команду, саму кнопку и обработчик ее нажатия (это по желанию).
Все манипуляции нужно проводить на сервере.
Выглядит все это приблизительно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | &НаКлиенте Процедура СоздатьКнопку(Команда) СоздатьКнопкуНаСервере(); КонецПроцедуры &НаСервере Процедура СоздатьКнопкуНаСервере() //Добавляем форме команду Кмд = ЭтаФорма.Команды.Добавить("Команда1"); Кмд.Действие = "Тест"; Кмд.Заголовок = "Тест"; //Добавляем саму кнопку Элемент = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма); Элемент.Вид = ВидКнопкиФормы.ОбычнаяКнопка; Элемент.ИмяКоманды = "Команда1"; КонецПроцедуры //Обработчик нажатия кнопки &НаКлиенте Процедура НажатиеКнопки() Сообщить("Кнопка создана программно"); КонецПроцедуры |
Программное создание поля ввода
Для создания поля ввода потребуется добавить форме реквизит и само поле ввода, как и в случае с кнопкой, все манипуляции нужно проводить на сервере.
Выглядит все это, приблизительно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | &НаКлиенте Процедура СоздатьПоле(Команда) СоздатьПолеНаСервере(); КонецПроцедуры &НаСервере Процедура СоздатьПолеНаСервере() //Добавляем реквизит нРеквизиты = Новый Массив; Реквизит = Новый РеквизитФормы("Реквизит1", Новый ОписаниеТипов("Строка"), , "Созданное поле", Истина); нРеквизиты.Добавить(Реквизит); ИзменитьРеквизиты(нРеквизиты); //Добавляем поле ввода Элемент = ЭтаФорма.Элементы.Добавить("Поле", Тип("ПолеФормы"), ЭтаФорма); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = "Реквизит1"; КонецПроцедуры |
Если создаваемый элемент нужно поместить в какую-либо группу, то это делается при создании этого элемента, указыванием нужного родителя:
1 | Элемент = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма.Элементы.Группа1); |
В данном случае кнопка добавиться в элемент с названием «Группа1» и будет отображаться в соответствие со свойствами этого элемента.
Как видите, все очень просто, и если захотеть, то всю форму в управляемом приложении можно рисовать программно (другие элементы управления создаются аналогично).
На этом все, надеюсь данная статья Вам помогла.
Большое спасибо за урок, вы мне очень помогли.
Процедура или функция с указанным именем не определена (СоздатьПолеНаСервере)
А если обычное приложение, то как будет выглядеть код?
Можно ли установить действие для создаваемого элемента форма с обработчиком в общем модуле, навроде такого:
НовыйЭлементФормы.УстановитьДействие(«ПриИзменении», «НашОбщийМодуль.НовыйЭлементФормыПриИзменении») ?
А где назначение процедуры НажатиеКнопки на событие для этой кнопке чот я не понял?
Ошибка (описка)
//Добавляем форме команду
Кмд = ЭтаФорма.Команды.Добавить(«Команда1»);
// Кмд.Действие = «Тест»; // Неправильно
Кмд.Действие = «НажатиеКнопки»; // Вот так будет работать
Кмд.Заголовок = «Тест»;
Добрый день. В документе есть типовая табличная часть ТЧ1. Она выведена в форме на отдельной странице Стр1. В расширении я добавляю еще табличную часть ТЧ2. Вывожу программно на отдельной странице Стр2, которую создала сама.
Стр2 = Элементы.Добавить(«Стр2», Тип(«ГруппаФормы»), Элементы.ГруппаСтраницы);
СтраницаОплаты.Вид = ВидГруппыФормы.Страница;
СтраницаОплаты.Заголовок = «Стр2»;
ТЧ2 = Элементы.Добавить(«ТЧ2», Тип(«ТаблицаФормы»),Стр2);
ТЧ2.ПутьКДанным = «Объект.ТЧ2»;
Вопрос: какой командой задать так , чтобы в диалоге Стр2 была левее Стр1?