![]() |
|
Как правильно задавать путь для загрузки с эксель на сервере | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
10.06.22
✎
03:04
|
В Объект.ФайлЗагрузки - файл и путь к нему, что я выбираю для загрузки. Делается это на сервере.
При выполнении прочитать, выходит ошибка, - Каталог не обнаружен! Как нужно грузить файл на сервере? // &НаКлиенте Процедура ВыборФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Фильтр = "Файл excel(*.xls,*.xlsx)|*.xls*|Файл csv(*.csv)|*.csv|Файл xml(*.xml)|*.xml"; Диалог.Фильтр = Фильтр; Диалог.МножественныйВыбор = Ложь; Если Диалог.Выбрать() Тогда Объект.ФайлЗагрузки = Диалог.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры // &НаКлиенте Процедура ЗагрузитьСФайлаXLS(Команда) ЗагрузитьСФайлаXLSНаСервере(); КонецПроцедуры // &НаСервере Процедура ЗагрузитьСФайлаXLSНаСервере() ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(Объект.ФайлЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение); ТзЗагрузки.Очистить(); Для х = 2 по Табдок.ВысотаТаблицы Цикл НоваяСтрока = ТзЗагрузки.Добавить(); НоваяСтрока = Табдок.Область("R" + Формат(х, "ЧГ=0") + "C1").Текст; НоваяСтрока = Табдок.Область("R" + Формат(х, "ЧГ=0") + "C2").Текст; НоваяСтрока = Табдок.Область("R" + Формат(х, "ЧГ=0") + "C3").Текст; НоваяСтрока = Табдок.Область("R" + Формат(х, "ЧГ=0") + "C4").Текст; КонецЦикла; КонецПроцедуры // |
|||
1
Aleksey
10.06.22
✎
04:05
|
А зачем грузить на сервере, почему на клиенте нельзя загрузить?
А так, ну сделай чтобы папка с файлом была видна на сервере и грузи |
|||
2
NIGHTHUNTER
10.06.22
✎
04:22
|
(1) Этот метод не доступен на клиенте.
ТабДок.Прочитать(Объект.ФайлЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение); (1) Ясно. То есть я не в тот каталог положил все для тестирования. |
|||
3
NIGHTHUNTER
10.06.22
✎
04:26
|
(1) Странно, но куда бы я не положил в открытые папки на сервере. Везде одно и тоже. Каталог не обнаружен. (
|
|||
4
NIGHTHUNTER
10.06.22
✎
04:40
|
Вынужден был сделать так
# Область ВАРИАНТ_2 &НаКлиенте Процедура ЗагрузитьСФайлаXLS_2(Команда) Если Объект.ФайлЗагрузки = "" Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не указан файл для загрузки"; Сообщение.Поле = "Объект.ИмяФайла"; Сообщение.Сообщить(); Возврат; КонецЕсли; Соотв = Новый Соответствие; Попытка Листы = Новый Массив; Excel = Новый COMОбъект("Excel.Application"); Соотв.Вставить("Соединение",Excel); ExcelФайл = Excel.WorkBooks.Open (Объект.ФайлЗагрузки); Соотв.Вставить("ExcelФайл",ExcelФайл); Для Сч = 1 По ExcelФайл.Sheets.Count Цикл Листы.Добавить(ExcelФайл.Sheets(Сч)); КонецЦикла; Соотв.Вставить("Листы",Листы); лРезультат = Соотв; Исключение Сообщить("Ошибка создания обьекта Microsoft Excel" + ОписаниеОшибки()); лРезультат = Неопределено; КонецПопытки; Соединение = лРезультат; Если Соединение = Неопределено Тогда Возврат; КонецЕсли; Лист = Соединение["Листы"][0]; ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; Для Сч = 2 по ВсегоСтрок Цикл НоваяСтрока = ТзЗагрузки.Добавить(); Для Сч2 = 1 по ВсегоКолонок Цикл Если Сч2 = 1 Тогда НоваяСтрока.НомерПТС = СОКРЛП(Лист.Cells(Сч,Сч2).Value); ИначеЕсли Сч2 = 2 Тогда НоваяСтрока.Наименование = СОКРЛП(Лист.Cells(Сч,Сч2).Value); ИначеЕсли Сч2 = 3 Тогда НоваяСтрока.КоличествоОсей = СОКРЛП(Лист.Cells(Сч,Сч2).Value); ИначеЕсли Сч2 = 4 Тогда НоваяСтрока.ЦветКузова = СОКРЛП(Лист.Cells(Сч,Сч2).Value); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры # КонецОбласти |
|||
5
Обработка
10.06.22
✎
06:17
|
Сервер ищет путь не на твоем компе а у себя там где 1С развернут или же Сервер 1С.
Надо задать явный сетевой доступ типа //комп/ Каталог/Каталог/файл. И доступ должен быть железно. |
|||
6
Garykom
гуру
10.06.22
✎
06:50
|
(2) >Этот метод не доступен на клиенте.
файл с клиента передай на сервер в темп и там уже читай из темпа |
|||
7
Garykom
гуру
10.06.22
✎
06:51
|
(5) ну да еще надо знать от имени какого юзера запускается сервер 1С и есть ли этого юзера этот сетевой доступ
|
|||
8
Ryzeman
10.06.22
✎
07:11
|
Либо делай через фиксированный путь на сервере, при этом убедись, что папка доступна под пользователем из-под которого работает серверная 1с.
Либо читай на клиенте и передавай через временной хранилище на сервер. Код: &НаКлиенте Процедура ПередатьФайлНаСервер(ИмяФайла); ДанныеФайла = Новый ДвоичныеДанные(ИмяФайла); АдресФайла = ПоместитьВоВременноеХранилище(ДанныеФайла, ЭтаФорма.УникальныйИдентификатор); ПрочитатьФайлНаСервере(АдресФайла); КонецПроцедуры &НаСервере Процедура ПрочитатьФайлНаСервере(АдресХранилища) Данные = ПолучитьИзВременногоХранилища(АдресХранилища); ИмяФайлаВременное = ПолучитьИмяВременногоФайла("xls"); //предположим, у тебя экселька ... УдалитьФайлы(ИмяФайлаВременное); КонецПроцедуры |
|||
9
Гипервизор
10.06.22
✎
07:22
|
(8)А Данные.Записать(ИмяФайлаВременное) не надо?
|
|||
10
Ryzeman
10.06.22
✎
07:27
|
(9) надо, лишнего стёр, когда из своей обработки "ненужные" строки подтёр :)
А вообще пусть хоть чутку сам голову включает, в СП и гугл иногда лезет... |
|||
11
Garykom
гуру
10.06.22
✎
08:56
|
(8) а подскажи ка код передачи больших файлов с клиента на сервер по кусочкам
а то если разом большой передавать они портятся, это когда под 2 гига файлики |
|||
12
Garykom
гуру
10.06.22
✎
08:57
|
(11)+ может уже и пофикиси багу, но полгода назад на всех платформах баг фиксировался
|
|||
13
Ryzeman
10.06.22
✎
09:00
|
(11) Ни разу не сталкивался с такой проблемой, да и за передачу 2 гигов по локалке меня бы начальник расстрелял :-D
А новомодные методы не справляются с этим? https://its.1c.ru/db/intgr83#content:192:hdoc |
|||
14
Garykom
гуру
10.06.22
✎
09:02
|
(13) Типовой переход с ЗУП 3.1 на КА 2.5 например
Там архив с xml пытается и упс |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |