вторник, 24 июня 2014 г.

1с 8.3 com соединение class not registered

Особенности работы с COM-объектами на 64-битной платформе "1С: Предприятие 8.2"
Одна из проблем, возникающих после установки 64-битного сервера 1С, заключается в том, что 64-битные приложения не могут запускать 32-битные DLL, которые, например, инициализируются системой при создании COM-объекта. Таким образом, код вида

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

Объект = Новый COMОбъект("V8ComConnectorApp");

#Иначе

Объект = Новый COMОбъект("V82.ComConnector");

#КонецЕсли

Комментариев нет:

Отправить комментарий