Как исправить ошибку «Неудачная попытка создания объекта (OracleInProcServer.XOraSession)» при подключении 1С 7.7 к Oracle?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При настройке взаимодействия между платформой 1С:Предприятие 7.7 и СУБД Oracle на операционной системе Windows Server 2008 разработчики часто сталкиваются с ошибкой «Неудачная попытка создания объекта (OracleInProcServer.XOraSession)». Проанализируем причины возникновения этой проблемы и разберем по шагам варианты ее решения.

Причины возникновения ошибки и архитектурные ограничения

Выясним причину, почему платформа 1С не может создать OLE-объект. Данная ошибка указывает на отсутствие или неправильную регистрацию библиотеки Oracle Objects for OLE (OO4O) в системе.

Рассмотрим ключевые технические нюансы, с которыми связаны подобные сбои:

  1. Удаление технологии OO4O из новых версий Oracle: Начиная с версии Oracle Client 12c (12.1 и новее), компания Oracle полностью прекратила поддержку компонентов OO4O. Пакет ODAC122010Xcopy_32bit не содержит библиотек для работы с OracleInProcServer.XOraSession. Поэтому попытка зарегистрировать данный объект в версии 12c завершается неудачей.
  2. Разрядность платформы 1С 7.7: Платформа 1С:Предприятие 7.7 является строго 32-битным приложением. Любые внешние компоненты, провайдеры OLE DB и OCI-клиенты должны быть строго 32-битной разрядности (32-bit Client / ODAC), даже если они разворачиваются на 64-битной серверной ОС.
  3. Особенности запуска инсталлятора ODAC: При запуске установочных командных файлов (install.bat или configure.bat) необходимо предварительно перейти в каталог с дистрибутивом, а также предоставить пакету права администратора.

Решение 1. Использование дистрибутива Oracle Client версии 10g или 11g

Если в коде конфигурации 1С 7.7 жестко завязана работа через объект OracleInProcServer.XOraSession, то самым простым и эффективным решением является использование старых версий клиента Oracle (10g или 11g), где технологический стек OO4O еще поддерживается.

Разберем процесс правильной установки компонентов по шагам:

  1. Скачаем и распакуем 32-битный дистрибутив Oracle Client 10g или 11g (например, ODAC 10.2 или ODAC 11.2 32-bit).
  2. Запустим командную строку (cmd.exe) обязательно от имени администратора.
  3. Перейдем в папку с распакованным дистрибутивом с помощью команды cd. Это критически важно, чтобы скрипты установки правильно определили текущие пути к файлам и библиотекам.
  4. Выполним команду установки нужных компонентов (например, OLE DB и OO4O).
  5. Убедимся, что регистрация библиотеки провайдера прошла успешно. На 64-битных ОС регистрация 32-битных COM-компонентов должна производиться через утилиту C:\Windows\SysWOW64\regsvr32.exe.

Решение 2. Переход на провайдер OLE DB и ADODB.Connection

Если задействовать устаревший клиент 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, а сам путь не должен содержать некорректных символов.

← На главную