Dev ›
Передача параметров в управляемые и обычные формы ›
#28
15.11.13 9:20
(27) sumixam,
т.к. в управляемых формах передача контекста с клиента на сервер и обратно, то общий алгоритм будет примерно такой:
в основной форме обработки
Код |
---|
&НаКлиенте
Процедура ВыбратьВоВнешнейФорме(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("АдресХранилища",АдресХранилища);
Результат = ОткрытьФормуМодально(Объект.ПутьКФормам+".ФормаВыбора",ПараметрыФормы,ЭтаФорма);
Если Результат<>Неопределено Тогда
ОбработатьНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьНаСервере()
СтруктураЗначений = ПолучитьИзВременногоХранилища(АдресХранилища);
//Проверки на корректность формата переданных параметров
Если ТипЗнч(СтруктураЗначений)<>Тип("Структура") Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ЭтаФорма.ИмяФормы+"[ЗагрузитьЗначенияЗамены] ожидается структура значений";
Сообщение.Сообщить();
Возврат;
КонецЕсли;
Значение = Неопределено;
Если Не СтруктураЗначений.Свойство("ЗначенияВыбора",Значение) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ЭтаФорма.ИмяФормы+"[ЗагрузитьОбработатьНаСервере] в структуре значений ожидается значение с ключем ""ЗначенияВыбора""";
Сообщение.Сообщить();
Иначе
//Обработка полученного значения
КонецЕсли;
КонецПроцедуры // ОбработатьНаСервере()
|
В форме выбора код будет выглядеть примерно так:
Код |
---|
&НаКлиенте
Процедура ПеренестиРезультат(Команда)
ТекущиеДанные = ЭлементыФормы.СписокВыбора.ТекущиеДанные;
// возможно передать произвольные серриализуемые данные, но обернуть в вызов НаСервере
СтруктураЗначений = Новый Структура;
СтруктураЗначений.Вставить("ЗначенияВыбора",ТекущиеДанные.Ссылка);
ПоместитьВоВременноеХранилище(СтруктураЗначений,Параметры.АдресХранилища);
Закрыть("ОК"); //в простейшем случае можно передать значение здесь
КонецПроцедуры
|
P.S.Опять же никто не запрещает пользоваться тем что форма выбора возвращает значение :)