Имя: Пароль:
1C
1С v8
загрузка xls через oledb, ошибка
0 virtus
 
21.03.14
11:35
Здравствуйте, подскажите, пожалуйста,

Написал код для загрузки xls:

Connection =Новый COMОбъект("ADODB.Connection");
    
    //сформируем строку подключения
    //Если необходимо в дальнейшем оперировать цифровыми значениями колонок, то ставим признак HDR = NO
    //если необходимо производить загрузку с учетом псевдонимов в 1й строке,то ставим HDR = YES
    
    СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + "E:\Users\Alexey\Desktop\Таблица мерчендайзеров сводная.xls";
    СтрокаПодключения = СтрокаПодключения+"; Extended Properties = "+"""Excel 8.0"+";HDR=NO;IMEX=1"";";
    
    //подключение к источнику данных
    Попытка
        
        Connection.Open(СтрокаПодключения);
        
    Исключение
        
        Сообщить(ОписаниеОшибки());
        Возврат;
        
    КонецПопытки;

Попадаю в исключение.
И текст ошибки:

{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

Почему такое может происходить? Может кто знает?
1 kiruha
 
21.03.14
11:41
Зачем велосипед ?

Эксель = ПолучитьCOMОбъект(ФайлЗагрузкиПуть);
ЛистЭксель = Эксель.WorkSheets(1);
Cells=ЛистЭксель.Cells;
ВсегоКолонок = Cells.SpecialCells(11).Column;
ТЗ =  Новый ТаблицаЗначений;
        Для Счетчик = 1 По ВсегоКолонок Цикл
    ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
        КонецЦикла;
ВсегоСтрок = Cells.SpecialCells(11).Row;
Для Счетчик = 1 По ВсегоСтрок Цикл
        НоваяСтрока = ТЗ.Добавить();
КонецЦикла;
Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок));
    Данные = Область.Value.Выгрузить();
    Для Счетчик = 0 По ВсегоКолонок-1 Цикл
        ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);
    КонецЦикла;
2 shuhard
 
21.03.14
11:41
(1) какая гадость
3 virtus
 
21.03.14
11:43
у меня нет екселя на сервере. поэтому так стал делать(1)
4 13_Mult
 
21.03.14
11:50
Попробуй переустановить драйвер
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5793
5 13_Mult
 
21.03.14
11:51
еще вот тут почитать можно http://infostart.ru/public/163640/
6 zva
 
21.03.14
11:56
Microsoft.Jet.OLEDB.4.0 не работает на х64 системах
7 kiruha
 
21.03.14
11:57
(2)
Автор не  я, а разработчик получивший сотню плюсов на инфостарте.
Одна из самых быстрых загрузок.

Посмотрел ваши ответы выборочно в ветках по 8 - везде высеры не по делу ?
Вы что - больной человек ?
8 virtus
 
21.03.14
12:02
спасибо, попробую(4)
9 shuhard
 
21.03.14
12:04
(7) дерьмо со ста плюсами есть дерьмо
10 virtus
 
21.03.14
12:55
Стал делать так, потому что нет прав поставить ole на сервер.

Написал -
Эксель = ПолучитьCOMОбъект("\\term_xm\ДоступноВсем\adapter\Таблица.xls");

На этом все. То есть приложение зависает. Права есть у сервера 1С на папку. Если открывать вручную файл, то он открывается через open office. MS excel не установлен.(1)

Из-за чего это может быть?
Спасибо
11 ДенисЧ
 
21.03.14
12:56
(10) если ексель не установлен, то работать так не буде
12 Мимохожий Однако
 
21.03.14
12:59
Если нет прав, то их надо добиться от админа.
13 virtus
 
21.03.14
13:00
Да все верно:

"
Например, фрагмент кода
Таб = ПолучитьCOMОбъект("C:\DATA\DATA.XLS");
создает объект Excel.Application"

Грустно.=) Спасибо.(11)
14 virtus
 
21.03.14
13:01
админа нет на работе=)(12)
15 13_Mult
 
21.03.14
13:06
А что у вас так принято на сервере работать?!
С любого ПК грузанул бы, где есть права.
16 ShoGUN
 
21.03.14
13:08
+(15) И эксель.
17 virtus
 
21.03.14
13:20
база лежит на отдельном сервере. Она много весит и если её выгрузить, то в файловый она потом не грузится, а ставить скуль отдельно не хочется - много весит плюс время установки.  А работают с базой через другой сервер - к нему доступ через терминал. То есть всего 2 сервера - где база лежит и терминальный. (15)
18 ShoGUN
 
21.03.14
13:33
(17) Ты в одной локалке с сервером 1С? Если да - то что мешает напрямую клиентом со своей машины подключиться, а не через терминал?
19 virtus
 
21.03.14
13:35
хм, идея хорошая. щас попробую. спасибо.(18)
20 virtus
 
21.03.14
13:36
стоп, а смысл? все равно ексель то должен быть на серваке 1с , как и оле сервер. (18)
21 ShoGUN
 
21.03.14
13:45
(20) Если клиент толстый - то необязательно.
22 virtus
 
21.03.14
14:11
спасибо, но похоже тоже не получится. На сервере 1С - два интерфейса - один на терминальный сервер, второй наружу. Так вот подключиться к 1С сервере можно только через терминальный сервер. Там пи ту пи соединение получается.(21)
23 shuhard
 
21.03.14
14:13
(22) запусти виндовым шедулером обработину и читай свой xls
24 virtus
 
21.03.14
14:32
не очень понял. виндовый шедулер это как? (23)