|
C# и 1С ВнешнееСобытия | ☑ | ||
|---|---|---|---|---|
|
0
vashkovich
30.06.11
✎
14:22
|
Коллеги, вопрос в следующем.
Создано приложение на С# вызывающее 1С 8.2 как Com объект. Вызов следующий: ConnectString =@"....." Object[] arguments = { ConnectString }; v82comConnector = Type.GetTypeFromProgID("V82.COMConnector"); v82 = Activator.CreateInstance(v82comConnector); Connection = v82comConnector.InvokeMember("Connect", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static, null, v82, arguments); Type t = Connection.GetType(); connect1c = t.IsCOMObject ? true : false; Вызов проходит удачно. Необходимо вызвать срабатывание в 1С метода ВнешнееСобытие. Пробую сделать так: Object[] _arg = new object[3]; _arg[0] = "SocketServer"; _arg[1] = ""; _arg[2] = richTextBoxReceivedMsg.Text; Object res= _v82comConnector.InvokeMember("ExternalEvent", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static, null, v82, _arg); richTextBoxReceivedMsg.Text = ""; Получаю ошибку Unknown name Пробовал вызвать так _v82comConnector.AsyncEvent.ExternalEvent("SocketServer", "", richTextBoxReceivedMsg.Text); все равно не получилось. Посему вопрос. Как правильно вызвать выполнение метода ВнешнееСобытие? |
|||
|
1
Axel2009
30.06.11
✎
14:32
|
Внешнее событие есть у объекта формы тока.. а ты для комконнектора вызываешь. не?
|
|||
|
2
Axel2009
30.06.11
✎
14:33
|
(1)+ а для приложения нужно ОбработкаВнешнегоСобытия, аля ExternEventProcessing
|
|||
|
3
vashkovich
30.06.11
✎
14:41
|
ExternEventProcessing не подходит.
Если писать внешнюю компоненту, то там вызвать в 1С ОбработкуВнешнегоСобытия очень просто пишешь: string s1; string s2; string s3; s1 = (string)paParams.GetValue(0); s2 = (string)paParams.GetValue(1); s3 = (string)paParams.GetValue(2); V7Data.AsyncEvent.ExternalEvent(s1, s2, s3); И в 1С обрабатыващь как надо переданные параметры. А как через COM объект не понимаю :( |
|||
|
4
vashkovich
30.06.11
✎
15:06
|
ПРоблему конечно можно решить создать в модуле приложения функцию с именем ExternalEvent, но это не будет полноценное внешнее событие :(
|
|||
|
5
Axel2009
30.06.11
✎
15:37
|
еще раз. в 1с в модуле есть только один предопределенный модуль с внешним событием. ExternEventProcessing
ExternalEvent относится к ФОРМЕ какоголибо объекта. |
|||
|
6
Axel2009
30.06.11
✎
15:38
|
(5) неужели
bject res= _v82comConnector.InvokeMember("ExternEventProcessing", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static, null, v82, _arg); не подходит? у них одни и теже параметры. |
|||
|
7
vashkovich
30.06.11
✎
15:57
|
хм....
прописал в модуле обычного приложения ОбработкаВнешнегоСобытия запись в журнал иногда пишет иногда вылетает с ошибкой. буду разбираться дальше. Спасибо за помощь ! |
|||
|
8
Serginio1
30.06.11
✎
16:14
|
Изодного потока? А чено динамики не используешь?
|
|||
|
9
vashkovich
30.06.11
✎
16:17
|
главное понять работает или нет, а дальше .... :)
|
|||
|
10
Serginio1
30.06.11
✎
16:34
|
А зачем тебе внешнее событие если ты через ком вызываешь. В любом случае ты можешь дергать все методы которые есть модулях помеченные как внешнее соединение
|
|||
|
11
Scooter
30.06.11
✎
16:37
|
(10)+1
мне тоже непонятно |
|||
|
12
vashkovich
30.06.11
✎
17:15
|
Просто уже есть конфигурация в которой все прописано через внешнее событие.
|
|||
|
13
Serginio1
30.06.11
✎
17:21
|
Для того, что бу вызывать внешнее событие тебе нужен интерфйс IAsyncEvent. В свое время делал ВК которая возвращала Этот интерфейс, который уже передавался в СОМ объекты. Можешь поступить так же. Сделать функцию в 1С которая закружала бы ВК получала из неё IAsyncEvent и предавала его как результат
|
|||
|
14
Scooter
30.06.11
✎
17:30
|
(12)через СОМ вызывай метод обработки внешнего события
|
|||
|
15
vashkovich
30.06.11
✎
17:44
|
(14) так сейчас и поступаю :)
|
|||
|
16
Scooter
30.06.11
✎
17:45
|
(15)ну и не парься, нормально
или пиши ВК |
|||
|
17
vashkovich
30.06.11
✎
17:46
|
(13) мне кажеться, это как-то сложновато получиться. Проще прописать в модуле приложения
ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Экспорт и дергать из COMа. |
|||
|
18
Serginio1
30.06.11
✎
17:52
|
(17) Но они не будут вызываться в формах. Все от задачи. А глобальной функции тебе выше уже писали
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |