Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка EXEL c сервера через COM
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
burza
На клиенте данные загружает, когда процедуру переношу на сервер, ругается на МассивКолонок = arr.Выгрузить(); именно Выгрузить, что нужно сделать?)

я знаю что есть код для сервера другой я и сам им удачно пользуюсь, но нужен именно этот по причинам.

        
Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);
        
        Исключение    
        КонецПопытки;
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
Slon747
burza @ Сегодня, 10:43 необходимо зарегистрироваться для просмотра ссылки ,
А какой тип данных у arr и какая ошибка?
burza
Slon747 @ Сегодня, 10:49 необходимо зарегистрироваться для просмотра ссылки ,
Значение не является значением объектного типа (Выгрузить)

burza @ Сегодня, 10:53 необходимо зарегистрироваться для просмотра ссылки ,
Обычный старый код чтения xls ))
     файл = "D:\1C\Mail\bas\123.csv";
        
        Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);        
        Исключение    
        КонецПопытки;
        
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
    

          Для СтрокаТП = 59 По ВсегоСтрок Цикл        
        Стр = Таб.Добавить();        
        Стр.Наименование = СокрЛП(МассивКолонок.Получить(0).Получить(СтрокаТП));
        Стр.Производитель = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
        Стр.Артикул = СокрЛП(МассивКолонок.Получить(3).Получить(СтрокаТП));
        Стр.Цена = СокрЛП(МассивКолонок.Получить(5).Получить(СтрокаТП));
        Стр.НаличиеОдесса = СокрЛП(МассивКолонок.Получить(6).Получить(СтрокаТП));
        Стр.Наличиефилиалы = СокрЛП(МассивКолонок.Получить(7).Получить(СтрокаТП));
        Стр.Спецпредложение = СокрЛП(МассивКолонок.Получить(8).Получить(СтрокаТП));
        Стр.Полтава = СокрЛП(МассивКолонок.Получить(9).Получить(СтрокаТП));
        Стр.Черкассы = СокрЛП(МассивКолонок.Получить(10).Получить(СтрокаТП));
        Стр.Днепр = СокрЛП(МассивКолонок.Получить(11).Получить(СтрокаТП));
        Стр.Львов = СокрЛП(МассивКолонок.Получить(12).Получить(СтрокаТП));
        Стр.ИваноФранковс = СокрЛП(МассивКолонок.Получить(13).Получить(СтрокаТП));
        Стр.Харьков = СокрЛП(МассивКолонок.Получить(14).Получить(СтрокаТП));
        Стр.Винница = СокрЛП(МассивКолонок.Получить(15).Получить(СтрокаТП));
        Стр.Тернополь = СокрЛП(МассивКолонок.Получить(16).Получить(СтрокаТП));
        Стр.Николаев = СокрЛП(МассивКолонок.Получить(17).Получить(СтрокаТП));
        Стр.Херсон = СокрЛП(МассивКолонок.Получить(18).Получить(СтрокаТП));
        Стр.Кропивницкий = СокрЛП(МассивКолонок.Получить(19).Получить(СтрокаТП));
        Стр.Запорожье = СокрЛП(МассивКолонок.Получить(20).Получить(СтрокаТП));
        Стр.Киев = СокрЛП(МассивКолонок.Получить(21).Получить(СтрокаТП));
        Стр.Черновцы = СокрЛП(МассивКолонок.Получить(22).Получить(СтрокаТП));                
        КонецЦикла;
