Имя: Пароль:
1C
1С v8
ВременноеХранилище, пропадает значение
,
0 samozvanec
 
11.03.13
12:33
вожусь с картинками, и тут такое дело. при выборе файлика сую картинку в хранилище, адрес в реквизите формы АдресКартинки. перед записью на сервере пишу в хранилище значения у объекта. при создании на сервере из хранилища значения получаю, сую во временное, адрес в АдресКартинки.

так вот при выходе из события ПриСозданииНаСервере значение в хранилище по этому адресу становится Неопределено. Почему?
1 samozvanec
 
11.03.13
12:50
аап ооп
2 samozvanec
 
11.03.13
14:09
вопрос актуален до сих пор
3 Maxus43
 
11.03.13
14:10
путь до временного сохранился? получай опять его
4 mikecool
 
11.03.13
14:13
а) неправильный путь
б) прошло время хранения и ВХ очистилось
5 Defender aka LINN
 
11.03.13
14:16
(4) Какое, нахрен, время хранения?
6 Maxus43
 
11.03.13
14:18
путь то какой? и на какой машине файл лежит?)
7 GROOVY
 
11.03.13
14:19
При создании ВХ нужно связать его с идентификатором формы или уникальным идентификатором. В противном случае будет как в (0).
8 Wobland
 
11.03.13
14:20
влезу со своим немного не тем, но рабочим кодом...

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   НЗ=РегистрыСведений.ФайлыЗаданий.СоздатьНаборЗаписей();
   НЗ.Отбор.Задание.Установить(Объект.Ссылка);
   НЗ.Прочитать();
   Если НЗ.Количество() Тогда
       Данные=НЗ[0].Файл.Получить();
       РасширениеФайла=НЗ[0].Расширение;
   Иначе
       Данные=Неопределено;
       Расширение="";
   КонецЕсли;
   Если Данные<>Неопределено Тогда
       АдресФайла=ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
   КонецЕсли;        
КонецПроцедуры

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда
       Возврат;
   КонецЕсли;
   НЗ=РегистрыСведений.ФайлыЗаданий.СоздатьНаборЗаписей();
   НЗ.Отбор.Задание.Установить(Объект.Ссылка);
   Запись=НЗ.Добавить();
   //к этому моменту ссылка не должна быть пустой
   Запись.Задание=Объект.Ссылка;
   Запись.Файл=Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресФайла));
   Запись.Расширение=РасширениеФайла;
   НЗ.Записать();
КонецПроцедуры
9 samozvanec
 
11.03.13
14:33
(3) так и делаю
(7) сейчас попробую
10 mikecool
 
11.03.13
14:35
(5) см (7)
по первых встречал где то упоминание в 20 минут, после которого ВХ даже со связями удалялось, но тут могу наврать
11 samozvanec
 
11.03.13
14:43
(7) спасибо, работает
(10) чето про таймер не верится. СП говорит, что содержимое очищается при разных вызовах, запросах сервера с общих модулей и при получении формы. что из этого успевает произойти - не понятно.
12 Wobland
 
11.03.13
14:46
...я в талмуде ещё к 8.0 встречал упоминание про 20 минут как время очистки кэша или чего-то в этом духе. но давно, так что не уверен
13 Defender aka LINN
 
11.03.13
14:57
(10) Нет никаких 20 минут. Через 20 минут примерно COM-объекты, которые в ВХ лежат, отмирают, само хранилище при этом живет нормально.