Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 08:10

НачатьПолучениеФайловССервера

Автор Александр Мун, 24 фев 2021, 13:22

0 Пользователей и 1 гость просматривают эту тему.

Александр Мун

Добрый день!
Помогите разобраться с НачатьПолучениеФайловССервера

&НаКлиенте
Процедура СкачатьФайл(Команда)
    ВыбранныеСтроки = Элементы.ТаблицаФайлы.ВыделенныеСтроки;
    Если ВыбранныеСтроки.Количество() = 0 Тогда
Возврат;
    КонецЕсли;
    ИмяФайловДляСкачивания = Новый Массив();
    Для Каждого Строка Из ВыбранныеСтроки Цикл
        ТекСтрока = ТабЧастьФалы.НайтиПоИдентификатору(Строка);
        ИмяФайла = ТекСтрока.Наименование + ТекСтрока.Формат;
        Адрес = ПодготовитьФайлНаСервере(ИмяФайла);
        ИмяФайловДляСкачивания.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла, Адрес));
    КонецЦикла;

    ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;
    ПараметрыДиалога.Заголовок = "Сохранение фалов";
    ПараметрыДиалога.ВыборКаталога = Истина;
    НачатьПолучениеФайловССервера(ИмяФайловДляСкачивания, ПараметрыДиалога);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПодготовитьФайлНаСервере(ИмяФайла)
    Путь = "D:\IIS\DataBase\scan\" + ИмяФайла;
    Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Путь));
    Возврат Адрес;
КонецФункции


В итоге если выбрать один файл, то все работает отлично, но если выбрать более одного, то получаю ошибку:
ЦитироватьОшибка при выполнении файловой операции  '/e1cib/tempstorage/4507f143-d20a-4ebb-88f7-e173739b45ea?seanceId=4c20eb1b-4703-4608-96be-addef04c2e46'. Значение данного типа невозможно преобразовать для передачи как файл. (Неопределено)
В тоже время переменные ИмяФайла и Адрес заполняются корректно, и пустых в массиве нет.

Александр Мун

Рабочий код в общем, такой:


&НаКлиенте
Процедура СкачатьФайл(Команда)
ВыбранныеСтроки = Элементы.ТаблицаФайлы.ВыделенныеСтроки;
Если ВыбранныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ИмяФайлов = Новый Массив();
Для Каждого Строка Из ВыбранныеСтроки Цикл
ТекСтрока = ТабЧастьФалы.НайтиПоИдентификатору(Строка);
ИмяФайла = ТекСтрока.Наименование + ТекСтрока.Формат;
ИмяФайлов.Добавить(ИмяФайла);
КонецЦикла;
       
ИмяФайловДляСкачивания = ПодготовитьФайлыНаСервере(ИмяФайлов);

ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов("Выберите каталог для сохранения файлов", Истина);
//ПараметрыАрхива = Новый ПараметрыПолученияАрхиваФайлов("files.zip", РежимПолученияАрхиваФайлов.ПолучатьАрхивВсегда);
НачатьПолучениеФайловССервера(ИмяФайловДляСкачивания, ПараметрыДиалога);

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

&НаСервереБезКонтекста
Функция ПодготовитьФайлыНаСервере(ИмяФайлов)

ИмяФайловДляСкачивания = Новый Массив();

Для Каждого ИмяФайла Из ИмяФайлов Цикл
Путь = "D:\IIS\DataBase\scan\" + ИмяФайла;
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Путь));
ИмяФайловДляСкачивания.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла, Адрес));
КонецЦикла;

Возврат ИмяФайловДляСкачивания;

КонецФункции


Теги:
Рейтинг@Mail.ru

Поиск