Вход | Регистрация
 

УТ 11.4 Помогите извлечь файл из Справочника .ПрисоединенныеФайлы

УТ 11.4 Помогите извлечь файл из Справочника .ПрисоединенныеФайлы
Я
   bvb
 
16.04.21 - 15:12
Есть реализация с прикрепленным файлом
Я нахожу ссылку в справочнике "РеализацияТоваровУслугПрисоединенныеФайлы"

Я поучаю структуру с данными файла
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ССылкаНаЭлементРеализацияТоваровУслугПрисоединенныеФайлы,
        Неопределено, УникальныйИдентификатор, Неопределено, );

Там есть ссылка на имя в рабочем каталоге - но самого файла по данной ссылке не существует
ПутьКФайлуExcel = ДанныеФайла.ПолноеИмяФайлаВРабочемКаталоге;

КАк мне выгрузить файл из базы во временный файл на клиенте для его последующей обработки ?

К слову сказать я так и не могу понять где в УТ хранятся двоичные данные самого присоединеного файла.
Реквизит ФайлХранилище = Неопределено
   bvb
 
1 - 16.04.21 - 15:46
Сделал так :
Походу колхозно - но работает

&НаСервере
Функция ПолучитьДвоичныеданныеФайлExcelИзПрисоединеныхФайлов (Док)
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Спр.Ссылка КАК Ссылка,
    |    Спр.Расширение КАК Расширение,
    |    Спр.ТипХраненияФайла КАК ТипХраненияФайла
    |ИЗ
    |    Справочник.ОтчетКомиссионераПрисоединенныеФайлы КАК Спр
    |ГДЕ
    |    Спр.ВладелецФайла = &Док";
    
    Запрос.УстановитьПараметр("Док",Док);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Если  Выборка.Расширение = "xlsx" И Выборка.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
            Возврат ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Выборка.ССылка); 
        КонецЕсли;    
    КонецЦикла;    
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ) 
    
    ПриОткрытииНаСервере();
    
    ДвоичныеДанные =  ПолучитьДвоичныеданныеФайлExcelИзПрисоединеныхФайлов (ОбъектЗаполнения);
    ПутьКФайлуExcel = ПолучитьИмяВременногоФайла("xlsx");
    ДвоичныеДанные.Записать(ПутьКФайлуExcel);
    
    ПроверкаФайла = Новый Файл (ПутьКФайлуExcel);
    Если ПроверкаФайла.Существует() Тогда
        ПрочитатьExcelНаКлиенте();
        
    КонецЕсли; 
    
КонецПроцедуры

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.