Оповестить пользователя с сервера

1. asdfgcom 424 12.06.22 12:24 Сейчас в теме
Изломал голову.
Поднят HTTP-сервис.
Получаем входящий запрос в котором указан конкретный менеджер-пользователь. НаСервере
Если пользователь работает, надо его оповестить о входящем запросе. НаКлиенте, вероятно.
Как привязать сообщение к, например, начальной странице конкретного пользователя, чтобы всплывало и обрабатывало нажатие, вызвав мою обработку.

Чувствую, надо как-то через глобальную обработку оповещений.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. serg33rus 32 12.06.22 14:58 Сейчас в теме +1 $m
Самое простое использовать Систему взаимодействия. Она как раз очень четко умеет с сервера передать сообщение в диалог клиенту. У меня так работает АТС. При входящем звонке АТС формирует http запрос к 1С. А 1С ищет телефон и пользователю выбрасывает оповещение, что звонит такой-то. Реализуется - 10 строк кода.
user1619761; asdfgcom; +2 Ответить
18. asdfgcom 424 15.06.22 13:01 Сейчас в теме
Всем спасибо! Решил сделать через систему взаимодействия. Действительно удобно.

&НаСервере
Процедура ОтправитьНаСервере()
	ДанныеСообщения = ОбсужденияУНФ.НовыйДанныеСообщения();
	ДанныеСообщения.Объект = Ссылка;                        //Любой документ или справочник. Например, событие.
	ДанныеСообщения.Текст = ТекстСообщения;                	
	ДанныеСообщения.Дата = ТекущаяДатаСеанса();
	ДанныеСообщения.Автор = АссистентУправления.ПользовательАссистент();
	ДанныеСообщения.Получатель = текПользователь;           //Пользователь, которому предназначено сообщение
	ОбсужденияУНФ.СоздатьСообщение(ДанныеСообщения);
КонецПроцедуры
Показать
user1619761; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
22. frutty 123 04.10.23 09:28 Сейчас в теме
(1) используй систему взаимодеяствий
2. Fox-trot 163 12.06.22 12:39 Сейчас в теме
сделал себе такое. использовал регистр сведений
4. asdfgcom 424 12.06.22 12:47 Сейчас в теме
(2) т.е.
Процедура ПриНачалеРаботыСистемы()
    //...    

    ПодключитьОбработчикОповещения("глОбработкаОповещения");
    //...    

КонецПроцедуры // ПриНачалеРаботыСистемы()
Показать


Но ведь оповестить() работает на клиенте. И это правильно, т.к. мы не знаем иначе в какую форму оповестить.

Вот в этом и загвоздка.
9. laperuz 47 14.06.22 04:00 Сейчас в теме
(4)Замените ПодключитьОбработчикОповещения на ПодключитьОбработчикОжидания.

Сервис пишет запись в РС, в обработчике ожидания проверяете этот РС на наличие новых записей.
Ну либо да, система взаимодействия.
3. user822247 12.06.22 12:40 Сейчас в теме
РС = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
РС.Отбор.Пользователь.Установить(Стр.Пользователь);
РС.Отбор.Источник.Установить(ТекущийОбъект.Ссылка);

СтрРС = РС.Добавить();
СтрРС.Пользователь = Стр.Пользователь;
СтрРС.Источник = ТекущийОбъект.Ссылка;
СтрРС.ВремяСобытия = Дата;
СтрРС.СрокНапоминания = Дата;
СтрРС.Описание = "!!!!!!!!!!!";
РС.Записать();
5. asdfgcom 424 12.06.22 12:53 Сейчас в теме
(3) Допустим, появилась новая запись в регистре. Как инициировать и обработать событие на клиенте при появлении этой записи? Получается, есть регламентное задание, которое 1 раз в 5-10 минут опрашивает регистр и выводит нужному пользователю сообщение?
7. user822247 12.06.22 15:52 Сейчас в теме
(5)
Как инициировать и обработать событие на клиенте при появлении этой


