Интеграция современных версий платформы 1С:Предприятие 8.3 со старыми информационными базами 1С:Предприятия 7.7 через OLE/COM-соединение — частая задача при переносе данных или поддержке исторических контуров учета. Однако при попытке инициализировать объект OLE разработчики нередко сталкиваются с ошибками: -2147221005(0x800401F3): Недопустимая строка с указанием класса или -2147467262(0x80004002): Интерфейс не поддерживается.
Разберем детально причины возникновения этих ошибок и пошагово рассмотрим способы их гарантированного устранения.
Проанализируем природу каждой из возникающих ошибок:
V77.Application). Это происходит, если платформа 1С 7.7 была перенесена простым копированием папки BIN без выполнения процедуры регистрации OLE-сервера либо если код 1С 8 выполняется на сервере, где физически не установлена платформа 7.7.rphost или 64-битный тонкий/толстый клиент 1С), прямой вызов 32-битного COM-сервера приводит к сбою маршалинга интерфейсов. Также причиной могут служить недостаточные права учетной записи службы 1С на запуск DCOM-объектов.Если файлы платформы 1С 7.7 были скопированы на сервер или рабочую станцию вручную, OLE-сервер необходимо зарегистрировать в системе от имени администратора. Выясним, как это сделать правильно:
cmd.exe обязательно от имени Администратора./regserver:Пример команды для регистрации:
"C:\Program Files (x86)\1Cv77\BIN\1cv7.exe" /regserver
Укажем путь к каталогу BIN в соответствии с реальным расположением файлов на диске. Также рекомендуется один раз запустить 1cv7.exe интерактивно от имени администратора, чтобы платформа обновила все необходимые ключи в системном реестре.
В зависимости от варианта установленного релиза 1С 7.7 строка инициализации COM-объекта может отличаться. Проверим используемый идентификатор:
V77.Application — универсальный идентификатор для комплексной или многопользовательской версии;V77S.Application — версия для работы с СУБД SQL Server;V77M.Application — сетевая версия;V77L.Application — однопользовательская (локальная) версия.Если регистрация выполнена успешно, но возникает ошибка 0x80004002, решим проблему несовместимости архитектур.
Способ А: Выполнение кода на 32-разрядном клиенте
Самый простой путь — выполнять обработку обмена в контексте &НаКлиенте на 32-битном клиенте 1С:Предприятия 8.3. В этом случае 32-битный процесс 1cv8c.exe напрямую взаимодействует с 32-битным 1cv7.exe без системных конфликтов разрядности.
Способ Б: Настройка приложения COM+ для 64-битного сервера 1С
Если код должен обязательно отрабатывать на стороне 64-разрядного сервера 1С (например, в регламентном задании), настроим системный суррогатный процесс dllhost.exe:
dcomcnfg через меню Пуск -> Выполнить).1C_V77_Bridge) и укажем тип Серверное приложение.Посмотрим на пример правильного создания COM-объекта и подключения к информационной базе 7.7 из кода 1С 8.3:
// Инициализируем COM-объект платформы 7.7
Попытка
База77 = Новый COMОбъект("V77.Application");
Исключение
Сообщить("Не удалось создать COM-объект 1С 7.7: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Формируем строку параметров подключения
// /D - путь к базе, /N - имя пользователя, /P - пароль
КаталогБазы77 = "C:\Bases\Base77";
ИмяПользователя = "Администратор";
ПарольПользователя = "12345";
ПараметрыПодключения = "/D""" + КаталогБазы77 + """ /N""" + ИмяПользователя + """ /P""" + ПарольПользователя + """";
// Подключаемся к базе. Первый параметр определяет режим:
// База77.RMTrade - Оперативный учет (Торговля и Склад)
// База77.RMAccount - Бухгалтерский учет (Бухгалтерия)
// База77.RMCalc - Расчет (Зарплата и Кадры)
УспешноеПодключение = База77.Initialize(База77.RMTrade, ПараметрыПодключения, "NO_SPLASH_SHOW");
Если Не УспешноеПодключение Тогда
Сообщить("Ошибка инициализации сеанса информационной базы 1С 7.7!");
Возврат;
Иначе
Сообщить("Подключение к 1С:Предприятию 7.7 успешно установлено.");
КонецЕсли;
Если настройка COM-соединения затруднена ограничениями серверной инфраструктуры, рассмотрим альтернативные варианты интеграции:
XBase, который читает таблицы базы напрямую без запуска исполняемых файлов 7.7.ADODB.Connection или с помощью механизма Внешние источники данных платформы 1С 8.3.