Имя: Пароль:
1C
1С v8
SendMessage в 1С
,
0 ZanderZ
 
07.11.12
09:52
Всем привет.
Есть задача передать в запущенное приложение 1С некие параметры и обработать их сразу, а не через обработчик ожидания и т.п. Так вот 1С не умеет перехватывать сообщения, пришлось писать компоненту которая слушает и фильтрует broadcast сообщения. Так вот может можно как-то по другому передавать параметры ?
1 zulu_mix
 
07.11.12
09:54
Форма (Form)
ВнешнееСобытие (ExternalEvent)
Синтаксис:

ВнешнееСобытие(<Источник>, <Событие>, <Данные>)
Параметры:

<Источник>

Тип: Строка.
Источник внешнего события.
<Событие>

Тип: Строка.
Наименование события.
<Данные>

Тип: Строка.
Данные для события.
Описание:

Возникает при посылке внешним приложением сообщения, сформированного в специальном формате. Внешнее событие сначала обрабатывается всеми открытыми формами, имеющими обработчик этого события, а затем может быть обработано в процедуре модуля обычного приложения с именем ОбработкаВнешнегоСобытия.
2 ZanderZ
 
07.11.12
09:57
(1) и ?
3 orefkov
 
07.11.12
10:17
Обрабатывать сразу - ныне не модно.
В тренде асинхронная обработка.
4 ZanderZ
 
07.11.12
10:19
(3) в смысле?
5 orefkov
 
07.11.12
10:19
Мне просто интересно, как ты из своей ВК событие отдаешь наверх в 1С.
6 ZanderZ
 
07.11.12
10:25
(5) ExternalEvent
7 Serginio1
 
07.11.12
10:39
Ну можно еще через ДобавитьОбработчик
можно через вызов процедуры или метода модуля помеченного как внешнее соединение из ВК через свойство AppDispatch, хотя может и не помеченного, главное что бы была экспортной
8 orefkov
 
07.11.12
10:42
(6)
ExternalEvent - как раз асинхронно работает, вызывает ВнешнееСобытие в момент простоя программы.
А так да, что-то отслеживать 1Ской можно либо опросом в ОбработкеОжидания, либо ВК делать.
9 Serginio1
 
07.11.12
10:44
Но вот как будет вызываться из разных потоков. Так или иначе все равно все сведется к вызову из потока приложения.
10 Serginio1
 
07.11.12
10:47
+7 единственно не ассинхронный вызов можно только через AppDispatch только не забудь проинициализировать поток coinitializeex и coUninitializeex
11 Serginio1
 
07.11.12
11:04
Вообще у меня был код
CoInitialize(nil);
 appdisp:=Pconn.Appdispatch;
 idispatch(appdisp)._AddRef;
 appdisp.СтрокаИзСоккета:=s;
CoUnInitialize();

Даже методы вызывал. Но вот как с синхронностью не знаю
12 ZanderZ
 
07.11.12
11:17
(7) что-то не понял, а как сообщение то передать из другого потока ?
(8) да мне в принципе и асинхронно подойдет.
13 Serginio1
 
07.11.12
11:23
(12) смотри 11.
Ну а если тебе асинхроно подходит, то в чем проблема с ExternalEvent? Обратно данные можешь получать через метод из 1С.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.