Изломал голову.
Поднят HTTP-сервис.
Получаем входящий запрос в котором указан конкретный менеджер-пользователь. НаСервере
Если пользователь работает, надо его оповестить о входящем запросе. НаКлиенте, вероятно.
Как привязать сообщение к, например, начальной странице конкретного пользователя, чтобы всплывало и обрабатывало нажатие, вызвав мою обработку.
Чувствую, надо как-то через глобальную обработку оповещений.
Поднят HTTP-сервис.
Получаем входящий запрос в котором указан конкретный менеджер-пользователь. НаСервере
Если пользователь работает, надо его оповестить о входящем запросе. НаКлиенте, вероятно.
Как привязать сообщение к, например, начальной странице конкретного пользователя, чтобы всплывало и обрабатывало нажатие, вызвав мою обработку.
Чувствую, надо как-то через глобальную обработку оповещений.
По теме из базы знаний
Найденные решения
Самое простое использовать Систему взаимодействия. Она как раз очень четко умеет с сервера передать сообщение в диалог клиенту. У меня так работает АТС. При входящем звонке АТС формирует http запрос к 1С. А 1С ищет телефон и пользователю выбрасывает оповещение, что звонит такой-то. Реализуется - 10 строк кода.
Всем спасибо! Решил сделать через систему взаимодействия. Действительно удобно.
&НаСервере
Процедура ОтправитьНаСервере()
ДанныеСообщения = ОбсужденияУНФ.НовыйДанныеСообщения();
ДанныеСообщения.Объект = Ссылка; //Любой документ или справочник. Например, событие.
ДанныеСообщения.Текст = ТекстСообщения;
ДанныеСообщения.Дата = ТекущаяДатаСеанса();
ДанныеСообщения.Автор = АссистентУправления.ПользовательАссистент();
ДанныеСообщения.Получатель = текПользователь; //Пользователь, которому предназначено сообщение
ОбсужденияУНФ.СоздатьСообщение(ДанныеСообщения);
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) т.е.
Но ведь оповестить() работает на клиенте. И это правильно, т.к. мы не знаем иначе в какую форму оповестить.
Вот в этом и загвоздка.
Процедура ПриНачалеРаботыСистемы()
//...
ПодключитьОбработчикОповещения("глОбработкаОповещения");
//...
КонецПроцедуры // ПриНачалеРаботыСистемы()
ПоказатьНо ведь оповестить() работает на клиенте. И это правильно, т.к. мы не знаем иначе в какую форму оповестить.
Вот в этом и загвоздка.
РС = РегистрыСведений.НапоминанияПользователя.СоздатьНаборЗаписей();
РС.Отбор.Пользователь.Установить(Стр.Пользователь);
РС.Отбор.Источник.Установить(ТекущийОбъект.Ссылка);
СтрРС = РС.Добавить();
СтрРС.Пользователь = Стр.Пользователь;
СтрРС.Источник = ТекущийОбъект.Ссылка;
СтрРС.ВремяСобытия = Дата;
СтрРС.СрокНапоминания = Дата;
СтрРС.Описание = "!!!!!!!!!!!";
РС.Записать();
РС.Отбор.Пользователь.Установить(Стр.Пользователь);
РС.Отбор.Источник.Установить(ТекущийОбъект.Ссылка);
СтрРС = РС.Добавить();
СтрРС.Пользователь = Стр.Пользователь;
СтрРС.Источник = ТекущийОбъект.Ссылка;
СтрРС.ВремяСобытия = Дата;
СтрРС.СрокНапоминания = Дата;
СтрРС.Описание = "!!!!!!!!!!!";
РС.Записать();
(5)
В момент когда выполняется код который добавляет запись в регистре нужно добавить запись и в регистр напоминания пользователю. В этом регистре можно и привязать объект который можно будет открыть в появившемся оповещении.
Как инициировать и обработать событие на клиенте при появлении этой
В момент когда выполняется код который добавляет запись в регистре нужно добавить запись и в регистр напоминания пользователю. В этом регистре можно и привязать объект который можно будет открыть в появившемся оповещении.
Самое простое использовать Систему взаимодействия. Она как раз очень четко умеет с сервера передать сообщение в диалог клиенту. У меня так работает АТС. При входящем звонке АТС формирует http запрос к 1С. А 1С ищет телефон и пользователю выбрасывает оповещение, что звонит такой-то. Реализуется - 10 строк кода.
(15) Не совсем так. Сервер получает запрос. И через Систему взаимодействия формирует сообщение для нужного пользователя. Т.е. ВСЕ делается на сервере. Пользователь получает сообщение штатными средствами платформы (если подключена СВ). Т.е. цепочки вообще нет. Отправлять что-то на сервер СВ не надо. Надо сбить сообщение и выполнить команду Отправить в МенеджерСистемыВзаимодействия. Подчеркиваю, все это на сервере, т.е. там же где и крутится http-сервис.
Centrifugo – сервер для обмена сообщениями в режиме реального времени: https://infostart.ru/public/1228139/
1. Создать Параметр сеанса, булево.
2. Создать HTTP-сервис, при необходимости в нём изменяем Параметр сеанса в Истина.
3. Создать внеш обработку с необходимым интерфейсом клиента для обратной связи.
4. Создать глобальный обработчик оповещения, проверять Параметр сеанса на Истина, при этом вызывать открытие интерфейса внешней обработки. При открытии Параметр сеанса возвращаем в Ложь.
2. Создать HTTP-сервис, при необходимости в нём изменяем Параметр сеанса в Истина.
3. Создать внеш обработку с необходимым интерфейсом клиента для обратной связи.
4. Создать глобальный обработчик оповещения, проверять Параметр сеанса на Истина, при этом вызывать открытие интерфейса внешней обработки. При открытии Параметр сеанса возвращаем в Ложь.
Всем спасибо! Решил сделать через систему взаимодействия. Действительно удобно.
&НаСервере
Процедура ОтправитьНаСервере()
ДанныеСообщения = ОбсужденияУНФ.НовыйДанныеСообщения();
ДанныеСообщения.Объект = Ссылка; //Любой документ или справочник. Например, событие.
ДанныеСообщения.Текст = ТекстСообщения;
ДанныеСообщения.Дата = ТекущаяДатаСеанса();
ДанныеСообщения.Автор = АссистентУправления.ПользовательАссистент();
ДанныеСообщения.Получатель = текПользователь; //Пользователь, которому предназначено сообщение
ОбсужденияУНФ.СоздатьСообщение(ДанныеСообщения);
КонецПроцедуры
Показать
Для толстого Клиента можно так. Но это очень плохо.
Делайте Общий Модуль Сервер
Можете даже так туда написать
/////**************************************
/// Записываем Документ или можете вставить регистр сведений или регистр накопления (при записи)
////*****************************************
Потом к примеру в Журнале Документов Ловите оповещение
//*************************
Делайте Общий Модуль Сервер
Можете даже так туда написать
&НаКлиенте
Процедура Опов(Им,Па,Ис) Экспорт
//Сообщить("001");
Оповестить(Им,Па,Ис);
КонецПроцедуры
/////**************************************
/// Записываем Документ или можете вставить регистр сведений или регистр накопления (при записи)
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// Вставить содержимое обработчика.
Общ.Опов("11","22","33");
КонецПроцедуры
////*****************************************
Потом к примеру в Журнале Документов Ловите оповещение
//*************************
&НаКлиенте
Перем _ИмяСобытия;
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
//Сообщить(ИмяСобытия + " " + Параметр + " "+ Источник);
_ИмяСобытия = ИмяСобытия;
ПодключитьОбработчикОжидания("_Показать", 1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура _Показать()
Сообщить("00000 "+_ИмяСобытия);
КонецПроцедуры
ПоказатьПрикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот