Аналог внешней компоненты на Python для 8-ки

Пример создания COM объекта на Python и вызов метода 1С внутри Python

Для тех кто еще не знает что такое Python, скажу сразу — это куча сэкономленного времени.
Куча прекрасных готовых библиотек в стандартном дистрибутиве. Наверное один из самых быстрых в разработке языков программирования. В дружбе его с 1С однозначно быть!
Кстати всем известный Dropbox полностью написан на python, включая клиентские программы.

Не буду писать для чего его можно использовать, иначе получится несколько страниц.

Сам исходник COM объекта выглядит так

http://pastebin.com/EBkQkMa5

 

 

Собирается это все в исполняемый файл exe с помощью py2exe и не требует никаких установленных библиотек на стороне пользователя. Сам файл для сборки здесь не прижу, для пытливых пусть будет шанс разораться с этим прекрасным инструментом 😉

На стороне 1С

Процедура Кнопка1Нажатие(Элемент)
Сообщить("Клиент.тест = "+Клиент.test(1));
парам = ЭтотОбъект;
Клиент.callbacktest(Парам);
КонецПроцедуры

И при выполнении вызывается функция обработки

Функция test(парам) Экспорт
Сообщить("код 1с вызван из питона");
КонецФункции

Этот COM объект так же можно использовать в 7-ке, но нельзя передвать параметры отличные от простых типов. Удачных экспериментов!

10 Comments

  1. quick

    Кто нибудь уже попробовал? или пока только примеряетесь? 🙂

    Reply
  2. rustamakhmetov

    (1) Чем компилировал python код в exe ?

    Reply
  3. quick

    (2) rustamakhmetov, py2exe

    Reply
  4. AlX0id
    Не буду писать для чего его можно использовать, иначе получится несколько страниц.

    Вот тут-то и кроется причина малого внимания к публикации ))

    Reply
  5. bzmax

    А почему только на windows?

    Уж если затронули Питон, то и на платформе Linux неплохо бы примеры посмотреть.

    Reply
  6. quick

    (5) bzmax, потому что COM существует только под Windows.

    Для Linux у меня сейчас используется парсер 1cv7.md файла для получения метаданных и простой парсер запросов на его основе по типу как сделано в 1С++, но пока что небыло времени оформлять это в публикацию.

    Reply
  7. quick

    (5) bzmax,

    Недавно открыл исходники библиотеки для прямых запросов 7.7 sql как раз под линукс.

    https://github.com/WorldException/v7py

    Можно использовать подстановки для метаданных.

    from v7 import db_work
    
    q = db_work.db.query(u»»»
    select top 10
    d.НаСайт НаСайт,
    ж.НомерДок НомерДок,
    ж.ДатаДок ДатаДок,
    case t.#Статус $Перечисление.СтатусыЗаказа.case Статус,
    h.Наименование Характеристика,
    t.#КоличествоВБазе ВБазе,
    t.#КоличествоНаСайте НаСайте,
    t.#ОжидаемаяДата Ожидаем
    from $Документ.Уведомление d
    join $Документ.#Уведомление t on d.Код=t.iddoc
    join $Справочник.ХарактеристикиНоменклатуры h on t.#ХарактеристикаТовара = h.id
    join $Журнал ж on ж.IDDOC = d.Код
    where ж.ДатаДок between %(start)s and %(end)s
    and ж.ВидДокумента = d.ВидДокумента
    «»»)
    q.set_param(‘start’, start_date)
    q.set_param(‘end’, end_date, True)
    
    print unicode(q)  # вывод преобразованного SQL запроса
    items = q()  # выполнение запроса
    for i in items:
    print i[1]
    

    Показать

    Reply
  8. lstdmi

    Ошибка подключения объекта обмена pyComTestv1:{ВнешняяОбработка.ПримерPython.МодульОбъекта(10)}: Ошибка при вызове конструктора (COMОбъект): -2146959355(0x80080005): Ошибка при выполнении приложения-сервера

    как решить?

    Reply
  9. quick

    после установки питона поставить pywin32

    https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/

    Reply
  10. ivv1970

    (4)

    Ну, хотя бы на одной странице напишите для чего можно использовать Python..

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *