0
Mechanik21
19.09.22
✎
11:54
|
Вроде простой вопрос, но я что-то поплыл.
Через диалог файла на клиенте получил имя файла.
На сервере пытаюсь преобразовать файл в ТЗ через построитель.
Но такого файла на сервере, конечно же, нет т.к. сервер и клиент - это разные компьютеры.
Как правильно передать файл с клиента на сервер?
|
|
2
timurhv
19.09.22
✎
12:06
|
&НаКлиенте
Процедура <ИмяКоманды> (Команда)
Оповещение = Новый ОписаниеОповещения("ЗагрузитьДанныеИзExcelВыбораФайла", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = ЭтаФорма.УникальныйИдентификатор;
ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите файл Excel для загрузки'");
ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Файлы Excel (*.xlsx)|*.xlsx|Все файлы(*.*)|*.*'");
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзExcelВыбораФайла(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
СчитатьДанныеНаСервере(Результат);
КонецПроцедуры
&НаСервере
Процедура СчитатьДанныеНаСервере(ДанныеФайла)
ДвоичныеДанные = ПолучитьИЗВременногоХранилища(ДанныеФайла.Хранение);
Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ДанныеФайла.Имя));
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст); // либо значение
УдалитьФайлы(ИмяВременногоФайла);
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область(1, 1, ТабличныйДокумент.ВысотаТаблицы, ТабличныйДокумент.ШиринаТаблицы));
Построитель.Выполнить();
РезультатЧтения = Построитель.Результат.Выгрузить();
КонецПроцедуры
|
|