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

Обработка загрузки файла

Обработка загрузки файла
Я
   Eeelena
 
03.03.21 - 11:09
Клиент серверная база ERP , на сервере операционка Linux

Есть обработка самописная, которая считывает данные из Ексель. При выборе файла для загрузки на клиенте ругается, что нет доступа к файлу. Если эту же базу сделать файловой на Винде, загрузка проходит без проблем.
Подскажите куда копать ? По серверной части не очень разбираюсь.
   ДенисЧ
 
1 - 03.03.21 - 11:10
На клиенте получать имя файла, пихать его в ХЗ, ХЗ передавать на сервер.
На сервере получать из ХЗ, записывать во временный, полученный временный обрабатывать.
   kzot
 
2 - 03.03.21 - 11:35
(1) и удалять после обработки на сервере... они же скорее всего его заполняют и правят, не лучше прочитать на клиенте ?
   Михаил Козлов
 
3 - 03.03.21 - 11:58
Если файл на клиенте, примерно так:
&НаКлиенте
Процедура ЗагрузитьДанные(Команда)    
    ОчиститьСообщения();
    АдресФайлаВоВременномХранилище = "";    
    ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьДанныеЗавершение", ЭтотОбъект);
    НачатьПомещениеФайла(ОписаниеОповещения, АдресФайлаВоВременномХранилище,Объект.ВыбранноеИмяФайла,, УникальныйИдентификатор);        
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьДанныеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    Если Результат Тогда        
        //Состояние(Нстр("ru = 'Выполняется загрузка данных. Пожалуйста, подождите...'"));

        Объект.ВыбранноеИмяФайла = ВыбранноеИмяФайла;
        Файл = Новый Файл(ВыбранноеИмяФайла);
        Если Не Файл.Существует() Тогда            
            ТекстСообщения = Нстр("ru = 'Указанный файл не существует'");
            СообщитьПользователю(ТекстСообщения);
            Возврат;            
        КонецЕсли;        
        ЗагрузитьДанныеНаСервере(Адрес, Файл.Расширение);
    КонецЕсли;    
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьДанныеНаСервере(АдресФайлаВоВременномХранилище, Расширение)    
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
    ДвоичныеДанные.Записать(ИмяВременногоФайла);                
    Объект.табДокумент.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);    
    Файл = Новый Файл(ИмяВременногоФайла);
    Если Файл.Существует() Тогда            
        УдалитьФайлы(ИмяВременногоФайла);
    КонецЕсли;
    //СообщитьПользователю(Нстр("ru = 'Загрузка данных успешно завершена'"));    

КонецПроцедуры
   Eeelena
 
4 - 05.03.21 - 07:31
(1) (2) (3) Благодарю, за помощь. Попробую (3)
   kzot
 
5 - 05.03.21 - 08:04
(4) может толстого клиента как костыль ? )
   hhhh
 
6 - 05.03.21 - 08:26
Загадочная вещь, табдок.Прочитать() на тонком клиенте нельзя, а табдок.Записать() можно.

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