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

1С:Предприятие ::

Метки: 

Выбор файла в тонком клиенте

Я
   33554432
 
11.04.17 - 10:47
У меня есть обработка по загрузке xml, у меня она работает, но я запускаю локально в файловой базе. У клиента серверная база и файл открывается с тонкого клиента, пишется что файл не найден по указанному пути. Что я делаю не так? Код выбора файла такой

&НаКлиенте
Процедура Загрузить(Команда)
    ЗагрузитьНаСервере(ФайлПоставкиXML);
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНаСервере(ФайлПоставкиXML)
    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ФайлПоставкиXML);
 
 
   Strogg
 
1 - 11.04.17 - 10:49
(0) если процедура компилируется на сервере - то и файловую систему он серверную видит. ТАк что файлик надо закидывать в соотв. каталог именно на сервере :)
   Мыш
 
2 - 11.04.17 - 11:22
(1) +
Или передавать файл с клиента на сервер )
   spiller26
 
3 - 11.04.17 - 11:30
(2) Передавай файл на Сервер.

    ПутьВременногоФайлаXML = ПолучитьИмяВременногоФайла("xml");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Объект.ИмфФайлаНаКлиенте);    
    ДвоичныеДанные.Записать(ПутьВременногоФайлаXML);

Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ПутьВременногоФайлаXML);
...        
        УдалитьФайлы(ПутьВременногоФайлаXML);

Немного теории:
Как только с клиента переходит все на &НаСервере все выполняется на сервере (у него нет доступа больше к вашем ресурсам)
Теперь что долно происходит:
файл передается на сервак, который временно его пихает в temp, потом обрабатывает его там, затем нужно его удалить, чтобы мусор не собирался.
   33554432
 
4 - 11.04.17 - 11:53
(2,3)
Идею понял, что надо на сервер с клиента файл передать. С кодом не совсем понятно, что пишется на клиенте, а что на сервере.
   sapphire
 
5 - 11.04.17 - 11:55
Двоичные данные и так спокойно передаются с клиента на сервер без хранилища.
   spiller26
 
6 - 11.04.17 - 12:02
(4) Это все на Сервере
Файл он берет из этого реквизита Объект.ИмфФайлаНаКлиенте - где валяется файл на клиентской машине
   33554432
 
7 - 11.04.17 - 12:08
(6)
у меня так пишется, что неправильный путь к файлу
   spiller26
 
8 - 11.04.17 - 12:08
Вот как у меня происходит
//Объект.ФайлEXCEL - строка

//Объект.КлючФайлаEXCEL - Произвольный

&НаКлиенте
Процедура ФайдEXCELНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтаФорма);
    
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытияФайла.Фильтр                      = "Файлы Excel (*.xlsx) |*.xlsx";
    ДиалогОткрытияФайла.Заголовок                   = "Выберите файл таблицы Excel";
    ДиалогОткрытияФайла.ПредварительныйПросмотр     = Ложь;
    ДиалогОткрытияФайла.МножественныйВыбор          = Ложь;
    ДиалогОткрытияФайла.Расширение                  ="xls;xlsx";
    ДиалогОткрытияФайла.ИндексФильтра               = 0;
    ДиалогОткрытияФайла.ПолноеИмяФайла              = Объект.ФайлEXCEL;
    ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина;
    
    НачатьПомещениеФайлов(ОписаниеОповещения, , ДиалогОткрытияФайла, Истина, УникальныйИдентификатор);

КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВыборФайла(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт

    Если ПомещенныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Для каждого ПереданныйФайл Из ПомещенныеФайлы Цикл
        Объект.ФайлEXCEL = ПереданныйФайл.Имя;
        Объект.КлючФайлаEXCEL = ПереданныйФайл.Хранение;
    КонецЦикла;
    
КонецПроцедуры// ()


&НаКлиенте
Процедура ФайлВТаблицу(Команда)
    
    ФайлВТаблицуНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ФайлВТаблицуНаСервере()
    
    ТаблицаРезультат = ЗагрузитьМетодом_1C836();// Считать весь файл.

КонецПроцедуры

Функция ЗагрузитьМетодом_1C836(Знач ФайлEXCEL)
    ПутьВременногоФайлаEXCEL = ПолучитьИмяВременногоФайла("xlsx");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Объект.КлючФайлаEXCEL);    
    ДвоичныеДанные.Записать(ПутьВременногоФайлаEXCEL);
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Попытка
        // СпособЧтенияЗначенийТабличногоДокумента - новый параметр платформы 8.3.6. Второе значение "Текст".

        //ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТабличногоДокумента.Значение);    

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

    Возврат ТаблицаРезультат;
    
КонецФункции
   33554432
 
9 - 11.04.17 - 13:43
Блин, у меня все варианты глючат, можете предложить рабочий код, на основании входных данных (0) ?


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