Имя: Пароль:
1C
 
Как правильно задавать путь для загрузки с эксель на сервере
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 пытается и упс