| 
    
        
     
     | 
    
    
  | 
Как передать файл в фоновое задание | ☑ | ||
|---|---|---|---|---|
| 
    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(Команда) ЗапуститьВыгрузкуЗагрузкуНаСервере(Новый ДвоичныеДанные(ИмяФайла)) КонецПроцедуры &НаСервере Функция ЗапуститьВыгрузкуЗагрузкуНаСервере(ДД) ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(ДД); Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода); КонецФункции Процедура МоеФоновое(ФайлДД) Экспорт Если ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда ЗаписьЖурналаРегистрации("Отладка", , , ,"Есть ДД"); Иначе ЗаписьЖурналаРегистрации("Отладка", , , ,"Нет ДД"); КонецЕсли; КонецПроцедуры  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |