В этом уроке форма перестаёт быть чем-то, что можно собирать только мышкой в конфигураторе.
Мы прямо из кода добавим:
Весь код пишем всегда в этом обработчике формы ПриСозданииНаСервере :
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КонецПроцедуры
Например, программно создадим реквизит формы Комментарий:
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(
Новый РеквизитФормы(
"Комментарий",
Новый ОписаниеТипов("Строка")));
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Здесь важно: в
РеквизитФормы передаётся не просто тип, а именно ОписаниеТипов. А сами реквизиты сначала складываются в массив, который затем передаётся в метод формы
ИзменитьРеквизиты()Теперь создадим ЭЛЕМЕНТ и свяжем с реквизитом:
ПолеКомментарий = Элементы.Добавить(
"ПолеКомментарий",
Тип("ПолеФормы"));
ПолеКомментарий.ПутьКДанным = "Комментарий";
ПолеКомментарий.Вид = ВидПоляФормы.ПолеВвода;
Элементы можно создавать через
Элементы.Добавить() или Элементы.Вставить(). Но создать поле недостаточно, его обязательно нужно связать с реквизитом через свойство
ПутьКДанным.Добавим команду и кнопку:
НоваяКоманда = Команды.Добавить("ПоказатьКомментарий");
НоваяКоманда.Заголовок = "Показать комментарий";
НоваяКоманда.Действие = "ПоказатьКомментарий";
Кнопка = Элементы.Добавить(
"КнопкаПоказатьКомментарий",
Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = "ПоказатьКомментарий";И создадим клиентский обработчик команды:
&НаКлиенте
Процедура ПоказатьКомментарий(Команда)
Сообщить(ЭтотОбъект.Комментарий);
КонецПроцедуры
Обработчик обязательно создаём на клиенте, не забываем параметр
Команда, а к программно добавленному реквизиту обращаемся через:ЭтотОбъект.Комментарий
а не просто через
Комментарий.



