Как стать автором
Обновить

Комментарии 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
Для 7.7 есть Веб-расширение. Продаётся совсем отдельно за многоденег, давно не поддерживается (как и вся ветка 7.7, впрочем), иногда радует странными багами, но на его основе в своё время делали много интересного.
По сути позволяет выполнять произвольный 1С код внутри ASP страниц на IIS.
Единственное, что может еще остаться непонятным — как передать данные из dll в 1C
Там тоже весело. Не помню что там насчёт COM, но насколько я понял Native API делали «по мотивам». Так вот, там надо сначала получить указатель на аллокатор памяти самой 1С, и возвращаемые значения должны возвращаться, сорри за тавтологию, исключительно по указателю на область памяти, аллоцированную этим аллокатором, сорри за тавтологию еще раз, не я это придумал.
Помимо веб-сервиса

Вот его и нужно было юзать из 1С
Костыль пришлось делать, т.к. время поджимало. Решение понятное и простое, а писать NativeApi самому у меня не получилось. Попробую собрать под MinGW с данным wrapper`ом, если взлетит буду очень вам благодарен)
Для библиотек со стороны, без вариантов, надо расколдовывать mangle, который не стандартизован (по очевидным причинам). Примеры, как может быть: https://en.wikipedia.org/wiki/Name_mangling#How_different_compilers_mangle_the_same_functions

А для своих библиотек правильне было бы использовать extern «C».
Вот даже не знаю — надо было писать каммент или нет.
Но вот потом берешь базу после татких писателей, и тихо тихо плачешь.
Ничего личного, каждый имеет право на свои костыли.
Но, после таких извратов и начинаешь страдать.
Если бы вы просто немного, совсем чуть-чуть воспользоватлись гуглом, ты вы бы увидели готовые компоненты на гите, причем сразу и под x64, Linux,Android и т.д.
Вы даже не представлете себе какой трешь и старье — этот самый ком.

Просто обидно за свою сферу. Никто не скажет что у 1с есть полноценный oData протокол, интегрируй сколько влезет. Нет, зачем? Мы сайт будет интегрировать через xml, даже не json.
Мы не будет использовтаь rest full api на стороне 1с, для сброса заказов. Потому что разработчик интернет магазина где то увидел, что 1с умеет только в SOAP.

Короче, вот такие статьи и делают из 1С какое то убожество :(

К слову, как раз понемногу планирую статью на тему почему не нужно oData в 1с использовать для интеграций, только для разовых выгрузок и анализов) А лучше написать свой отдельный http/web сервис) Правда вряд ли раньше нового года ее напишу наверно, если не позже))
Ну попробуйте удивить человека, у которого уже около 5 интернет магазинов по одата работают.
Только рассчет скидки и выгрузка заказа идет через json и rest, так как иначе надо сильно много лишнего рассказывать вебам
На самом деле не исключаю что в вашем случае это работает или преимущества метода перевешивают недостатки для вас, но для многих кейсов лучше именно самописный rest сервис сделать. Я даже себе записал Вам ссылку скинуть когда допишу статью, правда раньше НГ точно не ждите.
Вот да! Блин, один заголовок чего стоит: «Интеграция с DLL»! О, да, бэйби!

Зачем тут питон, если уж есть либа на С, так и делайте компонент 1С на Си, как все нормальные люди по нормальной документации, будет и кроссплатформенно и без прослойки в виде питона… НО неет же
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации