gifts2017

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

Опубликовал Евгений Стоянов (quick) в раздел Программирование - Внешние компоненты

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

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

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


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

http://pastebin.com/EBkQkMa5

 

 

---

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

На стороне 1С

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер
ПримерPython.epf 25
.epf 3,53Mb
07.06.13
25
.epf 3,53Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Евгений Стоянов (quick) 16.06.13 23:35
Кто нибудь уже попробовал? или пока только примеряетесь? :)
2. Рустам Ахметов (rustamakhmetov) 10.07.14 14:03
(1) Чем компилировал python код в exe ?
3. Евгений Стоянов (quick) 16.07.14 11:43
4. Алексей 1 (AlX0id) 16.07.14 11:44
Не буду писать для чего его можно использовать, иначе получится несколько страниц.

Вот тут-то и кроется причина малого внимания к публикации ))
5. Максим Безруков (bzmax) 05.06.15 11:40
А почему только на windows?
Уж если затронули Питон, то и на платформе Linux неплохо бы примеры посмотреть.
6. Евгений Стоянов (quick) 09.06.15 14:29
(5) bzmax, потому что COM существует только под Windows.
Для Linux у меня сейчас используется парсер 1cv7.md файла для получения метаданных и простой парсер запросов на его основе по типу как сделано в 1С++, но пока что небыло времени оформлять это в публикацию.
7. Евгений Стоянов (quick) 18.10.15 23:15
(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]
...Показать Скрыть
8. Дмиртий Кудрявцев (lstdmi) 24.06.16 13:03
Ошибка подключения объекта обмена pyComTestv1:{ВнешняяОбработка.ПримерPython.МодульОбъекта(10)}: Ошибка при вызове конструктора (COMОбъект): -2146959355(0x80080005): Ошибка при выполнении приложения-сервера
как решить?
9. Евгений Стоянов (quick) 27.06.16 10:09
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа