[Из песочницы] Интеграция 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.7
  • 1 июля 2017 в 22:09 (комментарий был изменён)

    0

    Единственное, что может еще остаться непонятным — как передать данные из dll в 1C
    Там тоже весело. Не помню что там насчёт COM, но насколько я понял Native API делали «по мотивам». Так вот, там надо сначала получить указатель на аллокатор памяти самой 1С, и возвращаемые значения должны возвращаться, сорри за тавтологию, исключительно по указателю на область памяти, аллоцированную этим аллокатором, сорри за тавтологию еще раз, не я это придумал.

© Habrahabr.ru