Имя: Пароль:
1C
1С v8
Передача данных между двумя управляемыми формами в одной обработке
,
0 svchernova
 
23.12.11
14:47
Люди, кто подскажет

У меня две уф. Из формы1 вызывается форма2. В форме2 заплняются реквизиты, и я хочу получить их значения в форме1. Кроме этого, хочу в форму2 передать некоторые реквизиты формы1.

Для этого на событие ПриОткрытии формы2 пишу следующее:
1 svchernova
 
23.12.11
14:50
(0) продолжение
&НаКлиенте
Процедура ПриОткрытии(Отказ)
   НазначитьВладельца();
КонецПроцедуры

&НаСервере
Процедура НазначитьВладельца()
   ЭтаФорма.ВладелецФормы = Обработки.МобильныйАгент.ПолучитьФорму("ФормаУпр");
КонецПроцедуры;    

Ругается "Интерактивные операции недоступны".

Вопросы возникли следующие:
1. как назначить владельца для формы2
2. как передать реквизиты из формы1 в форму2 (там таблицы значений)
3. Как в ОбработкеОповещения формы1 увидеть реквизиты Формы2

УЖС.
2 Amra
 
23.12.11
14:52
Создать не просто реквизиты форм, а реквизиты привязанные к реквизитам обработки?
3 svchernova
 
23.12.11
14:55
(2) Там нужно назначить владельца, и потом использовать событие ОповеститьОВыборе.. как-то так..
4 vmv
 
23.12.11
15:01
(0) я испольюзую в таких случаях трех китов

1. обмен между формами с иденфикацией их по гуидам
2. сами гуиды и данные форм сохраняю во временные хранилища, чтобы было меньше проблем с передачей управления клиент-сервер
3. иногда копирую данные форм в коллекции (структуры, соответсвия и т.д., т.е. в те объекты, которые свободно мигрируют между клиентом и сервером)

пока все, открывать другую форму при открытии первой - от лукавого, не богоугодное дело!
5 vmv
 
23.12.11
15:04
(1) что-то мне подсказывает, что этот код должен быть в ПриСозданииНаСервере() если он вообще имеет смысл)
6 svchernova
 
23.12.11
15:04
(4) я открываю форму2 при добавлении новой записи в табличную часть формы1

Твои три кита правильные вполне, я читала про такой алгоритм. Я синтаксиса не знаю, не знаю, как это реализовать.
7 svchernova
 
23.12.11
15:06
(5) эта процедура ПриОткрытии формы2, то есть вызываемой формы.
8 Mort
 
23.12.11
15:07
Если форма служит для ввода строки ТЧ табличной части, то следует открывать её модально. Вот и пусть свои значения возвращает владельцу при закрытии.
9 svchernova
 
23.12.11
15:09
(8) я открыла модально пи добавлении новой записи
Вот код:

ФормаКлиента = ПолучитьФорму("Обработка.МобильныйАгент.Форма.ФормаНовогоКлиента");    
ФормаКлиента.ОткрытьМодально();
10 Mort
 
23.12.11
15:14
(9) Пример:

Процедура ТЧПриДобавлении()
СтандартнаяОбработка = ЛОжь;
ПараметрыФормы = Новый Структура("ПередаваемыеПараметры", чтоНужноПередать);
РезультатВыбора =  ОткрытьФормуМодально("Обработка.МобильныйАгент.Форма.ФормаНовогоКлиента", ПараметрыФормы); //В при создании на сервере формы 2 палишь переданные параметры
// по кнопке ОК делаешь структуру выбранных значений и пишешь Закрыть(ЭтаСтруктура);

Если РезультатВыбора <> Неопределено Тогда //Вообще безопаснее проверять тип, тут как хошь
Стр = Тч.Добавить();
... и т.д.
11 hhhh
 
23.12.11
15:14
(9) а чего же владельца не указала?
12 svchernova
 
23.12.11
15:16
(10) спасибо, я поковыряюсь в этом направлении
13 Mort
 
23.12.11
15:16
(11) Да не нужен он в модальном режиме.
14 svchernova
 
23.12.11
15:18
(11) в посте (9) код в вызывающей форме, которая и является владельцем
15 vmv
 
23.12.11
15:24
на УФ лазейка модальности при работе с двумя формами вроде не пашет, как это было в 8.1, пилите дальше и тоньше)
16 Mort
 
23.12.11
15:26
(15) О_о
17 svchernova
 
23.12.11
15:45
(10) Морт, ясейчас пытаюсь твою подсказочку реализовать.. пожалуйста, поглядывай мою ветку, не исчезай, если сможешь
18 Mort
 
