Задать вопрос

Как избавиться от ошибки COM-соединения с 1С скриптом на Python?

Добрый день! Помогите разобраться с ошибкой COM-соединения с 1С скриптом на Python?
Собственно ошибка:
com_error: (-2147024891, 'Access is denied.', None, None)

Поигрался с кавычками и несколькими слешами в пути, разбивал строку подключения на переменные, а затем склеивал, пробовал и серверные базы и не серверные. Если задать намеренно путь к БД не верным, все равно появляется та же ошибка, соответственно проблема на стороне Python, вопрос только с чем она связана. COM-компонента зарегистрирована, кодировку пробовал менять, все без толку...
Код такой:
import pythoncom
import win32com.client

V83_CONN_STRING = "Srvr=srv01-w2k8;Ref=base_7;Usr=Администратор;Pwd=1;"

pythoncom.CoInitialize()
V83 = win32com.client.Dispatch("V83.COMConnector").Connect(V83_CONN_STRING)

Платформа 1С 8.3, Python 3.4, ОС Windows Server 2008 R2 x64.
  • Вопрос задан
  • 5102 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@klis
Если 1С 32-хбитная, то нужно сделать следующее:
Объект V81.Application выполняется в рамках нового процесса 1cv8.exe.

Объект V81.COMConnector является внутрипроцессным сервером. На удаленном компьютере нет процесса, в котором он может быть создан.

Чтобы объект V81.COMConnector можно было создать на удаленном компьютере, регистрации компоненты comcntr.dll в COM утилитой regsvr32.exe недостаточно. Требуется выполнить регистрацию на удаленном компьютере компоненты comcntr.dll в качестве приложения COM+.

Для этого:

* запустите утилиту Component Services;
* создайте пустое COM+ приложение с:
o Activation type - Server application;
o именем, например, V81_COMConnector;
o укажите имя пользователя Windows, от имени которого компонента будет запускаться специальный процесс dllhost.exe;
* в ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.

В результате при создании объекта V81.COMConnector на удаленном компьютере будет запущен специальный системный процесс dllhost.exe, и в нем будет создан объект V81.COMConnector.


PS V81.COMConnector заменять на V83.COMConnector. На то, что речь идет об удаленном компьютере, внимания не обращать.

Источник: www.forum.mista.ru/topic.php?id=526603
Ответ написан
@AnGood
На всякий случай проверьте права пользователя, из под которого запускается скрипт на Python.
%ProgramFiles%/1cv8
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы