Не нашел удобного для себя решения, пришлось написать свое. :)
Мы все часто бываем в ситуации, когда для обновления файловой базы необходимо выгнать всех пользователей. Долго не можем найти пару оставшихся человек, не можем найти администратора сервера.
Я предлагаю решение, которое позволяет решить эту проблему. Доработка представляет из себя расширение, при подключении необходимо включить "использовать основные роли для всех пользователей".
Суть моего метода заключается в реализации следующего алгоритма:
- ПриНачалеРаботыСистемы подключается обработчик ожидания, который вызывается каждые 30 секунд.
- В этом обработчике проверяется, существует ли в регистре сведений запись с именем текущего пользователя и временем отключения. Если время отключения наступило, то завершается сеанс. Если еще не наступило, то выводится предупреждение, что отключение произойдет через столько-то минут.
- Для пользователей с полными правами в подсистеме Администрирование/НастройкиПрограммы доступна обработка "Завершение работы пользователей", в которой можно настроить завершение сеансов для активных пользователей.
В обработке реализованы следующие возможности:
- Установка времени выхода;
- Выгнать всех пользователей / отмена;
- Выгнать конкретных из списка активных и можно в разное время / отмена;
- Просмотр подтверждения, что пользователь просмотрел предупреждение о выходе;
- Просмотр и удаление записей из регистра для пользователей, которые уже вышли;
Тестировал на платформах 8.3.20.1613 и 8.3.25.1072, Белорусской Бухгалтерии (2.1.52.4) , но должно работать везде, БСП не задействовал. Главное, чтоб в конфигурации была такая подсистема, в которой я разместил. Если кому-то будет нужно, могу доработать под его нужды.
06.06.2024 Обновление версии до 1.0 Изменения:
1. Отключена основная роль для расширения, что мешало нормальной работе при использовании в типовых конфигурациях с БСП (слетал флаг "Использовать основную роль для всех пользователей")
2. Доработан механизм одновременного отключения всех пользователей с использованием флага "ВСЕ".
3. Добавлена документация с описанием использования расширения, доступная по вопросику на форме обработки.
ОПИСАНИЕ
Обработка “Завершение работы пользователей” доступна в подсистеме Администрирование/НастройкиПрограммы для пользователей с ролью “АдминистраторСистемы” или “ПолныеПрава”.
-
Перед началом отключения пользователей, в поле “Время завершения работы” необходимо ввести время в которое будет завершен сеанс пользователя (всех пользователей).
-
Далее, для завершения работы пользователя, в табличном поле “Отключить”, в строке с нужным пользователем необходимо включить флажок. После этого для соответствующего пользователя будет установлено время, в которое произойдет отключение его сеанса работы с базой данных и в табличном поле “Дата завершения” появится запись с временем отключения. При Снятии флажка в поле “Отключить”, будет отключено завершение сеанса и запись в поле “Дата завершения” удалится. Необходимо знать, что время отключения может иметь лаг в 30 секунд, это связано с интервалом проверки завершения сеансов. После установки флажка для отключения пользователя, у него выведется предупреждение, что его сеанс будет завершен через соответствующее время. После того, как пользователь прочитает это сообщение и нажмет “ОК”, Администратор завершающий сеанс может убедиться, что пользователь прочитал уведомление. Для этого необходимо нажать кнопку “Обновить список пользователей” над таблицей и просмотреть табличное поле “Просмотрено” (учитывайте временной лаг в 30 секунд до получения пользователем уведомления о завершении сеанса, после его установки). Когда сеанс пользователя будет принудительно завершен, запись из регистра о завершении, для данного пользователя будет удалена и этот пользователь при следующей попытке сможет получить доступ к базе данных. Если пользователь сам завершит сеанс, не дожидаясь принудительного завершения, то запись для него в регистре останется, но при следующей его попытке подключиться к базе перед началом сеанса запись из регистра будет удалена и он сможет беспрепятственно войти. Если пользователь завершил сеанс самостоятельно ранее назначенного времени, администратор будет видеть в таблице запись для этого пользователя выделенную серым цветом, что означает, что сеанс для этого пользователя отсутствует, но запись в базе о завершении есть. Что бы удалить эту запись, Администратор может нажать правую кнопку мыши и в контекстном меню выбрать “Удалить запись”.
-
Для завершения всех сеансов, можно включить флажок “Отключить всех”. При этом сообщение пользователям о предстоящем завершении их сеансов, выводиться не будет и сеанс будет завершен у всех пользователей в установленное время, включая пользователя Администратора, устанавливающего завершения. Запись из регистра также удалена не будет. При следующей попытке подключиться к базе, если после блокировки (наступления времени завершения сеансов для всех) не прошло 30 минут, то выводится предупреждение, что База заблокирована и предлагается ввести пароль для ее разблокирования “2666”. Если 30 мин прошло после начала блокировки, то запись из регистра для Всех удаляется и вход разрешается всем пользователям.
Для удобства работы, рекомендуется назначать завершения сеансов индивидуально для каждого пользователя.