23.12.11
15:47
(17) Тока порезче давай, я скоро напьюсь.
19 svchernova
 
23.12.11
15:49
(18) ну вот, я сделала, как ты сказал
Теперь как увидеть в форме2 переданный параметр?
20 svchernova
 
23.12.11
15:49
(18)вот это: //В при создании на сервере формы 2 палишь переданные параметры
21 Mort
 
23.12.11
15:51
(20)

Процедура ПриСозданииНаСервере()

   Вариант 1. Легкомысленный
   ПереданныеПараметры = Параметры.ПередаваемыеПараметры;
22 hhhh
 
23.12.11
15:51
(18) мастерство, его не пропьешь.
23 Mort
 
23.12.11
15:51
+(21) *//Вариант 1. Легкомысленный   (это комментарий был)
24 svchernova
 
23.12.11
15:52
(18) мой твой код:
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура("СправочникВозрастСтажВождения", СправочникВозрастСтажВождения);
РезультатВыбора =  ОткрытьФормуМодально("Обработка.МобильныйАгент.Форма.ФормаНовогоКлиента", ПараметрыФормы);

Здесь СправочникВозрастСтажВождения - это реквизит формы1 с типом таблицазначений
25 svchernova
 
23.12.11
15:53
щас.. погодь
26 Mort
 
23.12.11
15:54
(24)
Процедура ПриСозданииНаСервере()

   //Вариант 2. Получше

   Если Параметры.Свойство("СправочникВозрастСтажВождения") Тогда
        ВозрастСтажВождения= Параметры.СправочникВозрастСтажВождения;
   Иначе
       ВызватьИсключение "Форму низя открывать без параметра СправочникВозрастСтажВождения !!!!!!1111Одын";

    конецЕсли;
27 svchernova
 
23.12.11
15:55
(18) получилось, спасибо:) а почему Лекгомысленный? :)
28 svchernova
 
23.12.11
15:57
(26) понятно :)))))))))) Сейчас попытаюсь в форму1 передать структуру с значениями, введенными в форме2
29 svchernova
 
23.12.11
16:00
Эту структуру в ОбработкеОповещения формы1 увидеть можно?
30 KulakoffAlex
 
23.12.11
16:03
Это структура с параметрами будет видна только в процедуре ПриСозданииНаСервере()
31 svchernova
 
23.12.11
16:05
(30) я, наверное, неточно выражаюсь.
Мне в вызывающей форме нужно будет увидеть структуру значений, введенных в вызываемой форме.
32 Mort
 
23.12.11
16:05
(30) Да.
(29) Не нужна тебе никакая обработка оповещений. Формы работают не паралельно, а последовательно. Передали в модальную, получили из модальной.
33 Mort
 
23.12.11
16:06
+(32) Пока работает форма2, первая недоступна.
P/s "Почти недоступна", но это уже не про нашу задачу.
34 svchernova
 
23.12.11
16:09
(32) Да, форма1 недоступна, я понимаю. Я не поняла, как из модальной формы2 передать значения назад, в форму1. В форме2 у меня пля ввода обычные, как реквизиты.
35 Mort
 
23.12.11
16:11
(34) Закрыть(ВозвращаемоеЗначение);
Возвращаемое значение будет результатом функции ОткрытьМодально..
СП открой чоли.
36 ILIAS
 
23.12.11
16:12
(18) И исполнишь "Гимн офисного работника" Слепакова Семена.
Видео с Гимном http://www.youtube.com/watch?v=UpZcQe_A4Gg :))
37 KulakoffAlex
 
23.12.11
16:13
Или при закрытии формы2 сделай Оповестить(), а в форме1 используй ОбработкуОповещения().
38 svchernova
 
23.12.11
16:13
щас.. мин..пробую
39 svchernova
 
23.12.11
16:14
(37) это же будет работать только для владельца вроде.. а я владельца формы2 н указывала
40 Mort
 
23.12.11
16:17
(39) Да забудь ты про оповестить. Тебе что форму открытую нужно будет оставить?
41 svchernova
 
23.12.11
16:20
(40) Забыла :))) Нет, форму2 мне закрыть нужно, я её закрываю
42 svchernova
 
23.12.11
16:26
(40) Морт, всё получилось!!!!!!!!!!! Ты меня по всем этим этапам провёл, спасибо тебе большое!
43 svchernova
 
23.12.11
16:27
И удачи в Новом Году - всем. :) Морт солнышко, я тебе благодарна очень :))
44 svchernova
 
23.12.11
16:29
Гимн офисного работника повеселил :)