Имя: Пароль:
1C
 
Работа с Excel в scloud.ru
0 bvb
 
08.07.24
14:16
Хочу прочитать лист в Экзель для загрузки

Открываю Экзель через COM объект

    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(СокрЛП(ПутьКФайлуЗагрузкиExcel));
    Excel.Sheets(1).Select();

Получаю :
COM-объекты поддерживается только в операционных системах Windows

Как читать эксель на данном облачном сервисе ?
1 Prog_man
 
08.07.24
14:18
(0) пробуй через Табличный документ
2 Kongo2019
 
08.07.24
14:18
Работать как с файлом. Через хранилище и построитель.
3 Волшебник
 
08.07.24
14:21
Не Экзель, а Иксэл...
4 bvb
 
08.07.24
14:27
(2) Можно ссылку на пример. Нет времени на поиски

(3) Так говорил наш бывший финдир. Мне нравится - запало в мемориз
5 Kongo2019
 
08.07.24
14:29
6 Волшебник
 
08.07.24
14:31
(4) >> Можно ссылку на пример. Нет времени на поиски

Это, знаете ли, не очень вежливо.

ТабличныйДокумент.Прочитать(...)
7 Мультук
 
08.07.24
14:44
(0)

Загугли по фразе "Хочу прочитать лист в Экзель 1С"

Способы 1 и 2


https://ironskills.by/tpost/dgg1j0v4k1-kak-prochitat-excel-v-1s-4-sposoba
8 Builder
 
08.07.24
14:48
(3) У нас дежурная шутка после одной сотрудницы - "икзель" :)
9 bvb
 
08.07.24
16:30
Получилось
&НаСервере
Функция ПрочитатьExcel_ПостроительЗапроса(ПутьКФайлуЗагрузкиExcel)
    
    
    ТабДок = Новый ТабличныйДокумент;
    
    
    ФайлExcel = Новый Файл (ПутьКФайлуЗагрузкиExcel);
    Если ФайлExcel.Существует() Тогда
        
        ТабДок.Прочитать(ПутьКФайлуЗагрузкиExcel);
        
        Построитель = Новый ПостроительЗапроса;
        Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
        Построитель.ЗаполнитьНастройки();
        Построитель.Выполнить();
        
        ТаблицаИзExcel = Построитель.Результат.Выгрузить();
        
        
    Иначе
        
        
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не удалось прочитать файл по причине: " + " файл не найден";
        Сообщение.Сообщить();                                                        
        Возврат Неопределено;
        
    КонецЕсли;
    
    Возврат ТаблицаИзExcel ;
    
КонецФункции
10 bvb
 
08.07.24
16:35
тепреь другая беда : на сервере scloud обработка не видит файл.
На других серверах все работает

Там путь подключен как виртуальный диск и при задании пути относительно виртуального доска файл не видится
11 Мультук
 
08.07.24
17:03
(10)

Файл вы конечно с клиента на сервере не передаёте?


Если файл не гигабайты то медленно и печально гуглим:

1С передача файла с клиента на сервер
12 bvb
 
08.07.24
17:34
(11) Спасибо ошибку осознал.
Ранее либо эксель читал на клиенте, либо сревер видел ресурс с файлом
13 bvb
 
08.07.24
17:37
Вот может пригодитьсякому :

&НаКлиенте
Процедура ПрочитатьExcelВТЗ(Команда)
    
    ОбработкаОкончанияПомещения = Новый ОписаниеОповещения
    ("ОбработчикОкончанияПомещения", ЭтотОбъект);
    
    НачатьПомещениеФайла(ОбработкаОкончанияПомещения, ,
    ПутьЗагрузки, Ложь, ЭтотОбъект.УникальныйИдентификатор);
    
    //ПрочитатьExcelВТЗНаСервере();
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработчикОкончанияПомещения(Результат, Адрес,
    ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    Если Результат Тогда
        //Сообщить(Адрес);
        ПрочитатьExcelВТЗНаСервере(Адрес); //Вызов модуля обработки помещенного файла на сервере
    Иначе
        Сообщить("Файл не был помещен.");
    КонецЕсли
КонецПроцедуры
14 bvb
 
08.07.24
17:37
&НаСервере
Процедура ПрочитатьExcelВТЗНаСервере(ПутьКФайлуЗагрузкиExcel)
    
    ВремТЗ = ПрочитатьExcel_ПостроительЗапроса (ПутьКФайлуЗагрузкиExcel);  
    
    Если ТипЗнч(ВремТЗ) = Тип("ТаблицаЗначений") Тогда
        ЗагрузитьТЗВТЧ (ВремТЗ);
    КонецЕсли
    
КонецПроцедуры

Функция ПрочитатьExcel_ПостроительЗапроса(ПутьКФайлуЗагрузкиExcel)
    
    
    ТабДок = Новый ТабличныйДокумент;
    
    
    ФайлВременногоХранилища=ПолучитьИзВременногоХранилища(ПутьКФайлуЗагрузкиExcel);
    ИмяФайла=ПолучитьИмяВременногоФайла("xlsx");
    ФайлВременногоХранилища.Записать(ИмяФайла);
    УдалитьИзВременногоХранилища(ПутьКФайлуЗагрузкиExcel);
    
    
    ФайлExcel = Новый Файл (ИмяФайла);
    Если ФайлExcel.Существует() Тогда
        
        ТабДок.Прочитать(ИмяФайла);
        
        Построитель = Новый ПостроительЗапроса;
        Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
        Построитель.ЗаполнитьНастройки();
        Построитель.Выполнить();
        
        ТаблицаИзExcel = Построитель.Результат.Выгрузить();