При настройке взаимодействия между платформой 1С:Предприятие 7.7 и СУБД Oracle на операционной системе Windows Server 2008 разработчики часто сталкиваются с ошибкой «Неудачная попытка создания объекта (OracleInProcServer.XOraSession)». Проанализируем причины возникновения этой проблемы и разберем по шагам варианты ее решения.
Выясним причину, почему платформа 1С не может создать OLE-объект. Данная ошибка указывает на отсутствие или неправильную регистрацию библиотеки Oracle Objects for OLE (OO4O) в системе.
Рассмотрим ключевые технические нюансы, с которыми связаны подобные сбои:
ODAC122010Xcopy_32bit не содержит библиотек для работы с OracleInProcServer.XOraSession. Поэтому попытка зарегистрировать данный объект в версии 12c завершается неудачей.32-bit Client / ODAC), даже если они разворачиваются на 64-битной серверной ОС.install.bat или configure.bat) необходимо предварительно перейти в каталог с дистрибутивом, а также предоставить пакету права администратора.Если в коде конфигурации 1С 7.7 жестко завязана работа через объект OracleInProcServer.XOraSession, то самым простым и эффективным решением является использование старых версий клиента Oracle (10g или 11g), где технологический стек OO4O еще поддерживается.
Разберем процесс правильной установки компонентов по шагам:
ODAC 10.2 или ODAC 11.2 32-bit).cmd.exe) обязательно от имени администратора.cd. Это критически важно, чтобы скрипты установки правильно определили текущие пути к файлам и библиотекам.C:\Windows\SysWOW64\regsvr32.exe.Если задействовать устаревший клиент Oracle 10g невозможно или требуется использовать актуальную версию ODAC 12c, рекомендуется переписать участок кода 1С с технологии OO4O на универсальное OLE DB подключение через объект ADODB.Connection.
Провайдер OraOLEDB.Oracle входит в состав пакета ODAC 12c (32-bit) и успешно регистрируется файлом OraOLEDB12.dll. Рассмотрим пример кода в 1С 7.7 для работы с Oracle через ADODB:
// Создание объекта соединения ADODB
Connection = СоздатьОбъект("ADODB.Connection");
// Формирование строки подключения через провайдер OraOLEDB.Oracle
СтрокаПодключения = "Provider=OraOLEDB.Oracle;Data Source=Имя_Сервиса_TNS;User ID=Логин;Password=Пароль;";
Попытка
Connection.Open(СтрокаПодключения);
Сообщить("Подключение к Oracle успешно установлено!");
Исключение
Сообщить("Ошибка подключения к Oracle: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Выполнение SQL-запроса к базе данных Oracle
Recordset = СоздатьОбъект("ADODB.Recordset");
ТекстЗапроса = "SELECT * FROM tableName";
Recordset.Open(ТекстЗапроса, Connection);
Пока Recordset.EOF() = 0 Цикл
// Чтение значений полей выборки
ЗначениеПоля = Recordset.Fields("fieldName").Value;
Recordset.MoveNext();
КонецЦикла;
Recordset.Close();
Connection.Close();
Также важно проверить системную переменную окружения PATH на Windows Server 2008. Путь к каталогу bin установленного 32-битного клиента Oracle должен стоять в начале списка PATH, а сам путь не должен содержать некорректных символов.