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