Форум сайта python.su
Всем, привет! В питоне я новичек, поэтому не судите строго. Столкнулся с задачей подключиться к 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)
Офлайн
Давненько я к com не подключался.
Интересно откуда вы взяли “V83.COMConnector”?
А какая у вас разрядность питона и приложения ком сервера извините?
Офлайн
doza_andНепосредственно сам коннектор 1С (V83.COMConnector) устанавливается в “службе компонентов”, в папке “приложения COM+”.
Интересно откуда вы взяли “V83.COMConnector”?
doza_andПишу в Spyder (Python 3.7.3 64-bit)
А какая у вас разрядность питона и приложения ком сервера извините?
Офлайн
doza_andНашел вашу переписку по этому же вопросу
Давненько я к com не подключался.
Офлайн
Хотя… приложения то 64-bit, а сама библиотека 32
import win32com.client
Офлайн
Будет ли разница, если вместо
win32com.client.Dispatch
win32com.client.gencache.EnsureDispatch
Офлайн
vanvanovНе успел попробовать, но обязательно посмотрю ваш вариант
Будет ли разница, если вместо
kir_В общем догадка была верной. Проблема решилась, когда установил python 32-bit (в моем случае Spyder 32-bit).
Хотя… приложения то 64-bit, а сама библиотека 32
Офлайн
Одна проблема решилась, на другой завис. Продолжаю мучиться с 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
Офлайн
Там нужна авторизация? У вас “<unknown>” на месте self._username_.
Офлайн
vanvanovда, авторизация в 1С нужна. Но я же это и делаю в самом начале при подключении:
Там нужна авторизация? У вас “<unknown>” на месте self._username_.
V83_CONN_STRING = 'Srvr=1;Ref=2;Usr=3;Pwd=4;'
Офлайн