Ошибка создания объекта adodb connection

  • Remove From My Forums
  • Вопрос

  • I have an HTA file that is basically a compilation of scripts that I use, and share with others.  I’ve been developing it since 2011.  One of the earliest scripts added was searching AD for servers and returning what OU they were found in. 
    So to say the least, this has been a tried and true script.  Now all of a sudden last week, I started getting an error saying the script was causing the web browser to run slowly.  I rem’d out On Error Resume Next and found the offending line is
    ‘Set objConnection = CreateObject(«ADODB.Connection»).  The error statement is «activex component can’t create object: ‘ADODB.Connection'».  I’ve checked with another person who uses my toolbox and they said it works just fine
    for them.  So luckily it’s only affecting me right now, but who knows how long that will last.  My company locks down our computers so there’s not a lot I can do to make changes to my computer.  I’ll try anything you guys suggest, I just might
    not have rights to do so.

    • Изменено

      4 марта 2019 г. 14:26

    • Перемещено
      Bill_Stewart
      4 сентября 2019 г. 18:46
      This is not «design solution for me» forum

  • Remove From My Forums
  • Question

  • I have an HTA file that is basically a compilation of scripts that I use, and share with others.  I’ve been developing it since 2011.  One of the earliest scripts added was searching AD for servers and returning what OU they were found in. 
    So to say the least, this has been a tried and true script.  Now all of a sudden last week, I started getting an error saying the script was causing the web browser to run slowly.  I rem’d out On Error Resume Next and found the offending line is
    ‘Set objConnection = CreateObject(«ADODB.Connection»).  The error statement is «activex component can’t create object: ‘ADODB.Connection'».  I’ve checked with another person who uses my toolbox and they said it works just fine
    for them.  So luckily it’s only affecting me right now, but who knows how long that will last.  My company locks down our computers so there’s not a lot I can do to make changes to my computer.  I’ll try anything you guys suggest, I just might
    not have rights to do so.

    • Edited by

      Monday, March 4, 2019 2:26 PM

    • Moved by
      Bill_Stewart
      Wednesday, September 4, 2019 6:46 PM
      This is not «design solution for me» forum

  

Dmitry_333

19.04.19 — 10:57

Всем доброго дня!

Господа, выручайте, пожалуйста-)

Написал обработку на своем компе, все отлично работает. Перенес на комп с ОС winserver 2008  и началось. Выдает вышеописанную ошибку. Перерегистрировал под админом все возможные dll-ки, начиная от comcntr до всех в папке C:Program Files (x86)Common FilesSystemado. Скачал и переустановил MDAC. Никакого результата.

Дабы отсечь варианты, соединение com V83.Comconnector создается, проверял. Проблема именно с ADODB.Connection. Инет весь перерыл, но ответ ничего не помогло, помогите пожалуйста.

  

Skylark

1 — 19.04.19 — 11:18

1. Нужного объекта всё же не зарегистрировано

2. На нужный объект нет прав у пользователя от имени которого 1С

  

Dmitry_333

2 — 19.04.19 — 11:36

(1) 1. Как понять, какой тогда объект нужно зарегистрировать?

2. От админа все делаю.

  

Skylark

3 — 19.04.19 — 12:03

(2) От админа ты запускаешь 1С. Не знаю как насчет файловой 1С, а в серверном варианте надо проверять права пользователя под которым запускается агент сервера 1С вроде. Там создается служебный 1cv8user или что-то в этом духе.

  

Dmitry_333

4 — 19.04.19 — 12:05

(3) Файловая у меня…

  

Dmitry_333

5 — 19.04.19 — 12:44

Вот сейчас еще проверил создание COMОбъект(«EXCEL.Application»).

Тоже работает.

Проблема только с гребаным  ADODB.Connection

  

1Сергей

6 — 19.04.19 — 12:48

msado15.dll тоже зарегал?

  

Dmitry_333

7 — 19.04.19 — 12:56

(6) ага, его в первую очередь

  

NorthWind

8 — 19.04.19 — 13:33

(0) битность того что регали совпадает с битностью 1С?

  

NorthWind

9 — 19.04.19 — 13:37

Если вы ставите мдак, то рискну предположить что библиотека адо 32-битная. А процесс 1С, из-под которого вы создаёте объект — тоже? Должен быть тоже 32 бита.

  

Dmitry_333

10 — 19.04.19 — 13:56

(8) Операционка 64, 1С 32. Регал соответственно: C:WindowsSysWOW64regsvr32 «C:Program Files (x86)и т.д.

  

Сияющий в темноте

11 — 19.04.19 — 14:57

пишем простой скритп на vbscript

Set o=CreateObject(«AdoDb.Connection»)

запускаем его через wscript.exe из system32 и из SysWow64 и смотрим на результат.

добиваемся,чтобы не было ошибок.

если работает из system32, то зарегана 64битная версия,если из syswow64,то 32 битная,если не откуда,то ничего не зарегано.

  

Dmitry_333

12 — 19.04.19 — 15:34

(11) Проделал. Запускал из командной строки. Из system32 не выдало никаких сообщений, ни ошибок. Это значит сработало?

Из SysWow64 вышло окно с ошибкой, что невозможно создание объекта контейнером ActiveX/

  

VS-1976

13 — 19.04.19 — 16:00

(12) У тебя это всё запускается под пользователем с правами Администратор? Если нет попробуй под пользователем с полными правами запустить. Если клиент-серверная вещь, то службу нужно запускать под пользователем с админискими правами.

  

NorthWind

14 — 19.04.19 — 16:04

(12) это значит, что у вас зарегистрирована 64-битная версия ADO, а 32-битная не зарегистрирована. Невозможно создание объекта как раз потому, что класс не зарегистрирован.

  

NorthWind

15 — 19.04.19 — 16:05

вообще это довольно странно, потому что даже под Win10 есть обе версии ADO — и 32 и 64 — «из коробки»

  

Dmitry_333

16 — 19.04.19 — 16:15

(13) Да, под админом.

(14) хм…, странно. Регистрировал строкой: C:WindowsSysWOW64regsvr32 «C:Program Files (x86)Common FilesSystemadomsado15.dll Вроде же так регистрируется 32-битные компоненты из под 64-битной ОС. Или я что-то неправильно делал?

  

Skylark

17 — 19.04.19 — 16:43

попробуй выполнить comexp.msc /32

и посмотреть есть ли там твоя компонента

  

Dmitry_333

18 — 19.04.19 — 16:51

(17) Она там есть, но потому я ее вручную там создавал

  • Remove From My Forums
  • Общие обсуждения

  • Помогите пожалуйста, при выполнении следующей строчки кода

    Dim con As Object = CreateObject(«ADODB.Connection»)

    в Windows Vista (лицензионная) получаю следующую ошибку:

    System.Exception: Cannot create ActiveX component.
    at Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String ServerName)

    Как решить данную проблему?

    • Изменен тип
      Igor Leyko
      18 октября 2010 г. 17:09
      давность и отсутствие активности в теме
  • Remove From My Forums
  • Question

  • I have an HTA file that is basically a compilation of scripts that I use, and share with others.  I’ve been developing it since 2011.  One of the earliest scripts added was searching AD for servers and returning what OU they were found in. 
    So to say the least, this has been a tried and true script.  Now all of a sudden last week, I started getting an error saying the script was causing the web browser to run slowly.  I rem’d out On Error Resume Next and found the offending line is
    ‘Set objConnection = CreateObject(«ADODB.Connection»).  The error statement is «activex component can’t create object: ‘ADODB.Connection’».  I’ve checked with another person who uses my toolbox and they said it works just fine
    for them.  So luckily it’s only affecting me right now, but who knows how long that will last.  My company locks down our computers so there’s not a lot I can do to make changes to my computer.  I’ll try anything you guys suggest, I just might
    not have rights to do so.

    • Edited by

      Monday, March 4, 2019 2:26 PM

    • Moved by
      Bill_Stewart
      Wednesday, September 4, 2019 6:46 PM
      This is not «design solution for me» forum
  • Remove From My Forums
  • Question

  • I have an HTA file that is basically a compilation of scripts that I use, and share with others.  I’ve been developing it since 2011.  One of the earliest scripts added was searching AD for servers and returning what OU they were found in. 
    So to say the least, this has been a tried and true script.  Now all of a sudden last week, I started getting an error saying the script was causing the web browser to run slowly.  I rem’d out On Error Resume Next and found the offending line is
    ‘Set objConnection = CreateObject(«ADODB.Connection»).  The error statement is «activex component can’t create object: ‘ADODB.Connection’».  I’ve checked with another person who uses my toolbox and they said it works just fine
    for them.  So luckily it’s only affecting me right now, but who knows how long that will last.  My company locks down our computers so there’s not a lot I can do to make changes to my computer.  I’ll try anything you guys suggest, I just might
    not have rights to do so.

    • Edited by

      Monday, March 4, 2019 2:26 PM

    • Moved by
      Bill_Stewart
      Wednesday, September 4, 2019 6:46 PM
      This is not «design solution for me» forum

Всем привет!

1C 8.3.13.1644
Windows Server 2012 (6.2.9200)

После внепланового отключения сервера, при попытке соединиться с базой через 1С (COM, ADODB.Connection) валится ошибка:

-2147221164 (0x800040154): Класс не зарегистрирован

{Справочник._ИБ.Команда.ТестПодключения.МодульКоманды(35)}: Ошибка при вызове конструктора (COMОбъект)
ОбъектБаза = Новый COMОбъект(«ADODB.Connection»);
по причине:
-2147221164(0x80040154): Класс не зарегистрирован

1С использует такую строку для подключения:
Driver={Oracle in OraClient11g_home1};UID=test1c;PWD=test1c;DBQ=10.0.0.1/work

Создал для теста скрипт: Set o=CreateObject(«AdoDb.Connection»)

Запускаю его через cmd в диалоговом режиме из папки %windir%system32 wscript.exe //I D:testado.vbs — ошибок не валится

Когда запускаю его из папки %windir%SysWOW64 wscript.exe //I D:testado.vbs — валится ошибка, т.е. получается не работает 32х битный ADODB.Connection?…

Что так же делал, из того что помню.

Переустанавливал все .NET Framework, AccessDatabaseEngine, MDAC_TYP, и пр

В службе компонентов создавал новое приложение COM+ с указанием comcntr.dll

Перерегистрировал comcntr.dll, msado15.dll

Начал уже грешить на Oracle Provide for OLE DB, т.к. не увидел его наличие в поставщиках данных…

OraOLED dll показывает что зарегистрирована.

Через 32х разрядный источник ODBC соединение работает. Проверял соединение через ХЕ драйвер и через драйвер OraClient11g.

Через sqldeveloper соединения так же работают.

Переустановил ODTwithODAC1120320_32bit.
скрин не мой, галочки отмечал все…

Возможно что то упустил из того что уже делал…

Содержание

  • Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’
    • Заполнение внешней таблицы
    • Выборка данных и запись
    • Использование хранимых процедур
  • Новые записи:

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

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

Пришлось недавно ближе поработать с объектами ADODB. Давно этого не делал, так что пришлось снова смотреть в старый код, а что-то и в интернете поискать. Решил скомпоновать базу здесь, в блоге — для дальнейшего возвращения.
Работа с ADODB производится через несколько объектов:
ADODB.Connection — Объект производит подключение к источнику данных, а так же трансляцию команд и наборов данных
ADODB.RecordSet — Объект предоставляющий механизмы работы с набором данных, такие как получение, модификация, удаление или добавление данных.
ADODB.Command — Объект, так же предоставляющий механизмы работы с наборами данных, но, в отличие от RecordSet, не возвращает данные на клиента.
ADODB.Connection

Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения.
Попытка ADOСоединение = Новый COMОбъект(«ADODB.Connection»); ADOСоединение.Open(«Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Возврат ADOСоединение; Исключение КонецПопытки;
Provider — Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info — необходимость использования шифрованого канала
User ID — Имя пользователя внешнего источника
Password — Пароль пользователя
Initial Catalog — Имя базы внешного источника
Data Source — Имя сервера
ADODB.RecordSet
Открытие набора данных для всей таблицы. Этот вариант хорош тем, что есть возможность указания дополнительных параметров набора данных.
RecordSet.Open(Источник, Соединение, ТипКурсора, ТипБлокировки, Параметры)
В приведенном ниже примере набор данных открывается с параметрами
Источник — «IMPORT_PRODUCTS»
Соединение — мADOСоединение
ТипКурсора — «0» (adOpenForwardOnly)
ТипБлокировки — «2» (adLockPessimistic)
Параметры — «2» (adCmdTable)
ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары.Open(«IMPORT_PRODUCTS», мADOСоединение, 0, 2, 2);
Открытие набора данных по запросу (использование дополнительных параметров вызывает исключения)
ТекстЗапросаТоваров = «SELECT * | FROM | where in (SELECT FROM where (( = ») |or ( = ‘NULL’) or( = ‘1’)))»; ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары .Open(ТекстЗапросаТоваров, мADOСоединение);

Заполнение внешней таблицы

При необходимости очистить таблицу внешнего источника данных, и загрузить туда обновленные данные.
Подключаемся к внешней базе
Попытка СтрокаСоединения = «Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Connection = Новый COMОбъект(«ADODB.Connection»); Connection.Open(СтрокаСоединения); Исключение Возврат; КонецПопытки; С помощью объекта ADODB.Command выполняем запрос по удалению данных из таблицы по определенному условию. При этом, в CommandText прописываем сам запрос, и важно указать CommandType равным 1.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.CommandText = «DELETE FROM .. WHERE PERIOD_ID = Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)»; Command.CommandType = 1; Command.ActiveConnection = Connection; Command.Execute();
Устанавливаем новый запрос, который запишет в таблицу отобранные данные, и выполняем его.
// Выборка данных за прошлый месяц Выборка = Запрос.Выполнить.Выбрать(); Пока Выборка.Следующий() Цикл Command.CommandText = «INSERT INTO ..(PERIOD_ID, CO_ID, ART_ID, S ) VALUES (» + » Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)» + «,NULL» + «,»+Формат(Выборка.Код, «ЧГ=») + «,»+Строка(?(Сумма = 0,»0″,Формат(Сумма,»ЧРД=.; ЧГ=; ЧО=»))) +»)»; Попытка Command.Execute(); Исключение Сообщить(«Ошибка записи данных в базу: «+ОписаниеОшибки()); КонецПопытки; КонецЦикла;

Выборка данных и запись

Вариант ситуации, когда необходимо выполнить выборку данных, и записать результат для дальнейшей обработки. (Не забываем создавать объект Connection)
В данном случае используется объект ADODB.Recordset, который позволяет получить набор записей.
CommandText = «select g_id, saledate, sqty, scost from dbo.»+НастройкиADODB.dbo+»(‘»+Формат(НачПериода,»ДФ=yyyyMMdd»)+»‘,’»+Формат(КонПериода,»ДФ=yyyyMMdd»)+»‘) where g_id in («+СтрокаКодовТМЦ+»)»; Попытка rsRES = NEW COMObject(«ADODB.Recordset»); rsRES.Open(CommandText, Connection); Исключение Connection.Close(); Возврат; КонецПопытки Пока не rsRES.eof() Цикл НоваяЗапись = НаборЗаписей.Добавить(); Для х = 0 по 3 Цикл НоваяЗапись = rsRES.Fields(х).Value; КонецЦикла; rsRES.MoveNext(); КонецЦикла; НаборЗаписей.Записать(Истина); rsRES.Close(); Connection.Close();
Кстати, советую пользоваться функцией EOF вместо RecordCount, так как последняя очень не надежна, неопределенная во времени выполнения и может привести к «залипанию» процесса — подробнее можно почитать на форумах.

Использование хранимых процедур

Хранимые процедуры можно вызвать просот из запроса, вписав в начале текста слово «exec», либо указав соответствующий CommandType и название хранимой процедуры в CommandText.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.ActiveConnection = Connection; Command.CommandText = «add_image»; Command.CommandType = 4; Создаем параметр посредством объекта Parameter (на перевес этому можно воспользоваться методом CreateParameter), и добавляем его методом Append в наше подключение.
Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@code»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 201; // Парам.Size = 255; Парам.Value = ВнутреннийКод; Command.Parameters.Append(Парам);
Переводим файл, который хотим передать в двоичный поток, создаем и добавляем параметр
Поток = Новый COMОбъект(«ADODB.Stream»); Поток.Type = 1; //StreamTypeEnum.adTypeBinary = 1 StreamTypeEnum.adTypeText = 2 Поток.Open(); Поток.LoadFromFile(ПолноеИмяФайла); локПотокБайт = Новый ComSafeArray(Поток.Read()); Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@file_data»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 205; //205 — adLongVarBinary Парам.Size = локПотокБайт.GetLength(); Парам.Value = локПотокБайт; Command.Parameters.Append(Парам); Command.Execute();

Добрый день, всем.
Буду признателен за советы, мысли, как решить неожиданно возникшую проблему с 1С 8.3. Имеем 1С 8.3.5.15.17, через MSSQL2008, MSOffice 2007. Всё лицензионное.
Недавно перешли с 8.2 на 8.3 . До переход использовалась специальная процедура: записать в file MSAccess2007 некоторую информацию, выглядело это так:

1C
1
2
3
4
5
6
7
8
9
10
    СтрокаПодключения="Provider=Microsoft.Ace.OLEDB.12.0;Data Source=E:MyDBMyFile.accDB;Persist Security Info=False;";
    Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Сообщить("Ошибка подключения к Access: " + ОписаниеОшибки());
        Вовзрат;
    КонецПопытки;
    // работаем с accDB

И всё работало на ура без всяких проблем.
После перехода на 8.3 столкнулся с проблемою, что Open не даёт соединения — просто упорно выдаёт ошибку.

Ошибка подключения к Access: {ОбщийМодуль.АС_ОСЧ.Модуль(212)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Access Database Engine): ‘E:MyDBMyFile.accDB’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

Ошибки на создания ComObject нет. Появляется на любой машине с любыми правами.
Естественно (для тестов) диск Е взят локальный (не сетевой) к базе вообще (MyFile.accDB) вообще никто не подключен; запускается от имени администратора — т.е. все полные права. Если взять запустить через WIndows->RUN «E:MyDBMyFile.accDB», то всё открывается, всё видно. Для тестов вообщен сделал E:MyDBMyFile.accDB как простой file без каких-либо ограничений.
Пробовал совершенно разные варианты команды «СтрокаПодключения» в различных исполнениях — ничего, всё в одном и том же: не открвает accDB никак.
Пробовал установить с Microsoft’а «AccessDatabaseEngine» — не помогает.

Самое интересное… При этом код

1C
1
2
3
4
5
6
7
8
9
10
11
12
    СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=e:MyDBbook1.xlsx;Extended Properties=Excel 12.0;";
    // создание соединения
        Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Возврат
        Сообщить("Ошибка подключения к EXCEL: " + ОписаниеОшибки());
        Возврат
    КонецПопытки;
    сообщить("УСПЕШНО EXCEL");

работает успешно.

Большое спасибо за комментарии.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account


Closed

CT144 opened this issue

Oct 18, 2017

· 21 comments


Closed

COMОбъект ADODB.Connection в 18 версии глючит

#559

CT144 opened this issue

Oct 18, 2017

· 21 comments

Comments

@CT144

Один и тот же «скрипт»:
Лог.Отладка("Пытаемся соединиться!"); Соединение = Новый COMОбъект("ADODB.Connection"); _СтрокаСоединения = ПолучитьСтрокуСоединения(БД); Лог.Отладка(_СтрокаСоединения); Результат = Соединение.Open(_СтрокаСоединения); Лог.Отладка("Соединились");
на разных версиях разные результаты:
ОТЛАДКА — Начали (OneScript v.1.0.18.13) …
ОТЛАДКА — Пытаемся соединиться!
ОТЛАДКА — Provider=SQLOLEDB; Data Source=»SQLsrv»; Initial Catalog=»debug_2″; User Id=»aaaaa»; Password=»zzzzz»;
ОТЛАДКА — {Модуль ADOSQL.os / Ошибка в строке: 29 / Внешнее исключение (System.Reflection.TargetInvocationException): Адресат вызова создал исключение.}
ОТЛАДКА — . . . . . ЗАКОНЧИЛИ

ОТЛАДКА — Начали (OneScript v.1.0.17.90) …
ОТЛАДКА — Пытаемся соединиться!
ОТЛАДКА — Provider=SQLOLEDB; Data Source=»SQLsrv»; Initial Catalog=»debug_2″; User Id=»aaaaa»; Password=»zzzzz»;
ОТЛАДКА — Соединились
ОТЛАДКА — . . . . . ЗАКОНЧИЛИ

@nixel2007

@CT144

@nixel2007

@CT144 это призыв последнего правившего сом-объекты :)

@CT144

@dmpas

@CT144 это такой способ позвать меня в обсуждение.

@EvilBeaver

Ну, во-первых, надо найти, где выскочило из заслона System.Reflection.TargetInvocationException и выдавать не его, а InnerException от него.

@EvilBeaver

@CT144 можешь дать точный кусок кода, чтобы не гадать, а сразу запустить?

@CT144

Лог.Отладка(«Пытаемся соединиться!»);
Соединение = Новый COMОбъект(«ADODB.Connection»);
_СтрокаСоединения = «Provider=SQLOLEDB; Data Source=»»»+ИмяСервера+»»»;
Initial Catalog=»»»+ИмяБД+»»»; User Id=»»»+Пользователь+»»»; Password=»»»
+Пароль+»»»;»;
Лог.Отладка(_СтрокаСоединения);
Попытка
Соединение.Open(_СтрокаСоединения);
Результат = Истина;
Исключение
Результат = Ложь;
ВызватьИсключение(«НЕ удалось установить соединение с БД:»+
_СтрокаСоединения);
КонецПопытки;
Лог.Отладка(«Соединились»);

2017-10-20 15:52 GMT+03:00 Andrei Ovsiankin <notifications@github.com>:

@Tavalik

Ишус закрыт, но у меня такая же ошибка. Версия OneScript — 1.0.19.105. При работе с ADODB.Connection получаю ошибку:

(System.Reflection.TargetInvocationException): Адресат вызова создал исключение.}

Но блин, в версии 1.0.17.90 все работает отлично.

Как же так?

@EvilBeaver

@Tavalik

@dvakor

Попробуйте ночную сборку, в ней фикс должен присутствовать. В 1.0.19.105 ошибка не была исправлена ( #670 )

@EvilBeaver

@Tavalik

Нет, в 1.0.20 работает. Спасибо. Ждем релиза и рабочего отладчика в 20.

@nixel2007

@Tavalik

Расскажите тогда как? Из магазина ставится версия расширения 0.2.0. На сайте тоже только эта версия http://oscript.io/downloads. Где взять vsix для Oscript 20? Или я чего-то не понимаю?

@nixel2007

@nixel2007

@Tavalik

Спасибо. Было бы здорово и на сайт добавить.

@EvilBeaver

@Tavalik то что в ночной сборке отсутствует отладчик — это поломка. Он должен там быть. Посмотрю, что случилось.

@EvilBeaver

@Tavalik отладчик для 20-ки опубликован на сайте

   Dmitry_333

19.04.19 — 10:57

Всем доброго дня!

Господа, выручайте, пожалуйста-)

Написал обработку на своем компе, все отлично работает. Перенес на комп с ОС winserver 2008  и началось. Выдает вышеописанную ошибку. Перерегистрировал под админом все возможные dll-ки, начиная от comcntr до всех в папке C:Program Files (x86)Common FilesSystemado. Скачал и переустановил MDAC. Никакого результата.

Дабы отсечь варианты, соединение com V83.Comconnector создается, проверял. Проблема именно с ADODB.Connection. Инет весь перерыл, но ответ ничего не помогло, помогите пожалуйста.

   Skylark

1 — 19.04.19 — 11:18

1. Нужного объекта всё же не зарегистрировано

2. На нужный объект нет прав у пользователя от имени которого 1С

   Dmitry_333

2 — 19.04.19 — 11:36

(1) 1. Как понять, какой тогда объект нужно зарегистрировать?

2. От админа все делаю.

   Skylark

3 — 19.04.19 — 12:03

