Программное создание реквизита в управляемых формах 1С
Программное создание реквизита на форме осуществляется с помощью метода «ИзменитьРеквизиты». В первый параметр данного метода передается массив объектов с типом «РеквизитФормы».
ДобавляемыеРеквизиты = Новый Массив; //1
НовыйРеквизит = Новый РеквизитФормы("НашРеквизит",Новый ОписаниеТипов("Строка"),, "", Истина); //2
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); //3
ИзменитьРеквизиты(ДобавляемыеРеквизиты); //4
Комментарий к фрагменту кода:
- Создаем массив, в котором будут храниться объекты с типом «РеквизитФормы»
- Создаем новый объект типа «РеквизитФормы».
- Добавляем новый объект типа «РеквизитФормы» в массив.
- Передаем массив в качестве первого параметра в метод «ИзменитьРеквизиты»
Добавим программно элемент формы:
НовыйЭлементФормы = Элементы.Добавить("НашРеквизит",Тип("ПолеФормы"),ЭтаФорма); //1
НовыйЭлементФормы.ПутьКДанным = "НашРеквизит"; //2
НовыйЭлементФормы.Заголовок = "Наш реквизит"; //3
НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; //4
НовыйЭлементФормы.КнопкаОчистки = Истина; //5
НовыйЭлементФормы.УстановитьДействие("ПриИзменении","ПриИзмененииРеквизита"); //6
НовыйЭлементФормы.УстановитьДействие("Очистка","ОчисткаРевизита"); //7
Комментарий к фрагменту кода:
- Добавляем новый элемент формы с типом «ПолеФормы»
- Указываем путь к данным хранящиеся в реквизите формы «НашРеквизит»
- Указываем заголовок
- Указываем, что вид элемента формы будет «ПолеВвода»
- Добавим кнопку «Очистка»
- Добавим обработчик событий «ПриИзмененииРеквизита», который будет отрабатывать при изменении.
- Добавим обработчик событий «ОчисткаРевизита», который будет отрабатывать при очистки.
Обработчики событий «ПриИзмененииРеквизита» и «ОчисткаРевизита» должны исполняться на клиенте и быть экспортными:
&НаКлиенте
Процедура ПриИзмененииРеквизита(Элемент) ЭкспортСообщение = Новый СообщениеПользователю;
Сообщение.Текст = ЭтаФорма[Элемент.Имя];
Сообщение.Сообщить();
КонецПроцедуры // ПриИзмененииРеквизита()
&НаКлиенте Процедура ОчисткаРевизита(Элемент, СтандартнаяОбработка) ЭкспортСтандартнаяОбработка = Ложь;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Реквизит очищен!";
Сообщение.Сообщить();
КонецПроцедуры // ОчисткаРевизита ()