Имя: Пароль:
1C
 
8.2 ПолучитьИзВременногоХранилища возвращает Неопределено
0 famnam
 
25.10.10
11:53
Хочу в табличной части хранить список импортированных в базу файлов...

Процедура ПередЗаписьюНаСервере
...
Для каждого ТекСтрока Из Объект.Вложения Цикл
           Если ЭтоАдресВременногоХранилища(ТекСтрока.АдресХранилища) Тогда
               //Данные = "";
               Данные = ПолучитьИзВременногоХранилища(ТекСтрока.АдресХранилища);
               ХЗ =  Новый ХранилищеЗначения(Данные);
               НовыйОбъект = Справочники.Файлы.СоздатьЭлемент();
               НовыйОбъект.Наименование = ТекСтрока.ИмяФайла;
               НовыйОбъект.Хранилище = ХЗ;
               НовыйОбъект.Записать();
               ТекСтрока.Файл = НовыйОбъект;
               
               УдалитьИзВременногоХранилища(ТекСтрока.АдресХранилища);
           КонецЕсли;
       КонецЦикла;

...
КонецПроцедуры

Где Вложения.Файл это реквизит ТЧ типа СправочникСсылка.
1 famnam
 
25.10.10
11:54
&НаКлиенте
Процедура ДобавитьФайл(Команда)
   Перем АдресВременногоХранилища;
   Перем ВыбранноеИмя;
   
   Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда
       НоваяСтрока = Объект.Вложения.Добавить();
       НоваяСтрока.ИмяФайла = ВыделитьИмяФайла(ВыбранноеИмя);
       НоваяСтрока.АдресХранилища = АдресВременногоХранилища;
       ЕстьНовыеВложения = Истина;
   КонецЕсли;

КонецПроцедуры
2 famnam
 
25.10.10
11:55
вообщем, я так понял, файлы в хранилище не попадают
3 Abs4
 
25.10.10
11:59
ПоместитьФайл имеет еще один параметр - УникальныйИдентификаторФормы

Если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Т.е. скорее всего такие вызовы есть и значение в хранилище очищается.
4 famnam
 
25.10.10
12:03
(4) Блин, точно! так и есть... теперь заработало. Спасибо!
5 famnam
 
25.10.10
12:32
Файлы в хранилище! А как их теперь оттуда извлечь?)))

&НаКлиенте
Процедура ВложенияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   Адрес        = ПолучитьАдресФайла(ВыбраннаяСтрока);
   
   ИмяФайла    = Объект.Вложения[ВыбраннаяСтрока].ИмяФайла;
   ПолучитьФайл(Адрес, ИмяФайла, Истина);

КонецПроцедуры

&НаСервере
Функция ПолучитьАдресФайла(ВыбраннаяСтрока)
   ФайлСсылка = Объект.Вложения[ВыбраннаяСтрока].Файл;
   
   Адрес = ПоместитьВоВременноеХранилище(ФайлСсылка.Хранилище.Получить(), ЭтаФорма.УникальныйИдентификатор);

   Возврат Адрес;
КонецФункции
6 famnam
 
25.10.10
12:34
После ПолучитьФайл вылезает

Ошибка при выполнении файловой операции  '/e1cib/tempstorage/31c723db-5e7d-4c35-8816-cb12ff37446d'
7 Abs4
 
25.10.10
13:17
в "ПолучитьФайл" второй параметр это место куда будет сохраняться файл, что там записано? судя по всему там недопустимый путь