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