Комментарии 15
регестрировать Python объекты, как COM объекты… но это уже не Native API. Да, имею сказать про Native API — оно и правда весьма такое себе… Полный C++, с множественным наследованием, причем на ровном месте. Имею с ним не то чтобы богатый, но опыт — так вот моё мнение — проще, как для разработчиков API, так и для разработчиков расширений было бы всё это реализовать на Plain old good C. Тем более что если там вчитаться в код — всё с Plain C и начинается: библиотека экспортирует всего 3 обычные __stdcall — функции. Но первая возвращает указатель на класс. Который еще три наследует. Короче, какое-то «горе от ума» там.
Я бы не использовал конструкцию вида str(type(obj)) == "<type 'PyIDispatch'>"
, такой код, как мне кажется, выглядит немного лучше:
from win32com.client.dynamic import PyIDispatchType
if isinstance(obj, PyIDispatchType):
...
Второй момент — чтобы экспортируемое имя не было испорчено, оберните его в extern "C" { ... }
проще было бы 1С с web сервисом соединить, если это, конечно, не 7.7
Единственное, что может еще остаться непонятным — как передать данные из dll в 1CТам тоже весело. Не помню что там насчёт COM, но насколько я понял Native API делали «по мотивам». Так вот, там надо сначала получить указатель на аллокатор памяти самой 1С, и возвращаемые значения должны возвращаться, сорри за тавтологию, исключительно по указателю на область памяти, аллоцированную этим аллокатором, сорри за тавтологию еще раз, не я это придумал.
Помимо веб-сервиса
Вот его и нужно было юзать из 1С
Использую для 1С Native компонент очень удобную обертку, а тут костыли какие то с неочень нужным здесь Python.
Для библиотек со стороны, без вариантов, надо расколдовывать mangle, который не стандартизован (по очевидным причинам). Примеры, как может быть: https://en.wikipedia.org/wiki/Name_mangling#How_different_compilers_mangle_the_same_functions
А для своих библиотек правильне было бы использовать extern «C».
А для своих библиотек правильне было бы использовать extern «C».
Вот даже не знаю — надо было писать каммент или нет.
Но вот потом берешь базу после татких писателей, и тихо тихо плачешь.
Ничего личного, каждый имеет право на свои костыли.
Но, после таких извратов и начинаешь страдать.
Если бы вы просто немного, совсем чуть-чуть воспользоватлись гуглом, ты вы бы увидели готовые компоненты на гите, причем сразу и под x64, Linux,Android и т.д.
Вы даже не представлете себе какой трешь и старье — этот самый ком.
Просто обидно за свою сферу. Никто не скажет что у 1с есть полноценный oData протокол, интегрируй сколько влезет. Нет, зачем? Мы сайт будет интегрировать через xml, даже не json.
Мы не будет использовтаь rest full api на стороне 1с, для сброса заказов. Потому что разработчик интернет магазина где то увидел, что 1с умеет только в SOAP.
Короче, вот такие статьи и делают из 1С какое то убожество :(
Но вот потом берешь базу после татких писателей, и тихо тихо плачешь.
Ничего личного, каждый имеет право на свои костыли.
Но, после таких извратов и начинаешь страдать.
Если бы вы просто немного, совсем чуть-чуть воспользоватлись гуглом, ты вы бы увидели готовые компоненты на гите, причем сразу и под x64, Linux,Android и т.д.
Вы даже не представлете себе какой трешь и старье — этот самый ком.
Просто обидно за свою сферу. Никто не скажет что у 1с есть полноценный oData протокол, интегрируй сколько влезет. Нет, зачем? Мы сайт будет интегрировать через xml, даже не json.
Мы не будет использовтаь rest full api на стороне 1с, для сброса заказов. Потому что разработчик интернет магазина где то увидел, что 1с умеет только в SOAP.
Короче, вот такие статьи и делают из 1С какое то убожество :(
К слову, как раз понемногу планирую статью на тему почему не нужно oData в 1с использовать для интеграций, только для разовых выгрузок и анализов) А лучше написать свой отдельный http/web сервис) Правда вряд ли раньше нового года ее напишу наверно, если не позже))
Ну попробуйте удивить человека, у которого уже около 5 интернет магазинов по одата работают.
Только рассчет скидки и выгрузка заказа идет через json и rest, так как иначе надо сильно много лишнего рассказывать вебам
Только рассчет скидки и выгрузка заказа идет через json и rest, так как иначе надо сильно много лишнего рассказывать вебам
Вот да! Блин, один заголовок чего стоит: «Интеграция с DLL»! О, да, бэйби!
Зачем тут питон, если уж есть либа на С, так и делайте компонент 1С на Си, как все нормальные люди по нормальной документации, будет и кроссплатформенно и без прослойки в виде питона… НО неет же
Зачем тут питон, если уж есть либа на С, так и делайте компонент 1С на Си, как все нормальные люди по нормальной документации, будет и кроссплатформенно и без прослойки в виде питона… НО неет же
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Интеграция 1С с DLL с помощью Python