Имя: Пароль:
1C
1С v8
Передать и вернуть структуру параметров из формы в форму
0 1C2SS
 
09.11.12
17:41
Необходимо передать из одной формы в другую структуру параметров. Потом при закрытии новой формы передать другую структуру обратно.
Как передать туда я нашел:
   ДокументКредит = Документы.Кредит.СоздатьДокумент();
   ДокументКредит.Дата = ТекущаяДата();
   ФормаДокументКредит = Документы.Кредит.ПолучитьФормуНовогоДокумента();
   Параметры = Новый Структура;
   Параметры.Вставить("Контрагент",Контрагент);
   Параметры.Вставить("Дата",Дата);
   ОткрытьФормуМодально(ФормаДокументКредит,Параметры,ЭтаФорма);

А вот как из открытой формы вернуть в исходную форму другую структуру не нашел.
I need help.
1 hhhh
 
09.11.12
17:42
ДругаяСтруктура = ОткрытьФормуМодально(ФормаДокументКредит,Параметры,ЭтаФорма);
2 mikecool
 
09.11.12
17:43
ВернулиСтруктуру = ОткрытьФормуМодально...

в ФормаДокументКредит Закрыть(СтруктураВозврата)
3 Steel_Wheel
 
09.11.12
17:45
В ДокументеКрелит, будет доступно свойство формы "документВладелец" -- объект, который вызвал текущий документ. Можешь ПриЗакрытии() Документа кредита писать прямо туда

Еще, ОткрытьФормуМодально() -- это обертка над серией вызовов.
НовФорма = Документы.Крелит.ПолучитьФорму();
Результ = НовФорма.ОткрытьМодально();
тут Результ -- это то, что возвращает метод Закрыть() вызываемой формы. Можешь таким образом, написать часть в документе кредита, а часть дописать в вызывающем документе
4 1C2SS
 
09.11.12
18:43
А как внутри вызванной формы обрабатывать полученные параметры?
5 Steel_Wheel
 
09.11.12
18:48
документВладелец или ФормаВладелец -- если это объект, можешь, прямо его править. если ссылка -- найди по ней объект
6 1C2SS
 
09.11.12
19:02
Меня интересует формавладелец, но я не пойму как к ней доступ получить.
7 Steel_Wheel
 
09.11.12
19:05
Форма.ФормаВладелец
из области видимости формы. Если ты указал параметры при открытии правильно и все, то параметр будет определен
8 Steel_Wheel
 
09.11.12
19:05
Ты копируй хоть код, который пишешь. Чтобы можно было тебе подсказать, телепаты в отпуске )
9 takefive
 
09.11.12
19:06
ВладелецФормы
10 1C2SS
 
09.11.12
19:07
ВладелецФормы не определен
Его приходится перед вызовом формы явно прописывать.
А если приходится его явно прописывать то тогда какой смысл передавать исходную форму в качестве параметра ... да и сами параметры тоже будут все доступны через владельца.
Процедура ОперацияНажатие(Элемент)
   ДокументОперКред = Документы.ОперацияПоКредиту.СоздатьДокумент();
   ДокументОперКред.Дата = ТекущаяДата();
   ФормаДокументОперКред = Документы.ОперацияПоКредиту.ПолучитьФормуНовогоДокумента();
   ФормаДокументОперКред.ВладелецФормы = ЭтаФорма;
   ИсходПараметры = новый структура;
   ИсходПараметры.Вставить("Контрагент",Контрагент);
   ВходПараметры = новый структура;
   ВходПараметры=ОткрытьФормуМодально(ФормаДокументОперКред,ИсходПараметры,ЭтаФорма);
КонецПроцедуры
11 1C2SS
 
09.11.12
19:09
ОткрытьФормуМодально(ФормаДокументОперКред,ИсходПараметры,ЭтаФорма)
Вот здесь есть ИсходПараметры и ЭтаФорма.
Почему они ни где не видны в открытой форме?
12 Steel_Wheel
 
09.11.12
19:10
Напиши тело функции ОткрытьФормуМодально()

P.S. это 77 или 80?
13 1C2SS
 
09.11.12
19:11
это 8.2
14 Steel_Wheel
 
09.11.12
19:14
попробуй глянуть что внутри ОткрытьФормуМодально() происходит
15 takefive
 
09.11.12
19:17
ДокументОперКред.ПолучитьФорму("ФормаДокумента",ЭтаФорма).ОткрытьМодально();
16 1C2SS
 
09.11.12
19:22
(15) если так то формавладелец видна.
Теперь я понял в чем прикол.
Спасибо.
17 takefive
 
09.11.12
19:27
Вот пример  использует события формы... для расширения кругозора

//Главная форма
Процедура КнопкаВыполнитьНажатие(Кнопка)
   ФормаВыбора = ПолучитьФорму("Форма",ЭтаФорма);
   ФормаВыбора.Открыть();
   //Посылает оповещение всем созданным формам
   Оповестить(,Структура);
КонецПроцедуры

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   //Возникает при выборе объекта в одной из подчиненных форм
   //или при вызове в одной из подчиненных форм метода ОповеститьОВыборе.
   ПараметрПриемник = Структура;
КонецПроцедуры

//ФормаВыбора
Процедура КнопкаВыполнитьНажатие(Кнопка)
   //Посылает оповещение владельцу формы
   //о выполнении выбора или подбора,
   //передает ему выбранное значение
   ОповеститьОВыборе(Структура);
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
   //Возникает при оповещении всех созданных
   //форм методом глобального контекста Оповестить
   ПараметрПриемник = Параметр;
   ФормаИсточник = ВладелецФормы;
КонецПроцедуры