Slon747
burza @ Сегодня, 11:10 необходимо зарегистрироваться для просмотра ссылки ,
У вас код выполняется &НаКлиенте, а Выгрузить() не работает на тонком клиенте.
burza
Slon747 @ Сегодня, 11:17 необходимо зарегистрироваться для просмотра ссылки ,
код в общем модуле лежит, по регламенту нужно делать
Функция Bastion() Экспорт
    
    Таб = Новый ТаблицаЗначений;
    Таб.Колонки.Добавить("Наименование");
    Таб.Колонки.Добавить("Производитель");
    Таб.Колонки.Добавить("Артикул");
    Таб.Колонки.Добавить("Цена");
    Таб.Колонки.Добавить("НаличиеОдесса");
    Таб.Колонки.Добавить("Наличиефилиалы");
    Таб.Колонки.Добавить("Спецпредложение");
    Таб.Колонки.Добавить("Полтава");
    Таб.Колонки.Добавить("Черкассы");
    Таб.Колонки.Добавить("Днепр");
    Таб.Колонки.Добавить("Львов");
    Таб.Колонки.Добавить("ИваноФранковс");
    Таб.Колонки.Добавить("Харьков");
    Таб.Колонки.Добавить("Винница");
    Таб.Колонки.Добавить("Тернополь");
    Таб.Колонки.Добавить("Николаев");
    Таб.Колонки.Добавить("Херсон");
    Таб.Колонки.Добавить("Кропивницкий");
    Таб.Колонки.Добавить("Запорожье");
    Таб.Колонки.Добавить("Киев");
    Таб.Колонки.Добавить("Черновцы");
    
    
         файл = "D:\1C\Mail\bas\bastion.csv";
        
        Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);        
        Исключение    
        КонецПопытки;
        
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
    

          Для СтрокаТП = 59 По ВсегоСтрок Цикл        
        Стр = Таб.Добавить();        
        Стр.Наименование = СокрЛП(МассивКолонок.Получить(0).Получить(СтрокаТП));
        Стр.Производитель = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
        Стр.Артикул = СокрЛП(МассивКолонок.Получить(3).Получить(СтрокаТП));
        Стр.Цена = СокрЛП(МассивКолонок.Получить(5).Получить(СтрокаТП));
        Стр.НаличиеОдесса = СокрЛП(МассивКолонок.Получить(6).Получить(СтрокаТП));
        Стр.Наличиефилиалы = СокрЛП(МассивКолонок.Получить(7).Получить(СтрокаТП));
        Стр.Спецпредложение = СокрЛП(МассивКолонок.Получить(8).Получить(СтрокаТП));
        Стр.Полтава = СокрЛП(МассивКолонок.Получить(9).Получить(СтрокаТП));
        Стр.Черкассы = СокрЛП(МассивКолонок.Получить(10).Получить(СтрокаТП));
        Стр.Днепр = СокрЛП(МассивКолонок.Получить(11).Получить(СтрокаТП));
        Стр.Львов = СокрЛП(МассивКолонок.Получить(12).Получить(СтрокаТП));
        Стр.ИваноФранковс = СокрЛП(МассивКолонок.Получить(13).Получить(СтрокаТП));
        Стр.Харьков = СокрЛП(МассивКолонок.Получить(14).Получить(СтрокаТП));
        Стр.Винница = СокрЛП(МассивКолонок.Получить(15).Получить(СтрокаТП));
        Стр.Тернополь = СокрЛП(МассивКолонок.Получить(16).Получить(СтрокаТП));
        Стр.Николаев = СокрЛП(МассивКолонок.Получить(17).Получить(СтрокаТП));
        Стр.Херсон = СокрЛП(МассивКолонок.Получить(18).Получить(СтрокаТП));
        Стр.Кропивницкий = СокрЛП(МассивКолонок.Получить(19).Получить(СтрокаТП));
        Стр.Запорожье = СокрЛП(МассивКолонок.Получить(20).Получить(СтрокаТП));
        Стр.Киев = СокрЛП(МассивКолонок.Получить(21).Получить(СтрокаТП));
        Стр.Черновцы = СокрЛП(МассивКолонок.Получить(22).Получить(СтрокаТП));                
        КонецЦикла;
КонецФункции
Slon747
А если вы уберете обработку исключительной ситуации, то выяснится, что ошибка возникает гораздо раньше.
Не так ли?
burza
Slon747 @ Сегодня, 11:41 необходимо зарегистрироваться для просмотра ссылки ,
туплю, вы правы! Приложению Microsoft Excel не удается получить доступ к файлу. куда копать?
Slon747
А файл физически не на сервере?
burza
Slon747 @ Сегодня, 11:46 необходимо зарегистрироваться для просмотра ссылки ,
на сервере,там где скул и 1С.учетка кластера админ
Slon747
А юзеру USR1CV8 доступен данный файл?
burza
Slon747 @ Сегодня, 11:58 необходимо зарегистрироваться для просмотра ссылки ,
он стоит как администратор. то думаю да.

burza @ Сегодня, 12:16 необходимо зарегистрироваться для просмотра ссылки ,
необходимо зарегистрироваться для просмотра ссылки

Спасибо кто на мысль натолкнул)
Slon747
Еще можно без екселя работать, а просто загрузить в ТабличныйДокумент и уже с него считывать данные.
xlmel
Цитата(burza @ 21.03.24, 11:43) необходимо зарегистрироваться для просмотра ссылки
На клиенте данные загружает, когда процедуру переношу на сервер, ругается на МассивКолонок = arr.Выгрузить(); именно Выгрузить, что нужно сделать?)

я знаю что есть код для сервера другой я и сам им удачно пользуюсь, но нужен именно этот по причинам.

        
Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);
        
        Исключение    
        КонецПопытки;
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;


А Вы Windows настроили, чтобы Excel через COM работал?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.