Имя: Пароль:
1C
 
ПолучитьИзВременногоХранилища возвращает неопределено в фоновом задании
0 Сергиус
 
29.10.15
14:11
1С:Предприятие 8.3 (8.3.6.2100) - из Серверной процедуры формы делаю вызов фонового задания

ПараметрыДляФЗ = Новый Массив;
ДДФайл = Новый ДвоичныеДанные(ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(ДДФайл,УникальныйИдентификатор);
ПараметрыДляФЗ.Добавить(Адрес);

ФоновоеЗадание = ФоновыеЗадания.Выполнить("ИмяОбщегоМодуля.МояПроцедура",
        ПараметрыДляФЗ, Новый УникальныйИдентификатор, "Тестовое задание");

После этого выполнение передается в процедуру, и там при попытке получить по адресу выдается неопределенно.

Процедура МояПроцедура(АдресФайла)
   ДДФайла = ПолучитьИзВременногоХранилища(АдресФайла);
КонецПроцедуры

Вот ДДФайла всегда неопределено. Какие способы есть передать таки файл в фоновую процедуру?
1 Лефмихалыч
 
29.10.15
14:13
файл большой? Может просто его в виде ДвочныеДанные параметром передать? Один ведь кол ты его на сервер в этом виде совать пытаешься, отправляя во временное хренилище
2 Сергиус
 
29.10.15
14:14
(1)19 МБ, попробую так.
3 Сергиус
 
29.10.15
14:16
+(2)Спасибо, так прокатило.
4 Лефмихалыч
 
29.10.15
14:17
ну... во временное хранилище онточно так же передается путем сериализации ДвоичныхДанных в строку и пропихивания этой строки серверу.

По этому, может лучше через шару какую или в БД хранить. Хотя в БД - та же сериализация двочных данных.
5 Сергиус
 
29.10.15
14:20
(4)Возможно это глюк какой-то именно функции ПолучитьИзВременногоХранилища. Еще в "лохматом" 10-м году, для 8.2.11 была подобная ошибка:

10055148  Метод ПолучитьИзВременногоХранилища

Проблема:
Метод ПолучитьИзВременногоХранилища, вызванный в фоновом задании, возвращает значение Неопределено.
Дата публикации: 2010-06-07
6 Лефмихалыч
 
29.10.15
14:22
Мне, кстати, это сотонинство временнохранилищное тоже всегда неопределено возвращает. С учетом вышеописанного механизма работы, я забил на него болт и передаю туда-сюда двоичные данные, когда надо.
Результат-то тот же, только код проще становится и Неопределено не возвращается.
7 Лефмихалыч
 
29.10.15
14:23
каюсь, так сказать
8 ИсчадиеADO
 
29.10.15
14:23
в фоновом задании 1с не запилило получение из врем. хранилища. только передачу. аргументировали типа только для того чтоб вернуть результат. я на dёфоруме находил, там Максим Радченко, емнип, отвечал
9 ИсчадиеADO
 
29.10.15
14:24
из фонового временное хранилище получает. важно чтоб ссылка на форме хранилась
10 DmitrO
 
29.10.15
14:28
(6)У них просто временное хранилище разделено на сеансы, данные временного хранилища каждого сеанса изолированы, на сколько я понимаю это для того чтобы доступ к ним не синхронизировать.

Единственный случай когда данные врем хранилища переходят из одного сеанса в другой, это при завершение фонового данные переходят в вызвавший его сеанс.
11 DmitrO
 
29.10.15
14:30
(10)И возможен этот случай, только потому, что сеанс фонового задания уже завершен.
12 Лефмихалыч
 
29.10.15
14:30
(10) у меня даже в пределах одного сеанса не получалось (правда в последний раз это еще в 8.2 было)
из &НаКлиенте в &НАСервере черех гноилище это передать ни чего, кроме Неопределено. Неопределено отлично передается, а вот файл - нихт. Вообще не понимаю, зачем оно нужно.
13 ИсчадиеADO
 
29.10.15
14:31
(10) а почему это только при завершении? как же тогда реализовано получение прогресс бара в фоновом задании?
14 Гёдза
 
29.10.15
14:31
Возможно только из фонового в сеанс, но не обратно
15 DmitrO
 
29.10.15
14:31
(12)да ладно.. у меня проблем не было
16 Лефмихалыч
 
29.10.15
14:32
(15) ну, даже на солнце пятна бывают же :)
17 DmitrO
 
29.10.15
14:32
(13)прогресс бар на сообщениях пользователю, хранилище тут непричем
18 ИсчадиеADO
 
29.10.15
14:39
(17) % берется из периодически из результатов фонового задания :)
19 ИсчадиеADO
 
29.10.15
14:39
модуль длительные операции. даж метод есть
20 DmitrO
 
29.10.15
15:02
(18)Исчадиеее, специально для тебя посмотрел в СП )
ПоместитьВоВременноеХранилище

...
Примечание:

Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса.
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания.
21 ИсчадиеADO
 
29.10.15
16:18
(20) специально для тебя запилил  обработку которая получает структуру из фонового задания до его завершения :)
врет твоя справка, ага.
сам попробуй
22 vhl
 
29.10.15
16:27
(19) ты вообще этот модуль смотрел?
23 vhl
 
29.10.15
16:33
(0) Если хочешь просто передать файл в фоновое задание, то вот тебе решение: Как передать файл в фоновое задание
24 ИсчадиеADO
 
29.10.15
16:37
ок, да признаю, сам дурак. на файловой и на клиент серверной отрабатывает по разному (на файловой получает). а в длительных операциях запилено получение сообщений пользователя из фонового задания и поиск сообщения в формате.
ок
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.