v7SimpleAddIn
===================== Запуск процессов в 1С
Внешняя компонента для 1С 7.7/8.х по технологии СОМ. Позволяет запустить процесс в отдельном потоке без отображения окна и общаться с ним через stdout, stdin. Данные внешнего приложения вызывают "ОбработкаВнешнегоСобытия" что позволяет эмулировать различное оборудование, а так же асинхронно регировать на события внешей программы.
Возможности
- Можно запускать любую консольную программу или скрипт (python, php, perl, cmd, vbs, js)
- Процесс запускается в отдельном потоке и не мешает выполнению основного процесса 1С.
- При завершении 1С, процесс убивается.
- Можно запустить несколько процессов создав несколько объектов
- Строка с переносом передается в 1С в качестве события "ОбработкаВнешнегоСобытия"
- Можно передать свои данные в процесс через Записать("какие то данные")
- Ошибки во внешнем процессе не приводят к падению 1С, как это бывает при использовании внешних компонент.
Пример
Код 1С
Процедура ЗапуститьВнешний2()
П = СоздатьОбъект("AddIn.Process");
П.СобытиеИсточник = "test";
П.СобытиеДействие = "msg";
П.ПоказыватьОкно = "";
П.Запустить("c:\python27\python.exe -u "+КаталогИБ()+"test.py");
КонецПроцедуры
Процедура ОбработкаВнешнегоСобытия(а,п,в)
Сообщить("ОБРАБОТКА:"+а+" "+п+" "+в);
КонецПроцедуры
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"AddIn.dll");
Код скрипта
#coding: utf-8
from __future__ import unicode_literals
print("start")
print("Привет".encode('cp1251'))
while True:
line = sys.stdin.readline()
print(line)
Применение
Компонента писалась для запуска python скриптов, но использоваться может любая консольная программа.
На данный момент я использую для работы сканеров штрихкодов через сервер redis. Такой подход позволил добиться стабильной работы rs232 сканеров с удаленным сервером терминалов даже при переодических потерях связи. Скрипты для сканеров не включены в этот проект.
Второе применение это связка python + _
: http://www.seleniumhq.org/ позволила сделать простую обработку
для размещения заказа поставщику через его веб интерфейс. При запуске открывает браузер и выполняется заполнение как бы это
приходилось делать менеджеру. В обработке 1С запускается скрипт, а в обработке внешнего события ожидается команда готовности получать
данные о строках заказа.
v7AddIn
Исходники компоненты на Delphi XE5.
Для компиляции нужен Delphi не ниже XE2, т.к. шаблон компоненты переделан с использованием RTTI.
Теперь создавать компоненты для 1С намного проще.
Основной код располагается в модуле _
:https://github.com/WorldException/v7SimpleAddIn/blob/master/v7AddIn/PipeRunner.pas
--
Стоянов Евгений quick.es@gmail.com
Описание
Пример упрощенного создания компоненты для 1С по технологии COM.
Языки
Pascal
- Batchfile
- Python