|
Не срабатывает внешнее событие на форме из внешней компоненты | ☑ | ||
---|---|---|---|---|
0
rosbes
13.12.16
✎
16:57
|
Создаю внешнюю компоненту Native. Свойства компоненты видно, методы и функции вызываются, параметры передаются а внешнее событие при m_iConnect->ExternalEvent не отрабатывает.
|
|||
1
H A D G E H O G s
13.12.16
✎
16:58
|
c Native это не работает
|
|||
2
Волшебник
модератор
13.12.16
✎
16:58
|
Обратитесь к разработчику внешней компоненты. ;)
|
|||
3
H A D G E H O G s
13.12.16
✎
17:23
|
Для native можно юзать интерфейс
IConnectionPointContainer = interface ['{B196B284-BAB4-101A-B69C-00AA00341D07}'] А в 1С - ДобавитьОбработчик() Я делал для Дельфи, как в этом вашем плюснутом и-фейсе - не знаю. Да и я потом забил на native и сделал все на православном COM |
|||
4
Fragster
гуру
13.12.16
✎
17:28
|
(1) а как 1с сканер штрихкодов работает?
|
|||
5
Кирпич
13.12.16
✎
19:55
|
(1) у меня всегда работало
|
|||
6
Serginio1
14.12.16
✎
00:00
|
По умолчанию очередь сообщений равна 1. Если сообщение не обработано, а в очередь ставится событие, то оно сглатывается 1С.
|
|||
7
Serginio1
14.12.16
✎
00:10
|
m_iConnect->SetEventBufferDepth(lDepth);
|
|||
8
Serginio1
14.12.16
✎
00:11
|
Ну и посмотри в отладчике, что возвращает
m_iConnect->ExternalEvent |
|||
9
Serginio1
14.12.16
✎
00:25
|
Ну и не забыть на форме подписаться на событие
|
|||
10
rosbes
14.12.16
✎
11:04
|
SetEventBufferDepth(40000)
m_iConnect->ExternalEvent(...) возвращает true На форме стоит &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) ... Внешнее событие не срабатывает |
|||
11
Fragster
гуру
14.12.16
✎
11:12
|
(10) а процедура выбрана в свойствах формы как обработчик события?
|
|||
12
Кирпич
14.12.16
✎
11:14
|
(11) вотьимана
|
|||
13
rosbes
14.12.16
✎
11:22
|
(11) Да
|
|||
14
Кирпич
14.12.16
✎
11:24
|
(13) врешь небось
|
|||
15
Кирпич
14.12.16
✎
11:25
|
(13) вот такое точно есть?
http://pastenow.ru/5c21f88ba6dc0b154cf384f3b0d27a41 |
|||
16
Serginio1
14.12.16
✎
11:32
|
(10) Это не подписка на событие. Это просто метод.
Подписаться на событие ты можешь через выбор в форме ВнешнееСобытие Либо ДобавитьОбработчик Форма.ВнешнееСобытие, Обработка.ВнешнееСобытие; |
|||
17
Кирпич
14.12.16
✎
11:38
|
Так то, по умному, нужно код смотреть. Второй день ждать прихода телепата как то не по научному.
Может у тебя там объект ВК - локальная переменная, которая сдыхает прежде чем прилетит событие. |
|||
18
Serginio1
14.12.16
✎
11:39
|
Вернее
ДобавитьОбработчик ЭтаФорма.ВнешнееСобытие, ВнешнееСобытие; |
|||
19
Serginio1
14.12.16
✎
11:39
|
(17) Суть поставить в очередь 3 строки.
|
|||
20
Кирпич
14.12.16
✎
11:42
|
(0) Код будет? Или будем неделю гадать в каком месте ты начудил? :)
|
|||
21
Serginio1
14.12.16
✎
11:44
|
(0) Для достоверности Можешь взять любую ВК и проверить на своей форме
|
|||
22
rosbes
14.12.16
✎
11:45
|
(15) Абсолютно точно
|
|||
23
Кирпич
14.12.16
✎
11:49
|
(22) объект ВК глобальная переменная?
|
|||
24
Кирпич
14.12.16
✎
11:53
|
чота автор на американских горках чтоли катается. отвечает раз в 10 минут. вот короче пример как в 1с это делается.
тут типа ВК запускает по команде Старт() поток, который генерит события. По команде Стоп() перестает. &НаКлиенте Перем ОбъектВК; &НаКлиенте Процедура Старт(Команда) ИмяМакета = "ОбщийМакет.ТестВК"; УстановитьВнешнююКомпоненту(ИмяМакета); Если НЕ ПодключитьВнешнююКомпоненту(ИмяМакета,"DemoLib",ТипВнешнейКомпоненты.Native) Тогда УстановитьВнешнююКомпоненту(ИмяМакета); ПодключитьВнешнююКомпоненту(ИмяМакета,"DemoLib",ТипВнешнейКомпоненты.Native) КонецЕсли; ОбъектВК = Новый("AddIn.DemoLib.Пример"); ОбъектВК.Старт(); КонецПроцедуры &НаКлиенте Процедура Стоп(Команда) ОбъектВК.Стоп(); ОбъектВК = Неопределено; КонецПроцедуры &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) Состояние(Данные); КонецПроцедуры |
|||
25
rosbes
14.12.16
✎
12:01
|
(24) Спасибо! Была не глобальная.
Я наверно где то что то упустил когда читал. Это вообще где то написано в руководстве? |
|||
26
Кирпич
14.12.16
✎
12:05
|
(25) да нет. это вроде очевидно и само собой разумеется.
|
|||
27
rosbes
14.12.16
✎
12:08
|
(26) А в обработчике внешнего события есть гдето ссылка на глобальную переменную? С чего это должно быть очевидно?
|
|||
28
Кирпич
14.12.16
✎
12:11
|
(27) я не знаю как оно там внутри устроено. знаю, что чтобы от сканера были события, должен существовать сам сканер(его переменная)
|
|||
29
rosbes
14.12.16
✎
12:13
|
Всем спасибо!
|
|||
30
Serginio1
14.12.16
✎
12:38
|
Вообще то, при обнулении ссылки на ВК она дестроитсяю
Значит ты не обрабатываешь. Типа такого long DestroyObject(IComponentBase** pIntf) { if (!*pIntf) return -1; BaseNetObjectToNative* temp = (BaseNetObjectToNative*)* pIntf; delete temp; // return -1; *pIntf = 0; return 0; } |
|||
31
Serginio1
14.12.16
✎
12:39
|
Да и вообще DLL должна была выгрузиться
|
|||
32
Кирпич
14.12.16
✎
12:50
|
(31) ага. если она не на .NET написана :)
|
|||
33
Кирпич
14.12.16
✎
12:55
|
(30) а это тут вообще не причем
|
|||
34
Serginio1
14.12.16
✎
13:16
|
(32) И на .Net выгружает. Просто у меня были проблемы с повторной инициализацией домена и прочего. Поэтому, для того что бы не выгружалась, я второй раз её загружаю.
(33) Причем. Должна вызвать исключение или упасть, а по уму еслизадесроена то и вызывать ничего не должна. А он утверждает в 10, что работает. |
|||
35
Кирпич
14.12.16
✎
13:25
|
(34) "И на .Net выгружает." чота не видел такого. есть пример ВК на .NET которая выгружается?
|
|||
36
Кирпич
14.12.16
✎
13:27
|
(34) "Должна вызвать исключение или упасть". фиг знает чо он там понапрограммировал. молодой, горячий...
|
|||
37
Serginio1
14.12.16
✎
13:27
|
(32) Да и как бы Native ВК на .Net не бывает. Бывает нативная ВК использующая управляемые библиотеки.
Хотя в принципе можно и сварганить на .Net используя собственную VMT. http://rsdn.org/forum/dotnet/6614203.1 (35) Бери мою ВК. Я специально делаю Врап.ЗагрузитьDLL(ИмяФайла); |
|||
38
Serginio1
14.12.16
✎
13:30
|
(35) Еще. http://catalog.mista.ru/public/300091/
Но еще раз это нативная ВК внутри использующая .Net |
|||
39
Cool_Profi
14.12.16
✎
13:30
|
(31) 1с внешние компоненты не выгружает
|
|||
40
Кирпич
14.12.16
✎
13:30
|
(37) да нафиг мне этот весь геморрой. у меня и без .NET всё работает. был бы я школьник, который ничего кроме шарпа не знает, другое дело. а так нафиг.
|
|||
41
Кирпич
14.12.16
✎
13:32
|
(39) NativeAPI вроде выгружала
|
|||
42
Serginio1
14.12.16
✎
14:04
|
(37) А кто тебя заставляет? Ты просил ВК в 35, я тебе дал.
К сожалению, 1С ки и Шарпа не знают кстати, а ты школьники. |
|||
43
Кирпич
14.12.16
✎
14:20
|
(42) "А кто тебя заставляет?" ну я просто думал, что там будет пара строчек и dll будет выгружаться. А там какие то танцы с бубнами.
|
|||
44
Serginio1
14.12.16
✎
14:31
|
(43) Вот странный ты. Пишешь, что не школьник, а в твоем понимании Native ВК на .Net это пара строчек.
|
|||
45
HardBall
14.12.16
✎
18:42
|
Народ, поделитесь пустым шаблоном Native ВК на .NET. Который бы отрабатывал при ПодключитьВнешнююКомпоненту(ИмяВК);
net = Новый(ИмяВК); |
|||
46
Serginio1
14.12.16
✎
19:48
|
||||
47
Serginio1
14.12.16
✎
19:50
|
Если ПодключитьВнешнююКомпоненту(ИмяВК); то это COM
Смотри Быстрое создание Внешних Компонент на C#. исходники здесь http://ru.stackoverflow.com/questions/527763/%d0%9a%d0%b0%d0%ba-%d0%b2%d1%8b%d0%b7%d0%b2%d0%b0%d1%82%d1%8c-%d0%bc%d0%b5%d1%82%d0%be%d0%b4-%d0%b8%d0%b7-c-%d0%b2-1%d0%a1/527802#527802 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |