1C.Net:Предприятие — Инструкция по подключению Elisy .Net Bridge 4 на 64-разрядном сервере 1С:Предприятие 8

Существует известная проблема невозможности подключения 32-х разрядных dll в 64-разрядных приложениях. Происходит это из-за полной изоляции операционной системой 32-х и 64-х разрядных приложений. Как следствие невозможно в 64-х разрядных приложениях загрузить 32-х разрядные COM/OLE/ActiveX.
Для решения проблемы компания Microsoft предложила методику, по которой допустимо подключать к 64-разрядным приложениям 32х разрядные COM через расширение COM+.

1C.Net:Предприятие — Инструкция по подключению Elisy .Net Bridge 4 на 64-разрядном сервере 1С:Предприятие 8

Существует известная проблема невозможности подключения 32-х разрядных dll в 64-разрядных приложениях. Происходит это из-за полной изоляции операционной системой 32-х и 64-х разрядных приложений. Как следствие невозможно в 64-х разрядных приложениях загрузить 32-х разрядные COM/OLE/ActiveX.

Библиотека Elisy .Net Bridge спроектирована как 32-х разрядная и поэтому стабильно работает на 32-х разрядных сервере и клиенте 1С:Предприятие. Попытка же запустить Elisy .Net Bridge на 64-разрядном сервере 1С:Предприятие из-за упомянутой проблемы приводит к появлению ошибки: «Класс не зарегистрирован».

Ошибка 1С Класс не зарегистрирован

Для решения проблемы компания Microsoft предложила методику, по которой допустимо подключать к 64-разрядным приложениям 32х разрядные COM через расширение COM+.

 

Настройка

Настройка прописывает библиотеку Elisy.NetBridge.dll в Службе компонентов. Настройка показана на примере Windows 2008 R2.

Перед настройкой необходимо, чтобы библиотека Elisy.NetBridge.dll была установлена на компьютере и должным образом зарегистрирована в реестре.

Откройте Службу компонентов через Администрирование, Служба компонентов и перейдите по пути Службы компонентов, Компьютеры, Мой компьютер, Приложения COM+.

Создание приложения COM+, шаг 1

Выделите пункт дерева Приложения COM+ и выберите пункт меню Действия, Создать, Приложение.

Создание приложения COM+, шаг 2

Нажмите Создать новое приложение

Создание приложения COM+, шаг 3

Задайте имя ElisyNetBridge4x64 и выберите пункт Серверное приложение. Нажмите кнопку Далее.

Создание приложения COM+, шаг 4

В окне Учетная запись необходимо задать права под которыми будет запускаться dll. Можно задать такие же права, как и на службу сервера 1С:Предприятие. Нажмите кнопку Далее.

Следующие шаги можно пропустить, нажав кнопки Далее, Далее и Готово.

Создание приложения COM+, шаг 5 Создание приложения COM+, шаг 6 Создание приложения COM+, шаг 7

В ветке Приложения COM+ раскрыть новое приложение ElisyNetBridge4x64 и выбрать Компоненты. Нажать в меню Действия, Создать, Компонент.

Создание компонента COM+

В мастере установке нажать Далее и выбрать Импорт уже зарегистрированных компонентов. Библиотека Elisy.NetBridge.dll уже должна быть установлена на компьютер и зарегистрирована в реестре.

Создание компонента COM+, шаг 1 Создание компонента COM+, шаг 2

В появившемся окне «Выбор компонентов для импорта» установить флаг на 32 разряда и найти в отфильтрованном списке Elisy.NetBridge4.1. Нажать Далее и Готово.

Создание компонента COM+, шаг 3 Создание компонента COM+, шаг 4

Проверка работы

Для проверки правильности необходимо на 64-разрядном сервере запустить команды инициализации Elisy .Net Bridge. Компонент должен быть активирован, так как неактивированный компонент версии 4.0.4 после первой команды приведет к зависанию (в 32-разрядных приложениях в этом месте появляется диалоговое окно об ознакомительной версии). Например, можно выполнить программу в управляемой форме внешней обработки:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
net = Новый COMОбъект("Elisy.NetBridge4");
result = net.ActivateByLicenseFile("");
Сообщить(net.GetStatic("System.IntPtr", "Size"));
Сообщить(net.GetStatic("System.Environment", "Is64BitProcess"));
Сообщить(net.GetStatic("System.Environment", "Is64BitOperatingSystem"));
КонецПроцедуры

Программа вернет IntPtr.Size : 4 и Environment.Is64BitProcess : Ложь, так как библиотека загружена в режиме 32разрядной эмуляции. Environment.Is64BitOperatingSystem вернет Истина, так как операционная система 64-разрядная.

// //

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *