Имя: Пароль:
1C
 
1C + WebSocket - не запускается из общего модуля...
0 AnBlast
 
10.04.24
10:10
Есть обработка, которая запускается вручную и держит обмен по  WebSocket. Все работает...

Надоело запускать обработку руками (перезапускать, следить...) и пытаюсь переделать это дело на регламентное задание - и нифига! не поднимается коннект.
Обработка работает на локальном пользовательском компе, а регламент жеж на сервере. Для теста открыли весь интернет на сервере - не работает. Запускаю руками - ок, а из регламентом из модуля обработки (или общего модуля) - не работает.

Скорее всего дело именно в контексте... но может я жутко что-то не догоняю в архитектуре этого дела.

Подскажите, плиз, куда копать...
Заранее Спасибо!
1 AnBlast
 
10.04.24
10:11
вебсокет - нативная компонента в макете.
2 p-soft
 
10.04.24
10:17
самое простое - зайти в список регламентных заданий, найти и открыть карточку нужного и проставить там пользователя, под которым все работало при ручном запуске.
3 AnBlast
 
10.04.24
10:36
а нет еще регламентного задания... я просто запускаю все то же самое, только код перенесен из модуля формы в модуль обработки или общий модуль. И не работает
4 p-soft
 
10.04.24
10:39
(3) а, понятно. не регится компонента на стороне сервера. регится она под правами, под которыми служба запускается - надо копать в эту сторону
5 AnBlast
 
10.04.24
10:41
а нативная копмонента (она в макете обработки) должна региться? вроде ж как в том и приемущество такой реализации компоненты
6 steep1
 
10.04.24
11:01
(0) где-то в обработке используешь пути неотносительные
7 AnBlast
 
10.04.24
11:06
(6) а нету там никаких путей... просто поднимается вебсокет из нативной компоненты.
на локальном компе (я админ локальный) - все ок при запуске с формы, но не ок при запуске из модуля (конфа на сервере - на другом физическом компе)
на сервере, где живет конфа - с формы запускается если открыть путь через фаервол, а при запуске из модуля - ни при каких раскладах не запускается
8 p-soft
 
10.04.24
11:38
(7) там все равно идет вызов метода, загружающего компоненту, на этом этапе бывают затыки с разных сторон. отладчик и смотреть что именно не выполняется.
вполне может быть проблема взаимодействия компоненты с ОС. винда, линух?
9 AnBlast
 
10.04.24
11:44
(8) та в том то и вопрос, что нет ошибок. и на "ту сторону" не приходит ничего от меня. а ошибок нет...
10 AnBlast
 
10.04.24
11:45
и не уходит с меня... я на фаерволе не вижу никакого пакета
11 p-soft
 
10.04.24
11:48
(9) я пока про взаимодействие 1с и операционной системы. загрузка компоненты без ошибок происходит? просто не отрабатывает инициализация сокета? надо логгирование в компонение включить/сделать
12 arsik
 
10.04.24
11:59
(10) Не пробовал на сервере 1С запускать клиента и попробовать от клиента но с сервера?
13 PloAl
 
10.04.24
12:06
(0) Скорее всего проблема во внешнем событии, на сервере 1с не доступно "ВнешнееСобытие()".
Обычно для сервера используют синхронный метод ВК в цикле.
Т.е. серверный код без событий, постоянно висит на строке вида:
Пока ВК.ПолучитьВнешнееСобытие() Цикл
14 AnBlast
 
10.04.24
12:07
(11) компонента чужая... доделать там что-то - пожалуй выше моей квалификации.
(12) пробовал - если открыть фаервол, то все запускается. ну т.е. если запускать с формы, то все ок.

но в обоих случаях я на выходе вижу успешный запуск (результат одинаковый). Но, судя по всему, не проходит пакет на поднятие сокета на ту сторону если я запускаю это дело из модуля (т.е. как я понимаю с сервера), а не с формы
15 arsik
 
10.04.24
12:18
(14) Ну что тут сказать - жди 27 платформу.
Видимо для инициализации нужен клиентский контекст, иначе как она будет тебе событие создавать при получении.
То что в ошибку не падает - это лишь реализация компоненты такая.
16 AnBlast
 
10.04.24
12:49
(15) ну такое )) у меня 8.3.10 и прыгать с нее на 27ю - тот еще квест
17 arsik
 
10.04.24
13:01
(16) Там прям много и часто в(из) вебсокета данные льются?
Если прям несильно нагружено, можно наверно через http сервис реализовать.
Посредника между http и websocket на много чем можно реализовать (php, go, python)
18 AnBlast
 
10.04.24
14:33
(17) не то, что б много, но неожиданно.
мне присылают по вебсокету всякие события, которые надо быстро обработать
19 AnBlast
 
11.04.24
14:16
Итерация №2
...
судя по всему у меня код должен выполняться на клиенте. На сервере и в серверных модулях оно не работает - это 100%

надо что б клиентский код выполнялся при запуске системы. Запхал его в МодульОбычногоПриложения - не работает.

Мне, походу, не хватает квалификации - посему прошу помощи/совета. Откуда правильно запускать и в каком режиме "клиентский" код?
20 arsik
 
11.04.24
14:38
Для начала можно так попробовать
ПодключитьОбработчикОжидания("ЗапуститьКакойНиБудьКлиентскийМетод",1,Истина);
21 AnBlast
 
11.04.24
14:45
обработчик ожидания мне не очень надо... мне надо поднять вебсокет выполнив определенный код (он работает с кнопки обработки и не работает никак иначе)...

но попробовал. воткнул обработчик ожидания в МодульОбычногоПриложения - не работает. Все отрабатывает, но веб сокет не конектится
...
22 arsik
 
11.04.24
14:50
Ну наверно перед этим нужно проинициировать компоненту. И возможно этой компоненте нужна форма.
23 AnBlast
 
11.04.24
14:52
(22) ну я делаю ровно то же самое, что и с кнопки на форме.
а "возможно этой компоненте нужна форма" - я этого вообще не понимаю.
24 p-soft
 
11.04.24
15:25
(19) делайте как раньше в 77: заходим под сеансом на сервак, запускаем руками или автоматом обработку-регламент, оно там висит и кушать не просит. единственно - одну лицензию тратит, но это мелочи
25 AnBlast
 
11.04.24
15:52
(24) я уже так согласен... но что делать если надо перезапустить ночью после "падения коннекта"?
26 p-soft
 
11.04.24
15:58
(25) коннект с сервисом обрабатывайте тем же регламентом. запуск сеанса 1с.. ну как угодно)
27 arsik
 
11.04.24
16:32
Клюшечный вариант - буэээ.
Мой выбор прокладка-сервис.
28 lEvGl
 
11.04.24
17:49
(0) что за компонента, описание к ней есть?
29 lEvGl
 
11.04.24
18:06
общий план действий такой
достаем компоненту из макета, загружаем, если нет, то устанавливаем, то есть через попытку
Если Не Загрузить() Тогда
Установить()
КонецЕсли;

Загрузить();
Сокет = Новый ("ЕеИмя");

потом в соответствии с описанием Сокет.Инициализировать() там тратата
на каждое действие в серверном контексте выполнения можно лог писать, что успешно, что нет, чтобы было понятно что там происходит. Если все отрабатывает, а коннекта к серверу по сокету нет, значит проблема на уровне взаимодействия 1с и ОС или самой ОС в плане сети/безопасности/прав/фаерволов и тд
а. че ее доставать из макета, метод загрузки/установки принимает имя макета как путь
30 lEvGl
 
11.04.24
18:21
ну и потом, можно так то и свой сокет сделать с блекджеком. Я так понимаю эта компонента Сокет сервер, раз в нее данные льет клиент. В нете есть готовые сокет сервера для плюсов, шарпа, что ближе. Или даже дллы есть, мелкомягкие с tcp и udp. Тогда можно будет предметно думать как обрабатывать полученные данные. А сейчас даже ведь неизвестно, что она делает? Собственно тут вобще вопрос ее взаимодействи с 1С. Она по технологии ВК для 1С если, то будет выкидывать во внешнее событие, оно только на клиенте есть. Как бы вопросов много очень, хотя бы что она делает после получения данных от клиента? Пишет в бд 1ц? Каким образом, если обработкой внешнего события, то это клиент по сути делает, а не ВК, и тогда она вполне вероятно имеет какую то проверку на контекст выполнения кода, которым она цепляется в память в рамках 1Сного процесса. Если клиентский то ок, а если серверный, то болт, работать не будет, т к внешнего события нет, то и до свидания. А то может и напрямую в скл заливает?
31 arsik
 
11.04.24
19:36
Да не живет вебсокет в серверном пространстве. Вебсокет - это не только пишущий интерфейс но и слушающий. Как он на сервере слушать будет? После серверного вызова все очистится. Ну или в каждом серверном вызове создавать сокет. Но это уже не вебсокет получается.
32 lEvGl
 
11.04.24
19:47
точна, еще и это, поэтому свой вин сервис, будет висеть и слушать
или как правильно сказали, веб сервис то же самое ухо

у нас чувак, ушел, сделал загрузку из базы сторонней софтины при помощи формы и активиксом на ней, на клиенте само собой. если пользователь не зашел, то и загрузки нет. то ли разработчик софтины не дал нормальной компоненты, то ли чувак натупил
33 ДедМорроз
 
11.04.24
19:51
Как вариант,публиковать web-сервис базы 1с,а потом делать посредника,который при получении пакета в web-socket шлёт его в web-сервис через http.
34 spiller26
 
11.04.24
21:48
Мы пробовали web-socket + 1С, только вот работал он у нас только на клиенте, на сервере так и не захотел работать.
35 oleg_km
 
11.04.24
22:11
(31) В бесконечном фоновом задании. У меня так работали TCP, UDP и HTTP серверы, пока 1С не придумало HTTP-сервисы. Сейчас все посносил нафик. Если нужен TCP сервер, то реализую его на ASP.NET Core и отдаю данные в 1С по HTTP
36 MaximSh
 
12.04.24
08:14
(0) Агент сервера 1С:Предприятия  под локальным пользователем  USR1CV8 запускается?
37 yopQua
 
12.04.24
08:32
В бесконечном фоновом задании

ну это треш
38 AnBlast
 
15.04.24
12:19
(36) да
39 yopQua
 
15.04.24
12:35
(38) в качестве эксперимента можно попробовать этот трешевый вариант, чтобы просто понимание пришло, что на сервере происходит