Имя: Пароль:
1C
1С v8
Внешнее событие компоненты на сервере
0 АЛьФ
 
03.05.24
11:38
Нужно из внешней компоненты дернуть сервер "восьмерки". Известно, что внешние события работают только на клиенте.
Как быть? Нужен простой пример кода.
1 Garykom
 
03.05.24
11:39
Периодическая проверка по таймауту
Или публикация http-сервиса и дергание его из ВК
2 АгентБезопасной Нацио
 
03.05.24
11:41
http тут (имхо) будет самым простым решением.
3 Garykom
 
03.05.24
11:43
С точки зрения серверных процессов любое длительное ожидание события от ВК - зло
Если возможно надо переходить на сервисы
Если невозможно (время реакции) то длительное фоновое с циклом, обязательно предусмотреть завершение и возобновление
4 АЛьФ
 
03.05.24
11:43
2(1)(2) Я такие советы в поисковике встречал. Поэтому дописал: "нужен простой пример кода".
5 АЛьФ
 
03.05.24
11:45
2(3) Это скорее не длительно ожидание, а постоянная готовность принять событие, например, от датчика какого-то.
6 H A D G E H O G s
 
03.05.24
11:47
(0) Запускай компоненту на сервере, в ней реализуй метод Инициировать(ОбщийМодуль), сохраняй ОбщийМодуль в переменной типа OleVariant, в отдельном потоке дергай метод ОбщегоМодуля
7 H A D G E H O G s
 
03.05.24
11:48
Не забывай про CoInitialize
8 АЛьФ
 
03.05.24
11:49
2(6) О! Это мысль. Спасибо. А примера кода нет?
9 H A D G E H O G s
 
03.05.24
11:55
(8) Нет. Это просто мысль. Я не пробовал запускать процедуру ОМ в отдельном потоке.
10 H A D G E H O G s
 
03.05.24
11:55
Или пробовал, но это было так давно, что я забыл.
11 Garykom
 
03.05.24
11:58
(5) >постоянная готовность принять событие
это цикл
простой и банальный цикл проверки "событие есть?"
12 АЛьФ
 
03.05.24
12:04
2(11) Да, цикл в момент простоя. Может я неверно выразился. Мне нужно, чтобы этот цикл был в компоненте. а 1С обрабатывала уже готовое событие. В принципе, направление в (6) мне нравится, буду копать в эту сторону.

2(9) Жаль. Буду копать сам.
13 H A D G E H O G s
 
03.05.24
12:10
Если не прокатит с ОМ - тогда можно попробовать с

ДобавитьОбработчик() на стороне 1С

и реализацию интерфейса IConnectionPointContainer на стороне компоненты

https://www.rsdn.org/article/mfc/connpts.xml

Опять таки, я это пробовал давно, это работало, но я уже ничего не помню по ньюансам.
14 Garykom
 
03.05.24
12:13
(12) >нужно, чтобы этот цикл был в компоненте. а 1С обрабатывала уже готовое событие
штатно такого кроме http или веб-сервисов нет
ВнешнееСобытие от ВК &НаСервере

исключая разные хаки
15 Garykom
 
03.05.24
12:15
(13) это костыль-хак
примерно как клиента 1С запустить на сервере (упрощенного без лишних обработчиков и форм/интерфейса)
и в нем ВК и ловить внешнее событие, дергая уже из клиента сервер 1С
16 H A D G E H O G s
 
03.05.24
12:16
(15) Егор, не забывайте, что мы с вами не общаемся и вы пишите в пустоту.
17 Garykom
 
03.05.24
12:19
(16) Пустоту, в которую некто отвечает? :)
18 Garykom
 
03.05.24
13:11
С точки зрения решения задачи ТС, было бы идеально (ну почти) из ВК (или что там внешнее) напрямую дергать wsap24.dll (wsap22.dll или wsisapi.dll или аналог для linux)
Без веб-сервера
А уже она дергает сервер 1С
19 АгентБезопасной Нацио
 
03.05.24
12:28
(4) так для http и не будет никакого кода дополнительного. вообще. Будет сразу вызов процедуры, которую ты напишешь...
20 АгентБезопасной Нацио
 
03.05.24
12:30
(18) да, про необходимость веб-сервера я забыл :-(
(0) еще нужен веб-сервер, апач или ИИС.
21 int32i
 
03.05.24
14:04
(0) Законно это невозможно никак.
Сервер слушает только то, что ему разрешено слушать - Клиентов и Веб.