[Из песочницы] Интеграция 1С с DLL с помощью Python
Комментарии (4)
1 июля 2017 в 18:56 (комментарий был изменён)
0↑
↓
регестрировать Python объекты, как COM объекты
…, но это уже не Native API. Да, имею сказать про Native API — оно и правда весьма такое себе… Полный C++, с множественным наследованием, причем на ровном месте. Имею с ним не то чтобы богатый, но опыт — так вот моё мнение — проще, как для разработчиков API, так и для разработчиков расширений было бы всё это реализовать на Plain old good C. Тем более что если там вчитаться в код — всё с Plain C и начинается: библиотека экспортирует всего 3 обычные __stdcall — функции. Но первая возвращает указатель на класс. Который еще три наследует. Короче, какое-то «горе от ума» там.1 июля 2017 в 19:10
+2↑
↓
Я бы не использовал конструкцию вида
str(type(obj)) == "
, такой код, как мне кажется, выглядит немного лучше:" from win32com.client.dynamic import PyIDispatchType if isinstance(obj, PyIDispatchType): ...
Второй момент — чтобы экспортируемое имя не было испорчено, оберните его в
extern "C" { ... }
1 июля 2017 в 20:55
0↑
↓
проще было бы 1С с web сервисом соединить, если это, конечно, не 7.71 июля 2017 в 22:09 (комментарий был изменён)
0↑
↓
Единственное, что может еще остаться непонятным — как передать данные из dll в 1C
Там тоже весело. Не помню что там насчёт COM, но насколько я понял Native API делали «по мотивам». Так вот, там надо сначала получить указатель на аллокатор памяти самой 1С, и возвращаемые значения должны возвращаться, сорри за тавтологию, исключительно по указателю на область памяти, аллоцированную этим аллокатором, сорри за тавтологию еще раз, не я это придумал.