Итак нам понадобится организовать сторону отправителя и сторону получателей сообщения.
Сторона отправителя будет реализована в виде обработки, а точнее нам понадобится только форма обработки:
Код формы:
&НаСервереБезКонтекста
Процедура ОтправитьНаСервере(Сообщение)
Константы._Сообщение.Установить(Сообщение);
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
гПользовательОтправляющий = ИмяПользователя();
ОтправитьНаСервере(Сообщение);
Сообщение="";
КонецПроцедуры
Сторона получателя будет реализована в виде кода модуля управляемого приложения. Необходимо создать две переменные, первая для определения что сообщение пользователем уже получено, вторая для определения пользователя отправившего сообщение.
При старте системы необходимо очистить константу, хранящую выводимое сообщение, иначе при входе система будет выдавать последнее отправленное сообщение, что нужно не всегда. Там же подключаем обработчик ожидания, запускающий процедуру проверки: "Не нужно ли выдать сообщение".
При чем, сообщение не должно выводится отправляещему пользователю. В моём случае оно должно "висеть" пока пользователь его не закроет, за это отвечает второй параметр метода "Предупреждение".
Если программа будет свернута в момент получения сообщения, то предупреждение выйдет на экран и в этом случае, если, конечно, ваш пользователь в этот момент не будет активно "работать" в браузере:), в этом случае он может его просто не заметить, перекрыв окно браузером.
Перем гСообщение Экспорт;
Перем гПользовательОтправляющий Экспорт;
///////////////////////////////////////////////////////////////////////////////////////////
Процедура ПриНачалеРаботыСистемы()
гСообщение = Доработки.ПолучитьЗначениеКонстанты();
ПодключитьОбработчикОжидания("ПрочитатьСообщение", 1);
...
Процедура ПрочитатьСообщение() Экспорт
Сообщение = Доработки.ПолучитьЗначениеКонстанты();
Если ЗначениеЗаполнено(Сообщение) Тогда
Если Сообщение <> гСообщение Тогда
гСообщение = Сообщение;
Если гПользовательОтправляющий<>ИмяПользователя() Тогда
Предупреждение(Сообщение,0);
Иначе
ПоказатьОповещениеПользователя("Сообщение отправлено:
|"+Сообщение);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Для получения и установки значения константы. Необходимо добавить общий модуль с установленными свойствами: Сервер,ВызовСервера. У меня он называется "Доработки". Его код:
Функция ПолучитьЗначениеКонстанты() Экспорт
Возврат Константы._Сообщение.Получить();
КонецФункции
Процедура УстановитьЗначениеКонстанты(Строка) Экспорт
Константы._Сообщение.Установить(Строка);
КонецПроцедуры
И последний нюанс. Создать константу "_Сообщение" с типом "Строка".