Имя: Пароль:
1C
1C 7.7
v7: Может ли 1С обрабатывать события COM-обьекта.
, , ,
0 sysadminlk
 
29.08.13
12:12
Может ли 1С обрабатывать события COM-обьекта.
Если да, тогда как? Есть примеры?

Есть COM объект Device
И описание его:
Обработчик событий Device::OnProcess
Обработчик событий OnProcess получает извещения о произошедших в устройстве события и позволяет выполнить обработку этих событий нужным образом.

Как узнать?
1 palpetrovich
 
29.08.13
12:18
если COM-обьект сделан по "технологии создания внешних компонент"(цы) - да, может!
2 Odavid
 
29.08.13
12:56
(1) это когда 1с научилась обрабатывать чужие события? Не умея толком (и количество обрабатываемых событий проще перечислить, чем необрабатыываемых) обрабатывать даже события своих "типообъекты"??
3 пипец
 
29.08.13
13:00
(2) интересно а как весовое оборудование работает ? :)))
4 Odavid
 
29.08.13
13:01
(3) наверное, все события в 1с обрабатываются?
5 пипец
 
29.08.13
13:02
(4) дык (1) и намекал, если его правильно понял
6 Odavid
 
29.08.13
13:02
(3) вы отличаете обработку событий от возврата результата (причем даже уверен - понятия не имеете, по какому интерфейсу и как это самое весовое оборудование работает) :)))
7 пипец
 
29.08.13
13:06
(6) нинада путать мягкое и соленое ;))), дойдет до пиэльпополам и микроконтроллеров с ассемблером
8 Odavid
 
29.08.13
13:23
(7)снова ("галантерейщик и кардинал) "микроконтроллеры и Дельфи! Это звучит!" ?? ))
Тогда не дойдет.
9 Nexux
 
29.08.13
13:23
ДобавитьОбработчик посмотрите
10 Nexux
 
29.08.13
13:26
(9)ой, а у вас v7, тогда низнаю(
11 acsent
 
29.08.13
13:31
в 8 может
12 ДенисЧ
 
29.08.13
13:33
Опять этот ламер умничает...
13 H A D G E H O G s
 
29.08.13
13:42
(12) Одавид? Он - может.
14 Odavid
 
29.08.13
13:51
(12) ну-ну, вот и настоящие ламеры пожаловали..
ну что, уже не отличаем обычную функцию от обработки события в любимой восьмерке? Хорошо, объясняю просто: обратную связь от этой так называемой "обработки события" - в COM-объекте получить, не?
18 ДенисЧ
 
29.08.13
13:59
(16) То есть ты начальник?
19 Odavid
 
29.08.13
14:58
(18) был. Пока глаза не намозолил вышестоящим. Они ж отдыхать пришли, а не работать.
А вот вы - сам признался, что начальник. Собственно, я и догадывался.
20 ДенисЧ
 
29.08.13
14:59
(19) Я? ПРизнался? Когда? Ссылку!
21 AaNnDdRrEeYy
 
29.08.13
15:09
(1) а если не сделан, то ничто не мешает сделать для него врапер по технологии внешних компонент.
22 Torquader
 
30.08.13
23:29
(21) А ничего, что 1С работает в одном потоке.
И, для многопоточных объектов с обработкой событий мы можем получить только взаимные блокировки.
К сведению - ОбработкаВнешнегоСобытия - не обрабатывает события от объектов и внешних компонент - она лишь читает из массива строки с данными, которые обработчики события записали в этот массив.
Конечно, это называли Асинхронной обработкой событий, но COM-объекты так работать с событиями не умеют.
Есть, конечно, хитрости, позволяющие вызвать процедуры из глобального модуля даже в момент исполнения какого-то другого участка кода, но это уже программирование сюрпризов.
23 Torquader
 
30.08.13
23:31
А автору быстрее поможет Windows Script Component и реализация обработки события в коде VbScript с выставлением флажка и получением его значения из 1С запросом методов созданного компонента-обёртки.
24 бомболюк
 
30.08.13
23:47
(22,23) это че за бред? все было так просто до этого и вдруг...
25 Охламон
 
30.08.13
23:55
8.2 Может
26 Охламон
 
30.08.13
23:58
В управлении продажей недуувижимости есть пример открытия ворда, последующей работы с вордом, и отлавливания одинесом события закрытия документа с автоматическим затягиванием файла в бд
27 Охламон
 
31.08.13
00:00
Все штатным кодом
28 бомболюк
 
31.08.13
00:01
(26) можнокусок кода поглядеть, у меня этой конфы нет, а очень интересно?
29 Охламон
 
31.08.13
00:04
(28) Не могу сейчас код дать. Там устанавливается событие в коде, потом это событие возвращается в одинес, когда пользователь закрывает окно ворда. Интересно. В Понедельник могу код дать.
30 бомболюк
 
31.08.13
00:07
(29) если не забудете, буду весьма признателен.
31 H A D G E H O G s
 
31.08.13
00:27
Не забудем

перем Word;
перем NewDoc;

Процедура КнопкаВыполнитьНажатие(Кнопка)
Попытка
    Word=Новый COMОбъект("Word.Application");
    Word.Visible=1;
    NewDoc=Word.Documents.Add();
    ДобавитьОбработчик Word.DocumentChange , ПриИзмененииДокумента;  //Создание, закрытие
    ДобавитьОбработчик Word.WindowActivate , ПриАктивацииОкна;  //Создание, закрытие
Исключение
    NewDoc=Неопределено;
КонецПопытки;
КонецПроцедуры

Процедура ПриИзмененииДокумента() Экспорт    
    Сообщить("Документ изменен");
КонецПроцедуры

Процедура ПриАктивацииОкна(Документ,Окно) Экспорт    
    Сообщить("Ворд активирован, активное окно: "+Окно.Caption);
КонецПроцедуры
32 H A D G E H O G s
 
31.08.13
00:28
33 бомболюк
 
31.08.13
00:49
большое спасибо. что то не ожидал что 1С внесет в платформу подключение своих процедур в качестве обработчиков событий COM по IConnectionPoint
34 H A D G E H O G s
 
31.08.13
00:50
(33) Я как то тоже не ожидал, что человек, знающий про IConnectionPoint, не сможет почитать ЖКК,
35 бомболюк
 
31.08.13
00:58
а у меня пока 8.1
36 Torquader
 
31.08.13
23:00
(34) Так это же восьмёрка - там и COM-соединение правильно работает.
А народ о семёрке беседует, в которой только DDE правильно работает - правда - через него тоже можно получать события.