В момент когда выполняется код который добавляет запись в регистре нужно добавить запись и в регистр напоминания пользователю. В этом регистре можно и привязать объект который можно будет открыть в появившемся оповещении.
6. serg33rus 32 12.06.22 14:58 Сейчас в теме +1 $m
Самое простое использовать Систему взаимодействия. Она как раз очень четко умеет с сервера передать сообщение в диалог клиенту. У меня так работает АТС. При входящем звонке АТС формирует http запрос к 1С. А 1С ищет телефон и пользователю выбрасывает оповещение, что звонит такой-то. Реализуется - 10 строк кода.
user1619761; asdfgcom; +2 Ответить
15. asdfgcom 424 14.06.22 18:51 Сейчас в теме
(6)Получится, но цепочка довольно сложная. Я получаю входящий запрос, я отправляю исходящий запрос на сервер взаимодействия, чтобы он вернулся ко мне для одного из пользователей..
17. serg33rus 32 14.06.22 21:27 Сейчас в теме
(15) Не совсем так. Сервер получает запрос. И через Систему взаимодействия формирует сообщение для нужного пользователя. Т.е. ВСЕ делается на сервере. Пользователь получает сообщение штатными средствами платформы (если подключена СВ). Т.е. цепочки вообще нет. Отправлять что-то на сервер СВ не надо. Надо сбить сообщение и выполнить команду Отправить в МенеджерСистемыВзаимодействия. Подчеркиваю, все это на сервере, т.е. там же где и крутится http-сервис.
8. user5300 1063 13.06.22 08:26 Сейчас в теме
11. comptr 35 14.06.22 09:44 Сейчас в теме
(8) веб-клиент сразу пролетает с такими уведомлениями. Компьютеру под управлением Linux придёт уведомление? Мобильный клиент?
10. sivin-alexey 511 14.06.22 05:02 Сейчас в теме
Centrifugo – сервер для обмена сообщениями в режиме реального времени: https://infostart.ru/public/1228139/
12. v25i85 3 14.06.22 09:54 Сейчас в теме
1. Создать Параметр сеанса, булево.
2. Создать HTTP-сервис, при необходимости в нём изменяем Параметр сеанса в Истина.
3. Создать внеш обработку с необходимым интерфейсом клиента для обратной связи.
4. Создать глобальный обработчик оповещения, проверять Параметр сеанса на Истина, при этом вызывать открытие интерфейса внешней обработки. При открытии Параметр сеанса возвращаем в Ложь.
13. asdfgcom 424 14.06.22 18:48 Сейчас в теме
Не успел проверить, закрутился.
14. asdfgcom 424 14.06.22 18:49 Сейчас в теме
16. asdfgcom 424 14.06.22 18:52 Сейчас в теме
(12) Как вариант, тоже попробую
18. asdfgcom 424 15.06.22 13:01 Сейчас в теме
Всем спасибо! Решил сделать через систему взаимодействия. Действительно удобно.

&НаСервере
Процедура ОтправитьНаСервере()
	ДанныеСообщения = ОбсужденияУНФ.НовыйДанныеСообщения();
	ДанныеСообщения.Объект = Ссылка;                        //Любой документ или справочник. Например, событие.
	ДанныеСообщения.Текст = ТекстСообщения;                	
	ДанныеСообщения.Дата = ТекущаяДатаСеанса();
	ДанныеСообщения.Автор = АссистентУправления.ПользовательАссистент();
	ДанныеСообщения.Получатель = текПользователь;           //Пользователь, которому предназначено сообщение
	ОбсужденияУНФ.СоздатьСообщение(ДанныеСообщения);
КонецПроцедуры
Показать
user1619761; +1 Ответить
19. v25i85 3 29.06.22 11:50 Сейчас в теме
(18) а обработчика нет для обратной связи?
20. asdfgcom 424 29.06.22 12:15 Сейчас в теме
(19) Не понял контекст вопроса.
21. v25i85 3 05.07.22 12:00 Сейчас в теме
(20)
>> "чтобы всплывало и обрабатывало нажатие, вызвав мою обработку."

а как будет обрабатываться обратная связь: программно или как? обработка как будет вызвана?
23. user1475907 09.01.24 04:39 Сейчас в теме
Для толстого Клиента можно так. Но это очень плохо.

Делайте Общий Модуль Сервер
Можете даже так туда написать

&НаКлиенте
Процедура Опов(Им,Па,Ис) Экспорт 
	//Сообщить("001");
	Оповестить(Им,Па,Ис);
КонецПроцедуры


/////**************************************
/// Записываем Документ или можете вставить регистр сведений или регистр накопления (при записи)

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	// Вставить содержимое обработчика.     
	Общ.Опов("11","22","33");
КонецПроцедуры  



////*****************************************


Потом к примеру в Журнале Документов Ловите оповещение
//*************************
&НаКлиенте
Перем _ИмяСобытия;   

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	//Сообщить(ИмяСобытия + " " + Параметр + " "+ Источник);  
	_ИмяСобытия = ИмяСобытия;
	ПодключитьОбработчикОжидания("_Показать", 1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура _Показать()
	Сообщить("00000 "+_ИмяСобытия);      
КонецПроцедуры
Показать
Прикрепленные файлы:
skyadmin; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот