EventProxy - внешняя компонента для асинхронной обработки событий COM-объектов (работает в 7.7 и 8.0)

Публикация № 14477

Разработка - Разработка внешних компонент

EventProxy - внешняя компонента для асинхронной обработки событий COM-объектов.
Работает в 7.7 и в 8.0

Содержит единственный объект EventProxy.

Свойства:

  • ГлубинаБуфераСобытий(EventBufferDepth) - глубина буфера событий интерфейса IAsyncEvent
  • ГлобальныйКонтекст(GlobalContext) - собственно он и есть

Методы:

  • Источник (Source) Устанавливает источник событий.
    параметры:
    • Источник - собственно источник событий.
    • ProgID - ProgID источника (По этому ProgID определяются DISPID и имена событий)
    • ИмяИсточника - имя источника событий, как оно будет передано в процедуру ОбработкаВнешнегоСобытия
  • ПолучитьОбъект (GetObject)
    передает свой единственный параметр в ф-ю CoGetObject и возвращает полученный объект (аналог GetObject в VB)
  • Сериализовать
    сериализует переданный параметр при помощи ObjRefMoniker

При вызове метода "Источник", EventProxy подписывается на события источника.
При получении события оно передается в 1С через IAsyncEvent.

В процедуре ОбработкаВнешнегоСобытия(Источник, Событие, Данные) аргумент "Данные" содержит сериализованный список значений с параметрами события. Для десериализации параметров события необходимо вызвать функцию ЗначениеИзСтрокиВнутр(Данные). Параметры с типом VT_DISPATCH сериализуются при помощи ObjRefMoniker и могут быть десериализованы методом "ПолучитьОбъект".

Поскольку обработка событий в 1С идет в асинхронном режиме, следует соблюдать осторожность при использовании параметров, восстановленных из ссылки ObjRef, т.к. к тому времени, когда у 1С появится время обработать внешнее событие, объект может прекратить свое существование.

Пример использования:

Перем Обработчик, ОбработчикСобытий,objWMIServices;

Процедура ПриНачалеРаботыСистемы()
	//ПодключитьВнешнююКомпоненту("Addin.EventProxy");
	ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"EventProxy.dll");
	ОбработчикСобытий=СоздатьОбъект("Addin.EventProxy");
	ОбработчикСобытий.ГлубинаБуфераСобытий=200;
	Обработчик=СоздатьОбъект("WbemScripting.SWbemSink");
	ОбработчикСобытий.Источник(Обработчик,"WbemScripting.SWbemSink","WMISink");
	objWMIServices = ОбработчикСобытий.ПолучитьОбъект( "winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2");
	Shell=СоздатьОбъект("WScript.Shell");
	Env=Shell.Environment("Process");
	objWMIServices.ExecNotificationQueryAsync(Обработчик,
	"SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_PrintJob'
	|AND TargetInstance.Owner='"+Env.Item("UserName")+"'");
КонецПроцедуры	// ПриОткрытии

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
	Если (Источник="WMISink") и (Событие="OnObjectReady") Тогда
		Д=ЗначениеИзСтрокиВнутр(Данные);
		WMIObj=ОбработчикСобытий.ПолучитьОбъект(Д.ПолучитьЗначение(1));
		ИмяСобытия=WMIObj.SystemProperties_.Item("__Class").Value;
		Job=WMIObj.TargetInstance;
		Если ИмяСобытия="__InstanceDeletionEvent" Тогда
			Если Job.PagesPrinted=Job.TotalPages Тогда
				Сообщить("Документ "+Job.Document+" напечатан");
			Иначе
				Сообщить("Документ "+Job.Document+" не напечатан","!!!");
			КонецЕсли;
		КонецЕсли;
		Сообщить("Name:"+Job.Name);
		Сообщить("Caption:"+Job.Caption);
		Сообщить("Description:"+Job.Description);
		Сообщить("Document:"+Job.Document);
		Сообщить("Owner:"+Job.Owner); 
		Сообщить("TotalPages:"+Job.TotalPages);
		Сообщить("StartTime:"+Job.StartTime);
		Сообщить("HostPrintQueue:"+Job.HostPrintQueue);
		Сообщить("JobStatus:"+Job.JobStatus);
		Сообщить("Size:"+Job.Size);
		Сообщить("Status:"+Job.Status);
		Сообщить("StatusMask:"+Job.StatusMask);
		Сообщить("PagesPrinted:"+Job.PagesPrinted);
		Сообщить("JobId:"+Job.JobId);
	КонецЕсли;
КонецПроцедуры	// ОбработкаВнешнегоСобытия

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

Наименование Файл Версия Размер
EventProxy.rar

.1205761159 16,52Kb
25.09.09
114
.1205761159 16,52Kb 114 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3871 09.01.07 07:05 Сейчас в теме
2. steban 72 08.01.07 20:29 Сейчас в теме
При вызове метода Источник создается происходит подписка на события.
Обработка событий происходит в процедуре ОбработкаВнешнегоСобытия, где Источник-имя заданное при подписке (чтобы различать источники), Событие - наименование события, как оно прописано в TypeLibrary источника, данные - список значений с параметрами события, сериализованный методом, аналогичным ЗначениеВСтрокуВнутр.
Параметры с типом VT_DISPATCH надо дополнительно десериализовать методом ПолучитьОбъект (GetObject).
Могу набросать пример по отслеживанию событий файловой системы.
4. steban 72 11.11.06 12:56 Сейчас в теме
С аутглюком пример получился неудачный - очень часто к моменту обработки события ссылка на письмо становится инвалидной.
Заменил на отслеживание событий очереди принтера через WMI.
5. sumerian 1 27.11.07 15:55 Сейчас в теме
прикрутил для отслеживания появления в папке файлов. работает, но wmiprvse.exe отжирает до 60% процессорного времени, после ОбработчикСобытий=0 и Обработчик=0 процесс не исчезает. убиваешь в диспетчере задач - сам поднимается и опять жреть. есть решение?
6. steban 72 24.12.07 15:58 Сейчас в теме
2 sumerian:
решение есть - увеличить polling interval.
Код
within 10
Показать полностью
7. steban 72 17.03.08 16:40 Сейчас в теме
Добавлена поддержка объектов, не реализующих IProvideClassInfo (например InternetExplorer.Application )
8. German 874 06.07.08 01:21 Сейчас в теме
А как использовать с ADODB.Connection?

Код
      
ОбработчикСобытий=Новый ("Addin.EventProxy");
ОбработчикСобытий.ГлубинаБуфераСобытий=200;
Обработчик= Новый COMОбъект("ADODB.Connection");
Обработчик.ConnectionString = СтрокаПодключения;
Обработчик.ConnectionTimeout=0;
Обработчик.CursorLocation=3;
Обработчик.Open();
ОбработчикСобытий.Источник(Обработчик,"ADODB.Connection","ADO");
АсинхронныйОбъект=ОбработчикСобытий.ПолучитьОбъект(" "); 
Показать полностью


Что передать в функцию ПолучитьОбъект чтобы вернуть объект?
10. vis_tmp 30 25.04.20 14:07 Сейчас в теме
Никак не могу найти, есть ли возможность для 7.7 использовать Rabbit MQ ?
Оставьте свое сообщение

См. также

Miracle Native - ВК для V8 Промо

Разработка внешних компонент v8 Россия Бесплатно (free)

Настоящая ВК написана по технологии 1С-Native. По методам и свойствам является наследницей MIracveV8 с планируемым развитием функционала. Версия 1.2.1.1 Не триальная, подправлена некорректная работа под х64

23.04.2012    32704    0    Abadonna    81    

PinkRabbitMQ - Native API компонента 1С с открытым исходным кодом, для обмена сообщениями через RabbitMQ

Разработка внешних компонент v8 Бесплатно (free)

PinkRabbitMQ представляет собой Native API компоненту для 1С Предприятия 8 (Windows 32bit и 64bit) с открытым исходным кодом на с++ (можно собрать компоненту самостоятельно). PinkRabbitMQ это низкоуровневая компонента которая реализует обмен по протоколу AMQP с брокером сообщений RabbitMQ. Для организации высокоуровнего обмена между информационными базами предназначен Адаптер. Компонента разрабатывается в рамках проекта Адаптер.

29.07.2019    17221    0    Begemoth80    154    

Внешняя компонента для ping (под win)

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Цель: выполнение ping из 1С без использования команд системы. Может быть полезна разработчикам для проверки доступности компьютеров.

05.01.2019    6019    3    milut    4    

Мини-Эверест: Native ВК для 8.х

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Список и свойства HDD, список и свойства ОЗУ, список запущенных процессов (для терминала - всех пользователей с указанием номера сессии), список запущенных сервисов, характеристики BIOS

20.08.2014    16827    0    Abadonna    7    

ВК для работы с файлами FilesNative.dll

Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Компонента реализует некоторые методы работы с файлами (архивами). Поддерживаемые форматы распаковки архивов: ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA, 7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZ

18.06.2014    17750    0    Abadonna    9    

NetNative: ВК для работы с сетью

Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

Прослушивание UDP-портов, посылка UDP-сообщений, возможность организации UDP-чата, некоторые сетевые команды. Написана по технологии Native

23.02.2014    19692    0    Abadonna    10    

Отслеживание изменений каталога в REAL-TIME: Native ВК для 8.х

Разработка внешних компонент v8 Россия Бесплатно (free)

Давно у меня была задумка отследить, например, появление определенного файла в каталоге базы данных без использования различных таймеров и обработчиков ожидания. Настоящая ВК отслеживает изменения в выбранном каталоге в реальном времени и генерирует в 1С соответствующие внешние события. Выбранный каталог может быть как папкой, так и целым диском.

09.10.2013    20937    0    Abadonna    38    

Трей-мессенджер: Native ВK для 8.х

Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

Иконка 1С в трее с popup-mеnu, баллуны, оповещения, обратная связь. Выполнена по технологии Native, не требует регистрации в реестре и особых прав пользователя. Имеет обратную связь с 1С через генерацию внешних событий. Имеет popup-menu на иконке в трее для управления окном 1С (закрыть, скрыть, показать+ 2 пункта генерации событий). Есть возможность убрать кнопку главного окна из панели задач.

23.09.2013    26684    0    Abadonna    121    

Внешняя компонента для работы со строками

Разработка внешних компонент v8 Россия Бесплатно (free)

ВК по технологии Native для работы со строками: хеши по различным алгоритмам, крутое шифрование, вычисление релевантности (схожести) строк. Событие переключения подсистем.

20.03.2013    26037    0    Abadonna    105    

ВК для 1С:Предприятие 8.2 NativeAPI на Delphi (запуск приложений, раскладка клавиатуры, события и др.)

Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

Внешняя компонента на основе разработки Крипича http://infostart.ru/public/81644/ - NativeAPI на Delphi реализует запуск процесса с заданным приоритетом и видимостью окна, переключение раскладки клавиатуры, всплывающие сообщения в трее, паузу sleep без загрузки процессора и внешние события.

01.08.2011    46483    0    romix    57    

Загрузка распределённых сумм оплаты страховых взносов в 1С 8

Зарплата Внешние источники данных Обмен через XML Зарплата v8 ЗУП2.5 ЗКБУ Россия БУ НУ ФОМС, ПФ, ФСС Бесплатно (free)

Загрузка подготовленных во внешних, по отношению к 1С, программах сумм оплаты страховых взносов в документ "Сведения о страховых взносах и стаже застрахованных лиц (СЗВ-4, СЗВ-6) ". Добавлена обработка по замене информации в табличной части документа "Сведения о страховых взносах и стаже застрахованных лиц (СЗВ-4, СЗВ-6)".

23.07.2011    8514    0    Kapitan69    22    

Драйвер клавиатурного сканера

Разработка внешних компонент v8 Россия Бесплатно (free)

Драйвер сканеров USB-HID (эмуляция клавиатуры) для 1С Предприятие 8.2. Дополнительно может отсылать текст на дисплей покупателя Posiflex PD2601.

13.07.2011    10752    0    Ma_X_X    12    

Thermal Print Library - ActiveX библиотека для печати на термопринтерах Godex BZB2/EZ2/EZ4, C.Itoh EZ2/EZ4, Citizen CLP-521/621

Разработка внешних компонент v8 1cv8.cf 1cv7.md Россия Бесплатно (free)

Библиотека Thermal Print Library является COM сервером и предназначается для использования в любых средах, которые в состоянии выступить в роли OLE-клиента (MS Office, 1С Предприятие, VB, VBScript, и т.д.). Допускается применение со следующими моделями термопринтеров : Godex BZB2/EZ2/EZ4, C.Itoh EZ2/EZ4, Citizen CLP-521/621.

20.09.2010    22177    0    GreenLab    23    

Загрузка данных из СуперМага в бухгалтерии 77 и 8

Внешние источники данных Обработка документов Обработка справочников Розничная торговля Розничная торговля v8 БП2.0 1С7:Бух Бесплатно (free)

В компании на розничных продажах стоит СуперМаг 2000, а учет, соответственно - в 1Сине. Ну вот, по ТЗ от главбуха накорябал две обработки, подгружающие в бухгалтерии данные по ТоргОперациям из текстовых файлов, выгружаемых из СуперМага 2000. Обратите внимание, что, так как компоновка данных в СуперМаге малость вывихнутая по мозгам, то сначала обрабатывается файл выгрузки Контрагентов, а потом только файл с ТоргОперациями... в общем, кому-нибудь возможно пригодится...

06.05.2010    12282    0    Farpost    5    

[BackgroundWorker] - Фоновые задания в файловом режиме 1С 8.x

Практика программирования Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

ActiveX-компонента позволяет выполнять задачи в фоне с индикацией прогресса и возможностью прерывания выполнения. Также работает и клиент/серверном варианте, в качестве альтернативы типовым фоновым заданиям

04.03.2010    23368    0    Душелов    15    

Архивация базы 1С-Предприятие

Разработка внешних компонент Архивирование (backup) v8 1cv8.cf Россия Бесплатно (free)

Используем стандартный планировщик Windows и файл Visual Basic Script с файлом настроек, для плановой выгрузки базы данных.

29.12.2009    10974    0    alves    4    

ActiveX - плейер для 1С

Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

Для тех, кто любит всё внутри 1С ;) Форматы: mp3 и wav

