![]() |
|
Выбор файла в тонком клиенте | ☑ | ||
---|---|---|---|---|
0
33554432
11.04.17
✎
10:47
|
У меня есть обработка по загрузке xml, у меня она работает, но я запускаю локально в файловой базе. У клиента серверная база и файл открывается с тонкого клиента, пишется что файл не найден по указанному пути. Что я делаю не так? Код выбора файла такой
&НаКлиенте Процедура Загрузить(Команда) ЗагрузитьНаСервере(ФайлПоставкиXML); КонецПроцедуры &НаСервере Процедура ЗагрузитьНаСервере(ФайлПоставкиXML) Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ФайлПоставкиXML); |
|||
1
Strogg
11.04.17
✎
10:49
|
(0) если процедура компилируется на сервере - то и файловую систему он серверную видит. ТАк что файлик надо закидывать в соотв. каталог именно на сервере :)
|
|||
2
Мыш
11.04.17
✎
11:22
|
(1) +
Или передавать файл с клиента на сервер ) |
|||
3
spiller26
11.04.17
✎
11:30
|
(2) Передавай файл на Сервер.
ПутьВременногоФайлаXML = ПолучитьИмяВременногоФайла("xml"); ДвоичныеДанные = ПолучитьИзВременногоХранилища(Объект.ИмфФайлаНаКлиенте); ДвоичныеДанные.Записать(ПутьВременногоФайлаXML); Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьВременногоФайлаXML); ... УдалитьФайлы(ПутьВременногоФайлаXML); Немного теории: Как только с клиента переходит все на &НаСервере все выполняется на сервере (у него нет доступа больше к вашем ресурсам) Теперь что долно происходит: файл передается на сервак, который временно его пихает в temp, потом обрабатывает его там, затем нужно его удалить, чтобы мусор не собирался. |
|||
4
33554432
11.04.17
✎
11:53
|
(2,3)
Идею понял, что надо на сервер с клиента файл передать. С кодом не совсем понятно, что пишется на клиенте, а что на сервере. |
|||
5
sapphire
11.04.17
✎
11:55
|
Двоичные данные и так спокойно передаются с клиента на сервер без хранилища.
|
|||
6
spiller26
11.04.17
✎
12:02
|
(4) Это все на Сервере
Файл он берет из этого реквизита Объект.ИмфФайлаНаКлиенте - где валяется файл на клиентской машине |
|||
7
33554432
11.04.17
✎
12:08
|
(6)
у меня так пишется, что неправильный путь к файлу |
|||
8
spiller26
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); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Новый ТаблицаЗначений; КонецПопытки; ТаблицаРезультат = Новый ТаблицаЗначений; // обработка таблицы Возврат ТаблицаРезультат; КонецФункции |
|||
9
33554432
11.04.17
✎
13:43
|
Блин, у меня все варианты глючат, можете предложить рабочий код, на основании входных данных (0) ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |