+ Блокировка соединений + Отключение сеансов
Проверено на УПП
Для работы необходимо создать новый регистр сведений — Оповещение
В регистре должно быть следующее
Измерение: — «Пользователи» с типом данных — СправочникСсылка.Пользователи
Ресурсы:
Отправлять — тип булево
Сообщение — тип строка
Прочитан — тип булево
Выведен — тип булево
В модуле обычного приложения :
Процедура ПриНачалеРаботыСистемы() вставляем код
ПодключитьОбработчикОжидания("ОтправкаСообщений",30);
Добавляем процедуру
Процедура ОтправкаСообщений() Экспорт
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Оповещение.Пользователь,
| Оповещение.Отправлять,
| Оповещение.Сообщение,
| Оповещение.Прочитан,
| Оповещение.Выведен
|ИЗ
| РегистрСведений.Оповещение КАК Оповещение
|ГДЕ
| Оповещение.Пользователь = &Пользователь";
Запрос.УстановитьПараметр("Пользователь",ПараметрыСеанса.ТекущийПользователь);
Строка=Запрос.Выполнить().Выбрать();
Если Строка.Следующий() тогда
Если Строка.Отправлять и не Строка.Прочитан тогда
Сигнал();
ПоказатьОповещениеПользователя(Строка.Сообщение,,, БиблиотекаКартинок.ИнтернетПоддержкаПользователейПредупреждение);
Если не Строка.Прочитан и не Строка.выведен тогда
МенеджерЗаписи=РегистрыСведений.Оповещение.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Пользователь=ПараметрыСеанса.ТекущийПользователь;
МенеджерЗаписи.Прочитать();
МенеджерЗаписи.выведен=истина;
МенеджерЗаписи.Записать();
Ответ=Вопрос(Строка.Сообщение,РежимДиалогаВопрос.ОК,,,"1С:Предприятие");
Если (Ответ=КодВозвратаДиалога.ОК или Ответ=КодВозвратаДиалога.Отмена) тогда
МенеджерЗаписи=РегистрыСведений.Оповещение.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Пользователь=ПараметрыСеанса.ТекущийПользователь;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Отправлять тогда
МенеджерЗаписи.Прочитан=Истина;
МенеджерЗаписи.Записать();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Описание кнопок:
1 — Выбрать все
2 — Отменить выбор
3 — Отмена рассылки
4 — Повтор рассылки
5 — Отключить выбранные сеансы (кроме Конфигуратора, фоновых заданий и пользователя открывшего обработку)
6 — Обновить
7 — открыть регистр сведений Оповещение
В первом случае (вкладка «Сеансы» сообщения отправляются выбранным пользователям, которые сейчас работают в базе
Во втором случае (вкладка «Дополнительно» сообщение отправляется всем пользователям ИБ, даже тем, которые в данный момент не в сети
Мало того, что прочитал.. Надо еще добавить сохранение информации о том, кто понял сообщение ))
(1) AlX0id,
Спасибо) Реализуем )
(1) AlX0id, ага, маленький опросик по мотивам сообщения, типа того кроссворда по мотивам поэзии Пушкина:
Как быть с частыми запросами если пользователей будет много ?
(4) DanilaDru, А в чем проблема? Слабый сервер или несколько тысяч пользователей? Оптимизировать конечно можно все что угодно, но не вижу смысла в этом
Вот что у меня: для каждого пользователя запрос выполняется 0,04 сек. , памяти требуется примерно 5 КБ. Вот и считайте)
Я так долго искал такую вещь! Есть ли возможность получить эту обработку бесплатно?
(7) TreeDogNight, так она бесплатная, даже код вон приведен…