Статья решает задачи:

  • Как передать параметр в открываемую программно форму;
  • Как вернуть параметр из открываемой программно формы;

Исходные данные:

  • Имеется общая форма — «НашаФорма», с реквизитами:
    • «МножительА» — заполняется при открытии формы, по значению переданного параметра;
    • «МножительБ» — заполняется вручную;
  • Необходимо:
    • программно открыть форму «НашаФорма».
    • передать в форму параметр, по значению которого заполнить реквизит «МножительА»;
    • вручную заполнить реквизит формы «МножительБ»;
    • умножить «МножительА» на «МножительБ» и результат вернуть в исходную процедуру;

1. Пишем процедуру по открытию «НашаФорма» и передаче в нее параметра «МножительА»

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

2. Пишем процедуру, которая при открытии «Наша форма» (в обработчике ПриСозданииНаСервере) будет заполнять реквизит «МножительА» по полученному значению

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)	
	МножительА = Параметры.МножительА;	
КонецПроцедуры

3. Пишем процедуру по вычислению результата умножения и возврату значения

&НаКлиенте
Процедура ЗакрытьФорму(Команда)	
	//МножительА - полученный параметр
	//МножительБ - заполненный вручную параметр
	РезультатУмножения = МножительА * МножительБ;
	
	//Вернем результат умножения в исходную процедуру
	Закрыть(РезультатУмножения);	
КонецПроцедуры