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

&НаКлиенте
Процедура ЗагрузитьДанныеИзExcelВыбораФайла(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    СчитатьДанныеНаСервере(Результат);
    
КонецПроцедуры

&НаСервере
Процедура СчитатьДанныеНаСервере(ДанныеФайла)
    
    ДвоичныеДанные = ПолучитьИЗВременногоХранилища(ДанныеФайла.Хранение);
    Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ДанныеФайла.Имя));
    
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст); // либо значение
    
    УдалитьФайлы(ИмяВременногоФайла);
    
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область(1, 1, ТабличныйДокумент.ВысотаТаблицы, ТабличныйДокумент.ШиринаТаблицы));
    Построитель.Выполнить();
    РезультатЧтения = Построитель.Результат.Выгрузить();
    
КонецПроцедуры
3 Mechanik21
 
19.09.22
14:34
(2) Благодарю!