|
Есть ли разница в апи V81.ComConnector и V82.ComConnector? | ☑ | ||
---|---|---|---|---|
0
Linkovich
14.10.11
✎
14:12
|
Проблема заключается в следующем. Подключаюсь к базе 8.1 и к базе 8.2 из питона, использую идентичный код. С 8.1 работает, а с 8.2 - нет. Может кто сталкивался с особенностями работы V82.ComConnector.
Фрагмент для 8.1: path = 'Srvr="LocalTest"; Ref="Payment"; Usr="Exchange"; Pwd="1";' pythoncom.CoInitialize() app = win32com.client.Dispatch("V81.COMConnector") conn = app.Connect(path) c1DP = conn.DataProcessors.PythonAccess.Create() c1DP.UpdateTab("000000001") фрагмент для 8.2(ругается на строку c1DP.UpdateTab("000000001") и выдает ошибку 'NoneType' object is not callable): path = 'File="D:\Bases\RCDevLocal"; Usr="Exchange"; Pwd="1";' pythoncom.CoInitialize() app = win32com.client.Dispatch("V82.COMConnector") conn = app.Connect(path) c1DP = conn.DataProcessors.PythonAccess.Create() c1DP.UpdateTab("000000001") Буду признателен за любые советы и идеи... |
|||
1
izekia
14.10.11
✎
14:14
|
а что такое датапроцессоры?
|
|||
2
Amiralnar
14.10.11
✎
14:15
|
c1DP в предпоследней строке чему равняется?
|
|||
3
Amiralnar
14.10.11
✎
14:15
|
(1) Обработки
|
|||
4
izekia
14.10.11
✎
14:16
|
(0) может там что-то во внешнем соединении не живет?
|
|||
5
Linkovich
14.10.11
✎
14:17
|
(2) <COMObject <unknown>> как и в варианте V81
|
|||
6
Amiralnar
14.10.11
✎
14:19
|
Возможно, ошибка при выполнении кода в 1С.
|
|||
7
Amiralnar
14.10.11
✎
14:20
|
Если есть 1С, запусти, нажми "Сервис - Табло", напиши: DataProcessors.PythonAccess.Create() - должна получиться переменная с типом ОбработкаОбъект.
|
|||
8
Amiralnar
14.10.11
✎
14:21
|
Потом надо писать обработку для запуска в 1С. Возможно, после конвертации в 8.2 код стал некорректным.
|
|||
9
Amiralnar
14.10.11
✎
14:22
|
А, по сути, в 8.2 апи не изменился.
Цитирую: ОбработкаМенеджер.<Имя обработки>.Создать (DataProcessorManager.<Имя обработки>.Create) ОбработкаМенеджер.<Имя обработки> (DataProcessorManager.<Имя обработки>) Создать (Create) Синтаксис: Создать() Возвращаемое значение: Тип: ОбработкаОбъект. Описание: Создает новый экземпляр обработки. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: ОбработкаДокументов = Обработки.ОбработкаДокументов.Создать(); |
|||
10
Linkovich
14.10.11
✎
14:24
|
(7) так и есть - ОбработкаОбъект.PythonAccess
|
|||
11
Amiralnar
14.10.11
✎
14:25
|
Попробуй написать
DataProcessors.PythonAccess.Create().UpdateTab("000000001") |
|||
12
Linkovich
14.10.11
✎
14:31
|
(11) та же фигня...
Попробовал обратиться к метаданным обработки - работает: print c1DP.Metadata().Synonym вывел синоним обработки |
|||
13
Amiralnar
14.10.11
✎
14:32
|
Не, что выводит DataProcessors.PythonAccess.Create().UpdateTab("000000001")?
Должно быть значение, или ошибка исполнения. От синонимов проку мало. Ясно, что объект получен. Теперь не ясно - почему не апдейтит. |
|||
14
el-gamberro
14.10.11
✎
14:33
|
c1DP.UpdateTab('000000001')
|
|||
15
el-gamberro
14.10.11
✎
14:33
|
А вообще ты из какой среды работаешь?
|
|||
16
acsent
14.10.11
✎
14:33
|
Обработка криво работает в режиме внешнего соединения для 8.2. Копай код 1С
|
|||
17
Linkovich
14.10.11
✎
14:35
|
(16) код 1С(модуль обработки PythonAccess):
Процедура UpdateTab(лНомерДок) Экспорт КонецПроцедуры |
|||
18
Amiralnar
14.10.11
✎
14:37
|
Занавес.
|
|||
19
Linkovich
14.10.11
✎
18:04
|
Разобрался сам! Чтобы вопрос не повис в воздухе - опишу в чем была причина проблемы и как она решилась. На самом деле API v82.ComConnector отличается от v81.ComConnector. API v82.ComConnector более полный что ли, т.е. дает больше информации для обработчика COM-соединения. В моем случае, библиотека Python рассчитана на работу с менее умным COM-сервером чем в 8.2, поэтому в случаи 8.1 все прокатывало. v82.ComConnector дает больше информации об 1С-овских объектах(объекты конфигурации, их методы и функции и т.д.), что мешало питону правильно сгенерировать функцию обращения. Наверное это все-таки больше проблема питона. Вот теперь занавес.
|
|||
20
izekia
18.10.11
✎
17:16
|
проблема библиотеки скорее, а не питона ...
но из формулировки вообще ничего непонятно, ты хочешь сказать, что для 8.1 какой-то из интерфейсов не до конца реализован? можно подробнее инфу? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |