Часто перед администраторами и владельцами баз 1С встает задача по освобождению лицензий и завершению «зависших» или забытых сеансов пользователей. В ситуациях, когда база находится на хостинге и провайдер не предоставляет административный доступ к кластеру серверов 1С, стандартные методы управления кажутся недоступными. Давайте разберем, как подойти к решению этой задачи, работая исключительно внутри информационной базы.
Прежде всего, осознаем, что управление сеансами — это привилегированная функция. Если ваш провайдер жестко ограничивает права, стоит рассмотреть несколько стратегий: от переговоров с поддержкой до программной реализации контроля внутри конфигурации. Рассмотрим подробнее, какие технические возможности нам доступны.
Если у вас есть административные права внутри самой информационной базы, вы можете управлять сеансами без доступа к консоли кластера. Для этого мы можем использовать функционал встроенного языка. Основная идея заключается в создании РегламентныеЗадания, которое будет проверять время последней активности пользователя и при необходимости завершать его работу.
Для начала, проанализируем, какие объекты нам потребуются:
ПолучитьСписокАктивныхПользователей() — этот метод возвращает массив данных об активных сеансах.ПоследняяАктивность — именно оно позволяет нам понять, когда пользователь последний раз взаимодействовал с системой.ЗавершитьРаботуПользователя() — основной инструмент для принудительного разрыва соединения.Разберем пример реализации логики такого задания:
Процедура ЗавершитьНеактивныеСеансы()
СписокСеансов = ПолучитьСписокАктивныхПользователей();
ТекущаяДатаСеанса = ТекущаяДата();
ПорогВремени = 3600; // Порог в секундах (1 час)
Для Каждого Сеанс Из СписокСеансов Цикл
Если (ТекущаяДатаСеанса - Сеанс.ПоследняяАктивность) > ПорогВремени Тогда
// Проверяем, не является ли сеанс системным
Если НЕ Сеанс.ИмяКомпьютера = "Server_Host" Тогда
ЗавершитьРаботуПользователя(Сеанс.ИмяПользователя, Сеанс.УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
При использовании данного подхода необходимо учитывать критические моменты:
ЗавершитьРаботуПользователя() пользователю, под которым работает задание, необходимы полные права (администратор ИБ). Если провайдер ограничил и их, этот метод не сработает.Если программная реализация внутри конфигурации невозможна из-за отсутствия прав, рассмотрим другие варианты:
COM-объект, что иногда требует меньше прав, чем прямое подключение к кластеру, однако это требует уточнения у вашего провайдера.VDS/VPS, где вы получите полный административный доступ к серверу и возможность настраивать любые политики безопасности и управления сеансами самостоятельно.Подводя итог, проанализируем ситуацию: контроль сеансов — это прежде всего вопрос администрирования. Если права доступа ограничены критически, то единственный надежный путь — это требовать корректной настройки от хостинг-провайдера, либо брать под контроль инфраструктуру, арендуя выделенные мощности.