Уведомления

Группа в Telegram: присоединиться

#1 Ноя. 8, 2019 04:03:17

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Всем, привет! В питоне я новичек, поэтому не судите строго. Столкнулся с задачей подключиться к 1С через COM объект. И получил ошибку, которую не могу победить. Ребят, помогите

Код:

 import pythoncom
import win32com.client
#coding=cp1251
V83_CONN_STRING = 'Srvr=1;Ref=2;Usr=3;Pwd=4;'
pythoncom.CoInitialize()
V83 = win32com.client.Dispatch("V83.COMConnector").Connect(V83_CONN_STRING)
    
q = '''запрос 1С'''
query = V83.NewObject("Query", q)
selection = query.Execute().Choose()

Ошибка:
 Traceback (most recent call last):
  File "<ipython-input-6-c6b11e33acca>", line 1, in <module>
    runfile('C:/Users/ks/Desktop/zs.py', wdir='C:/Users/ks/Desktop')
  File "C:\Users\ks\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)
  File "C:\Users\ks\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)
  File "C:/Users/ks/Desktop/zs.py", line 280, in <module>
    save1C()
  File "C:/Users/kssladkov/Desktop/zs.py", line 148, in save1C
    V83 = win32com.client.Dispatch("V83.COMConnector").Connect(V83_CONN_STRING)
  File "C:\Users\ks\AppData\Local\Continuum\anaconda3\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Users\ks\AppData\Local\Continuum\anaconda3\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Users\ks\AppData\Local\Continuum\anaconda3\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221164, 'Класс не зарегистрирован', None, None)

Отредактировано kir_ (Ноя. 8, 2019 04:13:44)

Офлайн

#2 Ноя. 8, 2019 07:59:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 3470
Репутация: +  192  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Давненько я к com не подключался.
Интересно откуда вы взяли “V83.COMConnector”?
А какая у вас разрядность питона и приложения ком сервера извините?



Офлайн

#3 Ноя. 8, 2019 09:06:20

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

doza_and
Интересно откуда вы взяли “V83.COMConnector”?
Непосредственно сам коннектор 1С (V83.COMConnector) устанавливается в “службе компонентов”, в папке “приложения COM+”.
Про сам коннектор можно посмотреть например здесь:
https://toster.ru/q/213644

doza_and
А какая у вас разрядность питона и приложения ком сервера извините?
Пишу в Spyder (Python 3.7.3 64-bit)
1C и конектор тоже 64-bit

делал по примеру вот отсюда (тем более, что задачи схожие):
https://toster.ru/q/607687
… но что-то пошло не так

Офлайн

#4 Ноя. 8, 2019 09:22:23

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

doza_and
Давненько я к com не подключался.
Нашел вашу переписку по этому же вопросу
http://python.su/forum/topic/30830/?page=1
Там вопрос как раз решился разрядностью. Но у меня все 64-bit вроде

Офлайн

#5 Ноя. 8, 2019 09:39:53

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Хотя… приложения то 64-bit, а сама библиотека 32

 import win32com.client
Сейчас проверю

Офлайн

#6 Ноя. 8, 2019 18:36:14

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 222
Репутация: +  4  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Будет ли разница, если вместо

 win32com.client.Dispatch
использовать
 win32com.client.gencache.EnsureDispatch
?

Офлайн

#7 Ноя. 11, 2019 08:02:17

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

vanvanov
Будет ли разница, если вместо
Не успел попробовать, но обязательно посмотрю ваш вариант

kir_
Хотя… приложения то 64-bit, а сама библиотека 32
В общем догадка была верной. Проблема решилась, когда установил python 32-bit (в моем случае Spyder 32-bit).

P.S. Спасибо всем кто советовал и помогал)


Офлайн

#8 Ноя. 12, 2019 09:09:35

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Одна проблема решилась, на другой завис. Продолжаю мучиться с COM-объектом…

Надо в 1С создать запись в справочние “Номенклатура”. Чего только не пробовал уже.
Вот на такой код:

 #coding=cp1251
    V83_CONN_STRING = 'Srvr=1;Ref=2;Usr=3;Pwd=4;' 
    pythoncom.CoInitialize()
    V83 = win32com.client.Dispatch("V83.COMConnector").Connect(V83_CONN_STRING)
    acts = getattr(V83.Catalogs, "Номенклатура")  
    act = acts.CreateElement() 
    setattr(act,"БазоваяЕдиницаИзмерения",EI)
    setattr(act,"Наименование",HM)
    setattr(act,"Артикул",code)

Пишет ошибку:
 Traceback (most recent call last):
  File "<ipython-input-30-c6b11e33acca>", line 1, in <module>
    runfile('C:/Users/ks/Desktop/zevs.py', wdir='C:/Users/ks/Desktop')
  File "C:\Users\ks\AppData\Local\Continuum\anaconda32\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)
  File "C:\Users\ks\AppData\Local\Continuum\anaconda32\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)
  File "C:/Users/ks/Desktop/zevs.py", line 272, in <module>
    save1C()
  File "C:/Users/ks/Desktop/zevs.py", line 151, in save1C
    act = acts.CreateElement()
  File "C:\Users\ks\AppData\Local\Continuum\anaconda32\lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.CreateElement

Офлайн

#9 Ноя. 12, 2019 09:36:25

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 222
Репутация: +  4  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Там нужна авторизация? У вас “<unknown>” на месте self._username_.

Офлайн

#10 Ноя. 12, 2019 09:47:34

kir_
Зарегистрирован: 2019-11-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

vanvanov
Там нужна авторизация? У вас “<unknown>” на месте self._username_.
да, авторизация в 1С нужна. Но я же это и делаю в самом начале при подключении:
 V83_CONN_STRING = 'Srvr=1;Ref=2;Usr=3;Pwd=4;' 
или я что-то не понимаю…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version