Имя: Пароль:
1C
1С v8
Не работает ADO во внешней обработке, вызванной программно....
0 wingl
 
23.10.15
11:06
1С 8.2 ЗУП 2.5 SQL

Всем привет!

Ситуация следующая, создана внешняя обработка, которая запросом собирает данные и пытается все это добро выгрузить в Excel через ADO.

Строка подключения выглядит следующим образом:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ИмяФайлаЭксель+";Extended Properties=""Excel 8.0;HDR=No;"";"

Код, на котоом 1С отваливается с ошибкой:

Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = СтрокаПодключения; //Ошибка возникает здесь...

Данная внешняя обработка подключена к 1С через механизм "Дополнительные внешние отчеты и обработки". Если её запускать на прямую через этот механизм - всё отлично отрабатывает.

Но при попытке прикрутить это добро к регламентной операции, ситуация в корне меняется. Все рушится с ошибкой:"ВнешняяОбработка.******.МодульОбъекта(143)}: Ошибка при установке значения атрибута контекста (ActiveConnection)"

Общий модуль, к которому обращается регламентное задание, является привилегированным. Подключение и вызов внешней обработки вызывается следующим кодом:

СсылкаНаВнешнююОбработку = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяОбработки);
    
ДвоичныеДанные = СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить();
        
ПутьОбработки = ПолучитьИмяВременногоФайла();

ДвоичныеДанные.Записать(ПутьОбработки);
            
ВнешниеОбработки.Создать(ПутьОбработки, Ложь); //Безопасный режим выключен!

внОбработка.ВыполнитьСервер();


Права у USR1CV8 на папку сохранения файла есть, но все равно отваливается с ошибкой.

Подскажите, в какую сторону копать, уже все перепробовал. Неужели 1С не разрешает пользоваться механизмом ADO во внешних обработках, подключаемых программно?
1 Casey1984
 
23.10.15
11:08
Безопасный режим
2 ДенисЧ
 
23.10.15
11:08
На сервер драйвера Сергей Александрович будет ставить?
3 Мимохожий Однако
 
23.10.15
11:08
А где хранятся настройки для этой обработки?
4 wingl
 
23.10.15
11:11
Casey1984
Безопасный режим я отключаю (это видно из кода)

ДенисЧ
Драйвера на сервере стоят, все ок, при ручном запуске обработки на сервере под юзером usr1cv8 все отрабатывает

МимохожийОднако
Не очень понял, о каких настройках идет речь...
5 Ёпрст
 
23.10.15
11:13
дать права на com юзверю, под которым запущена служба агента сервера..если 64 разрядная винда, то прописать коммконнектор + дать права на эксель еще там же, в компонентах com
6 wingl
 
23.10.15
11:19
Ёпрст
Агент 1С запущен под локальным пользователем USR1CV8 на серваке приложений 1С, правильно ли я понимаю, что если я захожу под этим пользователем на этот сервак и под ним прокручиваю обработку в ручную и она отрабатывает, то это значит, что права на все драва включая com настроены верно?
7 wingl
 
23.10.15
11:43
Есть еще какие-нибудь идеи, коллеги? Всю голову сломал...
8 Ёпрст
 
23.10.15
11:43
(6) неа
9 lim9
 
23.10.15
11:50
Точно вопрос с правами! у меня была подобная ситуация, нужно дать права на все возможные процессы тому пользователю, под которым все запускается.
10 wingl
 
23.10.15
11:50
(8) можешь тогда поподробнее объяснить (или дать ссылочку), как и где провернуть эти настройки, буду очень признателен...
11 Ёпрст
 
23.10.15
11:53
12 Ёпрст
 
23.10.15
11:54
Сервак у тя 64 битный поди. да ?
13 Ёпрст
 
23.10.15
11:58
Если лень ковырятся с правами на ком объекты, запусти службу 1с от учетки админа
14 wingl
 
23.10.15
11:58
точно
15 Ёпрст
 
23.10.15
11:58
для начала
16 wingl
 
23.10.15
11:58
(14) это про (12)
17 Ёпрст
 
23.10.15
11:59
(16)
Ну, тебе типа такого нужно в компонентах творить
http://catalog.mista.ru/public/196323/
18 Ёпрст
 
23.10.15
12:00
дать права на эксель и еще папочки насоздавать
19 Ёпрст
 
23.10.15
12:01
где-то валялась более наглядная инструкция, лень искать
20 wingl
 
23.10.15
13:07
Я вот только одного не могу понять, если я пользуюсь ADO, то зачем мне собственно само приложение Excel? Провернул идею с папками из ссылки выше, к сожалению так и не помогло, а вот момент с настройкой DCOM пришлось пропустить, тк на сервере не установлен Excel Application...
21 Serginio1
 
23.10.15
14:32
(20) Там драйвера либо 64 разрядные либо 32 разрядные. Если Ёкселя нет ставь 64 разрядные.
22 Serginio1
 
23.10.15
14:33
23 wingl
 
23.10.15
15:57
(21) на сервере и так стоят 64 разрядные драйвера
24 Serginio1
 
23.10.15
16:17
(23) А для Microsoft.Jet.OLEDB.4.0 появились 64 разрядные дрова?

Используй Provider=Microsoft.ACE.OLEDB.12.0
25 Serginio1
 
23.10.15
16:20
26 wingl
 
23.10.15
16:29
Произошла исключительная ситуация (ADOX.Catalog): Provider cannot be found. It may not be properly installed.
27 Serginio1
 
23.10.15
17:08
(26) Значит не установлен
28 wingl
 
23.10.15
17:12
В ветке регистра из твоей ссылки установлен правильный путь до библиотеки ADO (C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL)

Файл реально там лежит.

В установленных программах висит Microsoft Access db engine 2010.

Даже не знаю, как еще проверить, установлен он или нет )))
29 wingl
 
23.10.15
17:14
Чисто на всякий случай спрошу, вдруг уже реально перегрелся. Все это я должен провернуть на app сервере 1С?
30 Serginio1
 
23.10.15
17:23
Конечно, проблема то у тебя с регламентным заданием которое крутится в 64 разрядно процессе на сервере 1С
31 wingl
 
23.10.15
17:25
Ну тогда все правильно
32 Serginio1
 
23.10.15
17:33
33 wingl
 
23.10.15
17:54
Есть! Фоновое задание пошло! Выручила установка следующий драйверов http://www.microsoft.com/download/en/details.aspx?id=23734

Serginiol ОГРОМНОЕ ТЕБЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!

Всем участвующим тоже безумно благодарен!

Уверен, что эта информация еще ни раз кому-нибудь пригодится!