|
Как передать файл в фоновое задание | ☑ | ||
---|---|---|---|---|
0
vhl
03.09.15
✎
14:45
|
Платформа 8.3.6.2152
Нужно из УФ передать файл в фоновое задание для последующей обработки. Делал так: &НаКлиенте Процедура Команда1(Команда) ФайлДД = Новый ДвоичныеДанные(ИмяФайла); АдресХранилищаДляФонового = ПоместитьВоВременноеХранилище(ФайлДД, УникальныйИдентификатор); ЗапуститьВыгрузкуЗагрузкуНаСервере(АдресХранилищаДляФонового) КонецПроцедуры &НаСервере Функция ЗапуститьВыгрузкуЗагрузкуНаСервере(АдресХранилищаДляФонового) ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(АдресХранилищаДляФонового); Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода); КонецФункции В общем модуле: Процедура МоеФоновое(АдресХранилища) Экспорт ФайлДД = ПолучитьИзВременногоХранилища(АдресХранилища); Если ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда ЗаписьЖурналаРегистрации("Отладка", , , ,"Есть ДД"); Иначе ЗаписьЖурналаРегистрации("Отладка", , , ,"Нет ДД"); КонецЕсли; КонецПроцедуры Пробовал так: ПомещаемыеФайлы = Новый Массив; ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла)); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор) Тогда Возврат; КонецЕсли; АдресХранилищаДляФонового = ПомещенныеФайлы[0].Хранение; Пробовал так: АдресХранилищаДляФонового = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); ПоместитьФайл(АдресХранилищаДляФонового, ИмяФайла, , Ложь); Из фонового на клиент через временное хранилище нормально передается, а вот с клиента в фоновое - никак почему-то. |
|||
1
VikingKosmo
03.09.15
✎
14:50
|
потому что так и было задумано...
|
|||
2
vhl
03.09.15
✎
14:55
|
Забыл сказать, иногда файл передается, но не могу понять в каком случае, так что (1) в пролете.
|
|||
3
Lexey_
03.09.15
✎
15:08
|
(0) ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
<Адрес>: В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы. |
|||
4
VikingKosmo
03.09.15
✎
15:14
|
(2) врешь, потому что "Также позволяет поместить данные из фонового задания в родительский сеанс". Из ФЗ в Родительский сеанс, Карл!
|
|||
5
Serginio1
03.09.15
✎
15:18
|
Base64Строка,Base64Значение да и ДД сериализуются правда в тот же Base64
|
|||
6
vhl
03.09.15
✎
15:20
|
(3) Форма не закрывается
|
|||
7
vhl
03.09.15
✎
15:22
|
(4) Это я еще в (0) написал, зачем ты мне повторяешь это?
|
|||
8
vhl
03.09.15
✎
15:50
|
В общем все оказалось довольно просто. Получается можно тупо передавать ДвоичныеДанные как параметр к фоновому заданию. Для неквалифицированных любителей цитировать справку и рассказывать что "так и задумано" рабочий код:
&НаКлиенте Процедура Команда1(Команда) ЗапуститьВыгрузкуЗагрузкуНаСервере(Новый ДвоичныеДанные(ИмяФайла)) КонецПроцедуры &НаСервере Функция ЗапуститьВыгрузкуЗагрузкуНаСервере(ДД) ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(ДД); Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода); КонецФункции Процедура МоеФоновое(ФайлДД) Экспорт Если ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда ЗаписьЖурналаРегистрации("Отладка", , , ,"Есть ДД"); Иначе ЗаписьЖурналаРегистрации("Отладка", , , ,"Нет ДД"); КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |