gifts2017

Оповещение пользователей

Опубликовал Владимир Рютин (VovkaPutin) в раздел Программирование - Практика программирования

Оповещение всех активных пользователей базы с минимальной доработкой конфигурации (Клиент-серверный вариант)

Решается в 3 шага:

1) В модуле Обычного приложения в процедуре "ПриНачалеРаботыСистемы" добавляем строку:

ПодключитьОбработчикОжидания("глОбработкиОжидания",60);

2) Создаём новую Константу "ОповещениеПользователей" (тип - строка, длина - 200) с доступностью просмотра и чтения у всех рабочих ролей базы (либо только у роли "Пользователь", если она стоит у всех пользователей)

3) Создаём новый Общий модуль "ОповещениеПользователей" (галки в свойствах у: Глобальный, Сервер, Внешнее соединение, Клиент-обычное приложение, Вызов сервера) с кодом:

&НаКлиенте 
Процедура глОбработкиОжидания() Экспорт 
Если СокрЛП(Константы.ОповещениеПользователей.Получить())<>"" Тогда 
Предупреждение(СокрЛП(Константы.ОповещениеПользователей.Получить()), 0, "Сообщение от Администратора 1С !"); 
КонецЕсли; 
КонецПроцедуры

Это всё. Далее в 1С-ке открываем форму Оповещение_пользователей.epf и пишем сообщение. Раз в минуту (значение из кода: "глОбработкиОжидания",60) у всех активных пользователей будет выскакивать предупреждение с заданным сообщением. После выполнения оповещения нажимаем кнопку "Прекратить Вывод сообщения". Будет полезно для информирования пользователей, чтобы вышли из базы на время тех. работ. Раньше приходилось обзванивать :)
__________________________________________________________________________________________________________________________

UPDATE 


Кому недостаточно серого оповещения для пользователей, предлагаю красочное дополнение с бегущей строкой, скриншот прилагается ;)

Доп. инструкция по обновлению:

1) Закидываем файл ОповещениеПользователейФормой.epf в обработки нашей конфигурации, ставим право просмотра (как у Константы "ОповещениеПользователей") 

2) Заменяем весь текст Общего модуля "ОповещениеПользователей" на:

&НаКлиенте 
Процедура глОбработкиОжидания() Экспорт 
Если СокрЛП(Константы.ОповещениеПользователей.Получить())<>"" Тогда  
Форма = Обработки.ОповещениеПользователей.ПолучитьФорму("Форма");  
Если Форма.Открыта() = Ложь 
Тогда  Форма.ОткрытьМодально();  
КонецЕсли; 
КонецЕсли; 
КонецПроцедуры

Готово, теперь пользователи вряд ли не заметят Ваше сообщение :)

Скачать файлы

Наименование Файл Версия Размер
Оповещение_пользователей.epf 32
.epf 6,84Kb
30.06.14
32
.epf 6,84Kb Скачать
ОповещениеПользователейФормой.epf 22
.epf 40,40Kb
04.07.14
22
.epf 40,40Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Макас (makas) 01.07.14 10:32
Вопрос: почему нельзя было сосдать это как внешнюю обработку?
2. Владимир Рютин (VovkaPutin) 01.07.14 10:51
(1) makas, это и есть внешняя)
вмешиваться в конфигурацию в любом случае придется, насколько я понял.
открывать форму можно через Файл - Открыть
3. Алексей 1 (AlX0id) 01.07.14 14:36
Во многих типовых конфигурациях все уже включено ;)
Обработка звать БлокировкаСоединенийСИнформационнойБазой - далее все интуитивно просто.
4. Владимир Рютин (VovkaPutin) 01.07.14 14:41
(3) AlX0id, информируешь пользователей блокировкой?:)
5. Тимофей Шантин (ShantinTD) 01.07.14 23:15
(4) VovkaPutin, а почему бы и нет? Там же настраивается время завершения (или до него). Просто уведомлять нужно не за 2 минуты, а минут за 15-20. Конечно - если есть такая возможность; в экстра-форс-мажорных ситуациях можно этот интервал очень сильно сократить.

А вообще вариант с блокировкой не самый плохой: сообщение есть, констант лишних нет, обработчик уже подключенный. Да и при желании можно подшаманить чтобы помягче выкидывало.
6. Владимир Рютин (VovkaPutin) 02.07.14 09:36
(5) ShantinTD, посмотрел стандартную обработку "БлокировкаСоединенийСИнформационнойБазой" - так там тупо выводит сообщение при попытке соединения. Никакого оповещения там нет :)
Прикрепленные файлы:
7. Никита Грызлов (nixel) 02.07.14 18:29
(6) VovkaPutin, посмотрите управляемую "Блокировку работы пользователей". Там выводится оповещение.
8. Владимир Рютин (VovkaPutin) 02.07.14 22:14
(7) nixel,
посмотрите управляемую "Блокировку работы пользователей". Там выводится оповещение.
не нашёл такой обработки ни в одной конфигурации)
9. Владимир Рютин (VovkaPutin) 06.07.14 20:46
10. Сергей Козынкин (Ulus) 26.09.14 13:59
(3) AlX0id,
согласен.
Более того сама схема работы примерно такая же как у автора. Но сделано более все красивее технически.
И те же 60 сек. интервал опроса.
Автор же добавляет еще один обработчик ожидания.
И к тому же всегда идет обращение к константе.
Пример, Математика: 100 пользователей активных и раз в минуту будет 100 раз обращение к таблице Констант.
Так быстро можно базу заспамить ненужноми "долбежками"к базе .
В типовой же работа идет с объектом БлокировкаСеансов.
11. Владимир Рютин (VovkaPutin) 26.09.14 15:56
(10) Ulus, посмотри сколько таких "долбежек" существует в типовых конфах и подумай еще раз :)
в масштабах базы эти долбежки просто ничтожны.
+ таймер можно и побольше поставить