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