|   |   | 
| 
 | Обработка загрузки файла | ☑ | ||
|---|---|---|---|---|
| 0
    
        Eeelena 03.03.21✎ 11:09 | 
        Клиент серверная база ERP , на сервере операционка Linux 
 Есть обработка самописная, которая считывает данные из Ексель. При выборе файла для загрузки на клиенте ругается, что нет доступа к файлу. Если эту же базу сделать файловой на Винде, загрузка проходит без проблем. Подскажите куда копать ? По серверной части не очень разбираюсь. | |||
| 1
    
        ДенисЧ 03.03.21✎ 11:10 | 
        На клиенте получать имя файла, пихать его в ХЗ, ХЗ передавать на сервер.
 На сервере получать из ХЗ, записывать во временный, полученный временный обрабатывать. | |||
| 2
    
        kzot 03.03.21✎ 11:35 | 
        (1) и удалять после обработки на сервере... они же скорее всего его заполняют и правят, не лучше прочитать на клиенте ?     | |||
| 3
    
        Михаил Козлов 03.03.21✎ 11:58 | 
        Если файл на клиенте, примерно так:
 &НаКлиенте Процедура ЗагрузитьДанные(Команда) ОчиститьСообщения(); АдресФайлаВоВременномХранилище = ""; ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьДанныеЗавершение", ЭтотОбъект); НачатьПомещениеФайла(ОписаниеОповещения, АдресФайлаВоВременномХранилище,Объект.ВыбранноеИмяФайла,, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьДанныеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт Если Результат Тогда //Состояние(Нстр("ru = 'Выполняется загрузка данных. Пожалуйста, подождите...'")); Объект.ВыбранноеИмяФайла = ВыбранноеИмяФайла; Файл = Новый Файл(ВыбранноеИмяФайла); Если Не Файл.Существует() Тогда ТекстСообщения = Нстр("ru = 'Указанный файл не существует'"); СообщитьПользователю(ТекстСообщения); Возврат; КонецЕсли; ЗагрузитьДанныеНаСервере(Адрес, Файл.Расширение); КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗагрузитьДанныеНаСервере(АдресФайлаВоВременномХранилище, Расширение) ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение); ДвоичныеДанные.Записать(ИмяВременногоФайла); Объект.табДокумент.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст); Файл = Новый Файл(ИмяВременногоФайла); Если Файл.Существует() Тогда УдалитьФайлы(ИмяВременногоФайла); КонецЕсли; //СообщитьПользователю(Нстр("ru = 'Загрузка данных успешно завершена'")); КонецПроцедуры | |||
| 4
    
        Eeelena 05.03.21✎ 07:31 | 
        (1) (2) (3) Благодарю, за помощь. Попробую (3)     | |||
| 5
    
        kzot 05.03.21✎ 08:04 | 
        (4) может толстого клиента как костыль ? )     | |||
| 6
    
        hhhh 05.03.21✎ 08:26 | 
        Загадочная вещь, табдок.Прочитать() на тонком клиенте нельзя, а табдок.Записать() можно.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |