Имя: Пароль:
1C
1С v8
Передача файлов с клиента на сервер
,
0 DmitryR
 
27.08.20
18:55
На клиенте есть 2 массива адресов изображений. Как передать их в процедуру на сервере? Соответственно на сервере должна быть возможность идентифицировать какое изображение какому массиву принадлежит.
Изначально использовалась следующая конструкция:
        ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьФайлКлиентЗавершение", ЭтаФорма);
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.МножественныйВыбор = Истина;
    
    НачатьПомещениеФайлов(ОписаниеОповещения, , ДиалогОткрытияФайла, Истина, УникальныйИдентификатор);

&НаКлиенте
Процедура ДобавитьФайлКлиентЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
    
    Если ВыбранныеФайлы <> Неопределено ТОгда
        PrintReportWordНаСервере(ВыбранныеФайлы);
    КонецЕсли;
    
КонецПроцедуры
1 Мандалай
 
27.08.20
18:56
Кури временное хранилище и двоичные данные.
2 d4rkmesa
 
27.08.20
19:19
(0) В чем отличие этих двух массивов? Обходом массива ВыбранныеФайлы их не идентифицировать?
3 Провинциальный 1сник
 
27.08.20
19:43
Можно просто сериализовать каждый файл в строку xml и передать с клиента на сервер. Хотя это не по феншую. Жаль, ЗначениеВСТрокуВнутр на клиенте не работает..
4 DmitryR
 
27.08.20
20:05
(2) Просто массивы с путями, должны вставляться в шаблон документа в разные таблицы. прим: mas1 -> tab1; mas2 -> tab2
5 Web00001
 
28.08.20
05:21
(0)>>Как передать их в процедуру на сервере?
Приблизительно вот так. Не благодари

&НаКлиенте
Процедура МояПроцедура()
  ПроцедураОбработкиМассивовНаСервере(Массив1, Массив2)
КонецПроцедуры

&НаСервере
Процедура ПроцедураОбработкиМассивовНаСервере(mas1, mas2)
  //делаем то, что надо
КонецПроцедуры

6 Web00001
 
28.08.20
05:23
Но тебе же нужно передать не массивы адресов изображений? Тебе надо передать на сервер сами изображения? Я правильно за тебя додумал?
7 Chameleon1980
 
28.08.20
07:21
ответ в 1
8 DmitryR
 
28.08.20
09:46
Нужна помощь. Или я совсем все не так делаю??
НаКлиенте
    
    АдресаФото = Новый СписокЗначений;
    Для Каждого Стр Из Объект.тФото Цикл
        ПолноеИмяФайла = Стр.Путь;
        ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
        АдресаФото.Добавить("фото",ДД);    
    КонецЦикла;
    Для Каждого Стр Из Объект.тФотоБрак Цикл
        ПолноеИмяФайла = Стр.Путь;
        ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
        АдресаФото.Добавить("брак",ДД);    
    КонецЦикла;
    
    Адрес = ПоместитьВоВременноеХранилище(АдресаФото, ЭтаФорма.УникальныйИдентификатор);
    PrintReportWordНаСервере(Адрес)

НаСервере
        СписокФото = ПолучитьИзВременногоХранилища(Адрес);
    
    Для Каждого Файл Из СписокФото Цикл    
        Если Файл.Значение = "фото" Тогда
                    пр = Файл.Представление;        <-------- Как вот это поместить во временный файл?
9 FIXXXL
 
28.08.20
09:50
(8)     Файл = Новый Файл(ПутьКФайлуНаДиске);
    
    ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлуНаДиске);
    АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
10 DmitryR
 
28.08.20
10:07
(9) Мне нужен список файлов, а не один
11 Web00001
 
28.08.20
11:32
(10) Какая разница, один тебе нужен файл или 20? 20 раз помести файл в хранилище и 20 полученных адресов(адресов во временном хранилище, а не адресов к файлу на твоем компьютере) положи в массив. Где возникла проблема то?
12 DmitryR
 
28.08.20
13:24
(11) Сразу бы так, Спасибо.
Для потомков
        //Клиент
    мФото = Новый Массив;//в параметр на сервер
    мБрак = Новый Массив;//в параметр на сервер
    Для Каждого Стр Из Объект.тФото Цикл
        ПолноеИмяФайла = Стр.Путь;           
         ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
        Адрес = ПоместитьВоВременноеХранилище(ДД, ЭтаФорма.УникальныйИдентификатор);
        мФото.Добавить(Адрес);
    КонецЦикла;
    Для Каждого Стр Из Объект.тФотоБрак Цикл
        ПолноеИмяФайла = Стр.Путь;        
         ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
        Адрес = ПоместитьВоВременноеХранилище(ДД, ЭтаФорма.УникальныйИдентификатор);
        мБрак.Добавить(Адрес);
    КонецЦикла;
    //Сервер
    Для Каждого Адрес Из мФото Цикл
        Фото = ПолучитьИзВременногоХранилища(Адрес);
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("gpg");
        Фото.Записать(ИмяВременногоФайла);