Имя: Пароль:
1C
1С v8
Не извлекается объект из временного хранилища
0 unknown181538
 
16.11.11
13:23
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

   УОД = Обработки.УниверсальныйОбменДаннымиXML.Создать();
   ...
   АдресУниверсальнойЗагрузки = ПоместитьВоВременноеХранилище(УОД,УникальныйИдентификатор);
   
КонецПроцедуры

Процедура ВыгрузитьНаСервере()
   
   УОД = ПолучитьИзВременногоХранилища(АдресУниверсальнойЗагрузки);
   //ВрФайлОбмена = ПолучитьИмяВременногоФайла();


Извлекается "Неопреледено", при этом раньше все работало. Т.е. не работало, если выгружать повторно. Или вообще, то работало, то не работало.
В чем трабл?
1 H A D G E H O G s
 
16.11.11
13:27
Форма-владелец УникальныйИдентификатор умерла?
2 unknown181538
 
16.11.11
13:28
(1) Я ее не закрывал. Как еще она могла умереть?
3 Buster007
 
16.11.11
13:30
ну тогда напиши Новый УникальныйИдентификатор
4 Buster007
 
16.11.11
13:30
+(3) и черт с этим УИДом формы ) только удалять не забывай из временного хранилища
5 unknown181538
 
16.11.11
13:33
"Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. "
Честно говоря, вообще не догоняю этой фразы.
Т.е. будет удалено при любом вызове сервера из общего модуля?
6 Buster007
 
16.11.11
13:36
а дальше прочитай )
7 Buster007
 
16.11.11
13:36
(6) это к (5)
я так полагаю, что при любом вызове сервера перечисленном в том, что ты написал
8 unknown181538
 
16.11.11
13:40
Т.е. если по дороге я вызову серверную процедуру общего модуля, то все умрет?
Надо что-нибудь оторвать тому, кто составлял эту фразу.
9 unknown181538
 
16.11.11
13:42
АдресУниверсальнойЗагрузки = Новый УникальныйИдентификатор;
   ПоместитьВоВременноеХранилище(УОД,АдресУниверсальнойЗагрузки);

"Неправильный путь к файлу..." и все падает.
10 Buster007
 
16.11.11
13:42
(9) АдресУниверсальнойЗагрузки = ПоместитьВоВременноеХранилище(УОД,Новый УникальныйИдентификатор);
11 unknown181538
 
16.11.11
13:48
(10) все равно не извлекается. Кстати, я вчера платформу обновил.
12 Buster007
 
16.11.11
13:57
(11) ну тогда хз ) у меня всё получается... правда не обработка, но получается. платформа 14.533
13 Buster007
 
16.11.11
13:58
обработку можно и в реквизите формы хранить...
14 unknown181538
 
16.11.11
14:00
(12) Обнаружил, что в файловом варианте работает.
(13) А вот это попробую.
15 unknown181538
 
17.11.11
11:04
(13) Не врубаюсь, как ее туда запихнуть...
16 H A D G E H O G s
 
17.11.11
11:06
если юзаем Новый УникальныйИдентификатор то у вас есть не более 20 минут.
17 unknown181538
 
17.11.11
11:07
(16) У меня и так не получилось...
Возможно что-то с релизом платформы, ибо в файловом работает?
18 unknown181538
 
17.11.11
11:32
ап?
19 unknown181538
 
17.11.11
11:46
Черт побери, теперь работает...
20 unknown181538
 
30.11.11
17:01
То работает, то не работает. Иногда перезапуск помогает. Ничего не понимаю.
21 Defender aka LINN
 
30.11.11
17:04
А что изменится, если обработку создавать при выгрузке, а не при открытии формы?
22 QLgKR
 
30.11.11
17:09
(0) во временное хранилище можно помещать только объекты для которых указано что они сериализуются. ОбработкаОбъект не сериализуется. Поэтому так делать нельзя.
23 Buster007
 
30.11.11
17:24
(15) ты её туда запихнул или нет?
24 unknown181538
 
30.11.11
17:37
(23) нет. Пока во хранилище.
(20) Значения реквизитов обработки меняются. Делал как раньше было в обычных формах. Хотя, этого действительно можно избежать.
25 unknown181538
 
30.11.11
17:37
(22)Буду знать.
26 Buster007
 
30.11.11
17:41
(24) хм.. реквизит с типом ОбработкаОбъект.ИмяОбработки
27 Buster007
 
30.11.11
17:42
а вообще суть задачи не ясна...
28 unknown181538
 
30.11.11
17:48
(26) Ну скажем, если взять обработку "Выгрузка УТ10 - БП 1.6" там сделано так же. Создается объект обработки "Универсальный обмен XML".
29 Buster007
 
30.11.11
17:58
(28) ну вот.
засовываешь её в реквизит формы, как указано в (26), а потом обращаешься к этой обработке так, как будто ты написал
Обработка1 = Обработки.обработка1.Создать(); или как-то так там пишется. не помню.
Только перед вызовом экспортных методов из модуля, тебе надо будет её из реквизита формы сконвертировать, т.е. написать что-то типа
ОбработкаСервер = РеквизитФормыВЗначение("РеквизитФормыСОбработкой");
ОбработкаСервер.ИмяЭкспортнойПроцедуры();
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.