Особенности
работы с COM-объектами на 64-битной платформе "1С: Предприятие 8.2"
Одна из проблем, возникающих после установки 64-битного сервера 1С, заключается в том, что 64-битные приложения не могут запускать 32-битные DLL, которые, например, инициализируются системой при создании COM-объекта. Таким образом, код вида
V82 = Новый COMОбъект( «V82.ComConnector»);
ИЛИ
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
на стороне сервера выполнен не будет. Точнее, его выполнение приведет к ошибке: «Class not registered»
Решить данную проблему можно с помощью создания 64-битного приложения COM+. Данное приложение способно взаимодействовать с 32-приложениями.
Итак
- Запустим консоль "Службы компонентов" (например:
Пуск - Администрирование - Службы компонентов.
- Найдем ветку «Приложения COM+» и добавим новое приложение:
Создать - Приложение
- На вопрос "Установка или создание нового приложения" – необходимо ответить:"Создать новое приложение".
- Зададим имя нового приложения: V8ComConnectorApp; способ активаци: "серверное приложение".
- Учетная запись для запуска приложения: здесь нам надо выбрать учетную запись под которой работает сервер 1С.
- В ветке созданного приложения находим и выделяем ветку "Роли", выбираем роль "CreatorOwner", а затем в разделе "Пользователи" создаем пользователя - учетную запись, под которой работает сервер 1С.
- В ветке созданного приложения переходим на ветку "Компоненты" и создаем компонент:
Создать - Компонент
Выбираем "Установка новых компонентов", и находим нашу DLL-компоненту.
- Заходим в свойства установленного компонента и на вкладке "Безопасность", списке "Явно установленные для выделенных объектов роли" включаем флажок напротив роли CreatorOwner.
Важно: Мы создали приложение с именем "V8ComConnectorApp", а это значит что в коде мы должны создавать COM-объект с аналогичным ProgID. То есть
Объект = Новый COMОбъект("V8ComConnectorApp");
Это не очень удобно в том случае, если мы предполагаем, что наш код будет исполняться и на сервере, и на клиенте, где может быть установлена 32-битная версия «1С: Предприятие». В этом случае придется использовать подобный код
#Если Сервер Тогда Объект = Новый COMОбъект("V8ComConnectorApp"); #Иначе Объект = Новый COMОбъект("V82.ComConnector"); #КонецЕсли
Комментариев нет:
Отправить комментарий