Предпосылки:
*Для ворчунов: Не считаю, что открыл Америку. Посему и размещаю как статью, а не как обработку. Мне важны плюсы с рекомендациями, а не деньги.
*Выдирал процедуры "Как есть" для примера, сами поработайте над притиркой.
*Для своих "капиталистических" нужд (серверы за бугром), я также учитываю разницу времени между клиентом и сервером. Это оставил за кадром, чтобы не перегружать текстом.
ЗАЧЕМ и что это:
Небольшие доработки в коде, чтобы каждая работающая клиентская машина САМОСТОЯТЕЛЬНО определяла время своей неактивности и самостоятельно (корректно) закрывала свою сессию. Тем самым освобождая лицензию.
Основа:
- Раз в 1100 секунд (время найдено эмпирическим путем как универсальное) отрабатывает регламентное задание, которое сохраняет ОПРЕДЕЛЕННЫЙ срез журнала регистрации в РегистрСведений (перетирая предыдущее сохранение).
- На каждый вход Админа проверяется "А не выключена ли регистрация событий в Журнале регистрации?".
- В настройках для Админа выведена настройка 3-х констант: Вкл/Выкл выбрасывалку; время простоя в минутах; и время начала выбрасывания (как часть даты - время).
- На запуске сеанса клиента стартуется процедура "УстановитьОжиданиеПростоя()", которая запускает обработчик ожидания начала времени выбрасывания.
- Обработчик ожидания начала времени выбрасывания каждые 10 минут проверяет не наступило ли "Константа время начала выбрасывания" (Это чтобы отошедшего покушать сотрудника не убило, у нас стоит на 18:00). И если уже да, запускает обработчик ожидания выбрасывания.
- Обработчик ожидания выбрасывания каждые "Константа времени простоя"/1.5 проверяет регистр сведений сохранения журнала регистрации и, если текущий пользователь за последние "Константа времени простоя" даже отчет не открывал, на пару минут выводит предупреждение и закрывает сеанс.
Постарался все процедуры выложить и как картинку и в тексте. Кому как удобнее