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