01.12.2009    17715    0    Abadonna    39    

Загрузка из программы Профокна 2000

Внешние источники данных v8 1cv8.cf Россия Бесплатно (free)

Как-то надо было сделать выгрузку заказов из программы Профокна 2000, в результате чего пришлось потратить много времени на разбор структуры базы данных. Изучение обработки поможет избежать таких затрат.

24.11.2009    13541    0    Codimca    5    

Использование визуальных (ActiveX) компонент в тонком клиенте 1С 8.2

Разработка внешних компонент Администрирование данных 1С v8 1cv8.cf Россия Бесплатно (free)

В данной статье рассматривается вопрос использования визуальных компонент (ActiveX) на форме тонкого клиента 1С 8.2 и веб-клиента на базе MS Internet Explorer.

19.11.2009    40882    0    Душелов    59    

Хранитель COM - объектов

Разработка внешних компонент Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Позволяет сохранять COM - объект между серверными вызовами в 8.2. Сохраняет и получает ссылку на объект в ROT (Running Object Table). БЕТА!

18.11.2009    12609    0    Hadgehogs    14    

[SendGoogleSMS] Отправка SMS уведомлений через сервис Google Calendar

WEB SMS рассылки Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента генерирует события в Google Calendar с извещением по SMS. В архивах ВК для 7.7 (работает и в 8-ке) и ActiveX - для работы в контексте сервера 1С 8.х

07.08.2009    29736    0    Душелов    37    

[PDF Viewer] - Просмотр PDF в 1С

Разработка внешних компонент Работа с интерфейсом v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

ActiveX-компонента для просмотра PDF. Позволяет сохранить в виде текста, картинки и PostScript. Реализованы механизмы поиска текста и печати.

15.07.2009    35013    0    Душелов    57    

Подпись к полю ввода в самом поле

Работа с интерфейсом Разработка внешних компонент v8 1cv8.cf Бесплатно (free)

Все чаще в интерфейсе программных продуктов используется новый способ подписи или комментирования полей ввода. Выглядит это так: пока поле пустое - в нем отображается подпись серого цвета, если в поле что то начинают вводить, подпись исчезает.

30.04.2009    16640    0    Stepa86    22    

Универсальный загрузчик файлов MS Access

Внешние источники данных v8 1cv8.cf Россия Бесплатно (free)

Обработка предназначена для загрузки файлов формата MS Access в справочники 1С:Предприятие 8.1

01.04.2009    4154    0    sky1c    14    

[IFilter] Поиск в содержании файлов из 1С (ВК, .NET)

Разработка внешних компонент Поиск данных v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента для работы с фильтрами поисковых систем. Получает текст из файла по установленном в системе фильтрам. Индексирует и ищет файлы по их содержанию (аналог Desktop Search) Поддерживает *.doc, *.xls, *.txt, *.ppt. Дополнительные фильтры можно скачать с http://www.ifilter.org/Links.htm

24.03.2009    32909    0    Душелов    44    

[Сервер событий] Клиент + Сервер + Внешние события

Разработка внешних компонент Перенос данных из 1C8 в 1C8 1С7.7<->1C7.7 v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Средство для генерирования событий между разными сеансами, базами и платформами 1С

17.03.2009    20906    0    Душелов    32    

[RClassMngr] ООП для V8. Добавляем наследование v.1.1

Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

Посвящается 1С++. Добавляем в V8 наследование свойств и методов объектов.

15.03.2009    18323    0    Robert    94    

Интеграция (обмен данными) между Microsoft Navision и 1С: Бухгалтерия 8.1

Внешние источники данных v8 БП1.6 Россия БУ Бесплатно (free)

Модуль «Интеграция» предназначен для переноса учетных данных из программы Microsoft Navision в 1С: Бухгалтерия 8.1.

06.03.2009    16715    0    NNNN    9    

[Генератор внешних событий] Внешняя компонента для 1С

Практика программирования Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента генерирует внешние события с заданным интервалом и с заданными значениями.

06.03.2009    38795    0    Душелов    81    

[Мониторинг изменения файлов] - ActiveX-компонента для 1С 8.х + ВК для 7.7

Практика программирования Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента следит за изменениями файлов в заданных каталогах, без таймеров и опросов файловой системы. Использует события Windows.

05.03.2009    24650    0    Душелов    53    

[Проверка правописания] - ActiveX-компонента для 1С

Практика программирования Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента проверяет правописание текста. Основана на технологии OpenOffice MySpell. Не требует установленного офиса. В комплекте словари для 5 языков, включая русский (с "ё").

09.02.2009    29100    0    Душелов    66    

[ExcelEditor] Чтение/запись файла Excel напрямую из 1С без Excel (формат 97/2003)

Загрузка и выгрузка в Excel Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Чтение и запись файла Excel напрямую из 1С Компонента читает и редактирует напрямую файл Excel без загрузки самого Excel (формат Microsoft Office 97/2003)

08.01.2009    46769    0    Душелов    92    

Защита информации при обмене данными между информационными базами "Управление производственным предприятием"

Защита и шифрование Разработка внешних компонент Обмен через XML v8 УПП1 Бесплатно (free)

Защита информации при обмене с распределенной базой данных. В крупной фирме имеется одна центральная информационная база 1С:Предприятие 8.1 "Управление производственным предприятием" и несколько периферийных баз, обмен данными происходит через файлы XML. После выявления многочисленных случаев несанкционированного доступа к конфиденциальной информации, а именно кассовым и банковским документам при обмене данными, руководством было решено защитить данные при обмене информацией между центральной базой и периферийными базами. Перемещение данных между базами происходит через файлы XML, по нескольким каналам связи FTP, HTTP, POP, SMTP, а также на сменных носителях (типа USB Flash Drive). В связи с этим решено использовать внешнюю компоненту для шифрования файлов XML и небольшой доработки конфигурации баз данных.

25.11.2008    14661    0    astracrypt    13    

"Захват окон" - ActiveX-компонента для 1С

Разработка внешних компонент Работа с интерфейсом v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Захватывает открытые окна и помещает их в 1С, так же получает скриншот выбранного окна. Хотите играть в пасьянс в 1С, смотреть кино или просматривать секретные документы ;) и не светить эти окна на рабочем столе, тогда эта компонента для Вас :)

20.11.2008    24029    0    Душелов    64    

"WebCam" - ActiveX-компонента для 1С

WEB Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента работает с устройствами, поддерживающими Twain32 драйвер (вебкамеры, фотоаппараты и др.)

28.09.2008    41765    0    Душелов    77    

COM-объект, реализующий метод Sleep

Разработка внешних компонент Универсальные функции v8 1cv8.cf Бесплатно (free)

COM-объект, реализующий метод Sleep. Может использоваться на сервере 1С, в win x86 и x64

13.08.2008    19659    0    ValeriVP    26    

1С: Предприятие 8, не работает прерывание по Ctrl+Break

Разработка внешних компонент v8 1cv8.cf Россия Бесплатно (free)

В 1С: Предприятии 8 для прерывания выполнения операций используется комбинация клавиш <Ctrl>+<Break>. На практике, на некоторых компьютерах эта комбинация не работатет, что вызывает некоторые неудобства (нет возможности прервать длительную операцию).

31.07.2008    19542    0    vovk_v    3    

"Аналоговые часы" - ActiveX-компонента для 1С

Разработка внешних компонент Работа с интерфейсом v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

"Аналоговые часы" - ActiveX-компонента для 1С 8.х Небольшое "украшательство" для форм 1С.

20.05.2008    21502    0    Душелов    23