В процессе администрирования баз 1С часто возникает необходимость освобождать клиентские лицензии и системные ресурсы, которые заняты неактивными пользователями. Пользователь может уйти на обед, оставить открытую программу в конце рабочего дня или просто забыть закрыть сеанс. Разберем по шагам доступные способы реализации автоотключения: от штатных параметров платформы 1С:Предприятие 8.3 до настройки политик терминального сервера и программных методов контроля.
Способ 1. Штатные параметры информационной базы и кластера серверов 1С
Начиная с платформы 1С:Предприятие 8.3, в клиент-серверном режиме работы предусмотрен встроенный механизм управления неактивными подключениями. Проанализируем, как он функционирует.
Кластер 1С различает два этапа неактивности сеанса:
Перевод сеанса в спящий режим: если от клиента в течение заданного интервала не поступает вызовов к серверу, платформа переводит сеанс в состояние «Спящий». В этом режиме освобождается клиентская лицензия (если она выдается сервером 1С).
Завершение спящего сеанса: если сеанс продолжает находиться в спящем состоянии дольше установленного лимита, кластер принудительно удаляет его.
Для настройки этих параметров выполним следующие действия:
Откроем базу в режиме Конфигуратор с правами администратора.
Перейдем в главное меню: Администрирование → Параметры информационной базы.
Установим значение в поле Время засыпания пассивных сеансов (указывается в секундах, например, 1800 для 30 минут).
Установим значение в поле Время завершения спящих сеансов (например, 600 секунд, чтобы через 10 минут после засыпания сеанс был окончательно закрыт).
Нажмем Применить.
Аналогичные настройки можно задать через утилиту администрирования кластера серверов 1С (консоль MMC или утилиту rac) в свойствах конкретной информационной базы.
Важные нюансы штатного механизма:
Если в конфигурации работают динамические списки с автоматическим обновлением, открыты чаты встроенной системы взаимодействия или запущены клиентские обработчики ожидания (ПодключитьОбработчикОжидания), клиентское приложение отправляет регулярные фоновые пакеты на сервер. В таком случае платформа считает сеанс активным и не переводит его в спящий режим.
Освобождение лицензий при переходе в спящий режим работает только для серверных лицензий. Если лицензия привязана локально на клиентском ПК или выдается через аппаратный ключ HASP локально, она будет удерживаться до полного завершения процесса 1cv8.exe.
Способ 2. Ограничение времени сеансов на уровне терминального сервера (RDP)
Если пользователи работают с 1С через службы удаленных рабочих столов (Remote Desktop Services), наиболее надежным решением является настройка групповых политик Windows (GPO).
Разберем, какие параметры необходимо задать в редакторе локальной групповой политики (gpedit.msc) по пути: Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Ограничения по времени сеанса:
Задать предел времени для неактивных сеансов (Idle session limit): определяет время отсутствия нажатий клавиш и движений мыши в терминальной сессии (например, 30 минут), после которого сеанс переводится в отключенное состояние (Disconnected).
Задать предел времени для отключенных сеансов (Disconnected session limit): определяет время, по истечении которого отключенный сеанс окончательно завершается вместе со всеми запущенными процессами 1cv8.exe.
Этот способ гарантированно освобождает память сервера и клиентские лицензии независимо от используемой конфигурации 1С.
Способ 3. Завершение сеансов через утилиту администрирования кластера (RAC)
Для автоматизации контроля сеансов по расписанию можно использовать штатную консольную утилиту rac, работающую через службу ras. Разберем логику работы скрипта:
Скрипт выполняет опрос списка текущих сессий кластера с помощью команды получения сеансов информационной базы.
Анализируется параметр времени последней активности (last-active-at).
Если интервал бездействия превышает пороговое значение (например, 30 минут), выполняется команда принудительного завершения сеанса:
Скрипт инициирует удаление сеанса с указанием идентификатора сессии:
Способ 4. Программный опрос активности через форму ожидания
В случаях, когда требуется дать пользователю возможность продлить работу, используют программный диалог с тайм-аутом. Рассмотрим базовую схему реализации:
В модуле управляемого приложения подключается периодический обработчик ожидания, который с заданной периодичностью проверяет необходимость валидации пользователя.
Пользователю выводится модальное окно (или неблокирующее окно с таймером) с вопросом: «Вы продолжаете работу в программе?».
Если в течение установленного времени (например, 60 секунд) ответ не получен, вызывается метод завершения работы программы.
// Пример программного закрытия сеанса
ПрекратитьРаботуСистемы(Ложь);
Риски и рекомендации при принудительном отключении
Проанализируем возможные последствия резкого завершения работы пользователей:
Несохраненные данные: при принудительном разрыве соединения несохраненные документы, открытые формы и введенные строки табличных частей не сохраняются в базе. Пользователей необходимо заранее предупреждать о действующем регламенте автоотключения.
Блокировки таблиц: при аварийном завершении процессов менеджер блокировок СУБД и кластера 1С освобождает захваченные транзакционные ресурсы с небольшой задержкой, требуемой для корректного отката незавершенных транзакций.