(2) От админа ты запускаешь 1С. Не знаю как насчет файловой 1С, а в серверном варианте надо проверять права пользователя под которым запускается агент сервера 1С вроде. Там создается служебный 1cv8user или что-то в этом духе.

   Dmitry_333

4 — 19.04.19 — 12:05

(3) Файловая у меня…

   Dmitry_333

5 — 19.04.19 — 12:44

Вот сейчас еще проверил создание COMОбъект(«EXCEL.Application»).

Тоже работает.

Проблема только с гребаным  ADODB.Connection

   1Сергей

6 — 19.04.19 — 12:48

msado15.dll тоже зарегал?

   Dmitry_333

7 — 19.04.19 — 12:56

(6) ага, его в первую очередь

   NorthWind

8 — 19.04.19 — 13:33

(0) битность того что регали совпадает с битностью 1С?

   NorthWind

9 — 19.04.19 — 13:37

Если вы ставите мдак, то рискну предположить что библиотека адо 32-битная. А процесс 1С, из-под которого вы создаёте объект — тоже? Должен быть тоже 32 бита.

   Dmitry_333

10 — 19.04.19 — 13:56

(8) Операционка 64, 1С 32. Регал соответственно: C:WindowsSysWOW64regsvr32 «C:Program Files (x86)и т.д.

   Сияющий в темноте

11 — 19.04.19 — 14:57

пишем простой скритп на vbscript

Set o=CreateObject(«AdoDb.Connection»)

запускаем его через wscript.exe из system32 и из SysWow64 и смотрим на результат.

добиваемся,чтобы не было ошибок.

если работает из system32, то зарегана 64битная версия,если из syswow64,то 32 битная,если не откуда,то ничего не зарегано.

   Dmitry_333

12 — 19.04.19 — 15:34

(11) Проделал. Запускал из командной строки. Из system32 не выдало никаких сообщений, ни ошибок. Это значит сработало?

Из SysWow64 вышло окно с ошибкой, что невозможно создание объекта контейнером ActiveX/

   VS-1976

13 — 19.04.19 — 16:00

(12) У тебя это всё запускается под пользователем с правами Администратор? Если нет попробуй под пользователем с полными правами запустить. Если клиент-серверная вещь, то службу нужно запускать под пользователем с админискими правами.

   NorthWind

14 — 19.04.19 — 16:04

(12) это значит, что у вас зарегистрирована 64-битная версия ADO, а 32-битная не зарегистрирована. Невозможно создание объекта как раз потому, что класс не зарегистрирован.

   NorthWind

15 — 19.04.19 — 16:05

вообще это довольно странно, потому что даже под Win10 есть обе версии ADO — и 32 и 64 — «из коробки»

   Dmitry_333

16 — 19.04.19 — 16:15

(13) Да, под админом.

(14) хм…, странно. Регистрировал строкой: C:WindowsSysWOW64regsvr32 «C:Program Files (x86)Common FilesSystemadomsado15.dll Вроде же так регистрируется 32-битные компоненты из под 64-битной ОС. Или я что-то неправильно делал?

   Skylark

17 — 19.04.19 — 16:43

попробуй выполнить comexp.msc /32

и посмотреть есть ли там твоя компонента

  

Dmitry_333

18 — 19.04.19 — 16:51

(17) Она там есть, но потому я ее вручную там создавал

При выполнении обработки в 1С 7,7 вылетает ошибка Подкл=СоздатьОбъект(ADODB.Connection) Неудачная попытка создания объекта (ADODB.Connection) При этом у пользователей с администраторскими правами все работает. На что дать права?

ССори не прочитал до конца вопрос.. :)

Прямо так и пишешь? Невзлетит конечно :)

Думаю, что на пользователе с админскими правами это тоже не заработает…

Тэги:

Комментарии доступны только авторизированным пользователям

Похожие вопросы 1С

В этой группе 1С

  • Ошибка сокета 10049 citrix
  • Ошибка создания обращения 403 ок утм
  • Ошибка создания электронной подписи на вайлдберриз
  • Ошибка создания обращения 403 ok егаис
  • Ошибка создания экземпляра процессора таможня