Имя: Пароль:
1C
1С v8
Передача структуры значений между формами
0 Legavaz
 
22.12.11
16:12
8.2
У меня проблема, прежде чем сформировать форму нужно получить группы номенклатуры от пользователя которые он хочет вывести на печать, так вот. в толстом клиенте решил проблему открытием модальной пром. формы после чего с нее читаю структуру типа (новый структура ("ТЧ1",ТаблицаЗначений)), при запуске Тонкого клиента, увы сей финт не удался. ругается на структуру хотя я ее делаю функцией с префиксом  &сервер.
Пытался решить путем временного хранилища, но вызов процедуры печати работает от команды обработки, хоть и владелец есть но данные приходят Неопределено, может кто сталкивался с проблемой поделитесь?
спасибо.
1 H A D G E H O G s
 
22.12.11
16:15
Ниче не понял
2 H A D G E H O G s
 
22.12.11
16:16
В ПриСозданииНаСервере() ты можешь передать Структуру в ТЗ внутре, а после, ты уже на ТонкомКлиенте, там ТЗ нелигитимна.
3 YF
 
22.12.11
16:16
+(1) И я тоже
4 H A D G E H O G s
 
22.12.11
16:16
Структуру в ТЗ внутре -> Структуру c ТЗ внутре
5 H A D G E H O G s
 
22.12.11
16:18
(0)
Тоесть, так
Форма=ПолучитьФорму("ТвояФорма",СтруктураСТЗ);
Форма.Открыть();
можно, а так:
Форма=ОткрытьФорму("ТвояФорма");
Форма.Структура=СтруктураСТЗ;
Форма.Открыть();

нельзя
6 H A D G E H O G s
 
22.12.11
16:18
И так тоже:
Форма=ПолучитьФорму("ТвояФорма");
Форма.Структура=СтруктураСТЗ;
Форма.Открыть();

нельзя
7 Legavaz
 
22.12.11
16:55
мне нужно данные получить из формы после ее закрытия

Форму открываю
СтруктураВозврата    =    ОткрытьФормуМодально("Обработка._ПечатьСкладскойДокумент.Форма.ФормаДеленияПоПФ", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник);

В  структуре возврата в Толстом клиенте данные возвращаются.
вот.
в тонком клиенте события на открываемой форме:
&НаКлиенте
Процедура ПриЗакрытии()
   
   
   АдресТоваровВХранилище = ПоместитьТоварыВХранилище(); (!!! ругается сдесь! )
   Структура = Новый Структура("АдресТоваровВХранилище", АдресТоваровВХранилище);
   
   ОповеститьОВыборе(АдресТоваровВХранилище);
КонецПроцедуры

 &НаСервере
Функция ПоместитьТоварыВХранилище()
   СтруктураЗадания            =    Новый Структура("ТабЧасть1,ТабЧасть2,ТабЧасть3",
                                                       Объект.ТабЧасть1.Выгрузить(),
                                                       Объект.ТабЧасть2.Выгрузить(),
                                                       Объект.ТабЧасть3.Выгрузить());

                                                       
   //СтруктураЗадания            =    Новый Структура("ТабЧасть1,ТабЧасть2,ТабЧасть3",
   //                                                    Объект.ТабЧасть1.Выгрузить(),
   //                                                    Объект.ТабЧасть2.Выгрузить());
   //                                                    
   //Объект.Переменная        =    СтруктураЗадания;
   //АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(СтруктураЗадания, УИНФормы);//УникальныйИдентификатор
   
   Возврат СтруктураЗадания;
                                                       
КонецФункции
8 Legavaz
 
22.12.11
16:58
тз - нелигитимна )) видимо ключевые слова. как я понимаю таблица значений на клиенте не существует впринципе?  не может быть!
9 H A D G E H O G s
 
22.12.11
17:09
Почему закомменчены

   //АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(СтруктураЗадания, УИНФормы);//УникальныйИдентификатор

?
10 H A D G E H O G s
 
22.12.11
17:11
УИНФормы - опасно.

Если форма закроется ДО ТОГО, как форма владелец получит данные из хранилища, хранилище накроется мягким ассом!

Надо так
АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(СтруктураЗадания, Новый УникальныйИдентификатор());

20 минут на всех хватит © Почти Гейтс, Билл Гейтс.
11 apokrit
 
22.12.11
17:11
(10) В предложенном варианте, если данные из ВХ не удалить - они там то конца сеанса останутся лежать.
12 H A D G E H O G s
 
22.12.11
17:20
(11) Удалите, как считаете в форме владельце, либо они сами удаляться через 20 минутъ. Я же написал вам выше!
13 Legavaz
 
22.12.11
17:29
пробовал, не выходит. почему решили что данные будут жить 20 минут. в документации написано до первого обращения к серв. процедурам.

Уин же передается видимо для того чтобы продлить жизнь хранилищу по владельцу формы. и это нисколько не опасно.
14 Legavaz
 
22.12.11
17:31
закоментарил так как уже сделал дочертиков попыток. разными возможностями.
15 H A D G E H O G s
 
22.12.11
17:32
(13) Потому что внимательно читал СП.

Уин же передается видимо для того чтобы продлить жизнь хранилищу по владельцу формы. и это нисколько не опасно.

Там по коду фиг поймещь, чей это УИН
16 Legavaz
 
22.12.11
17:53
очень жаль. ((
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший