Как настроить автоматическое завершение сеансов неактивных пользователей в 1С?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Проблема «зависших» сеансов знакома каждому системному администратору 1С. Пользователи часто забывают закрывать программу перед уходом домой, что приводит к нерациональному использованию лицензий (в этом случае для анализа ситуации пригодится Консоль активности пользователей) и блокировкам при выполнении регламентных операций, например, при создании бэкапов. В этой статье мы подробно разберем механизмы управления сеансами, выясним, почему стандартные тайм-ауты не всегда срабатывают, и рассмотрим альтернативные способы автоматизации этого процесса — для этого подойдёт обработка для автоматического завершения сеансов 1С.

Механизм «Спящих» сеансов в консоли администрирования кластера

Для начала проанализируем штатные возможности платформы 1С:Предприятие 8.3. В консоли администрирования серверов 1С (утилита MMC или rac/ras) предусмотрены специальные параметры для каждой информационной базы. Чтобы сеансы начали завершаться автоматически, выполним следующие действия:

  1. Откроем консоль администрирования кластеров 1С.
  2. Перейдем в ветку нужной информационной базы и откроем её Свойства.
  3. Найдем блок параметров, отвечающих за жизненный цикл сеанса.

Рассмотрим подробнее три ключевых параметра:

Важный нюанс: Многие путают «проблемные» сеансы и «спящие». Проблемный сеанс — это сеанс, у которого разорвано соединение с клиентом (например, при аварийном завершении 1С или обрыве сети). Спящий сеанс — это работающее приложение, которое просто не отправляет запросы к серверу.

Настройка параметров через Конфигуратор

Помимо консоли кластера, настройки тайм-аутов можно задать непосредственно в параметрах информационной базы через Конфигуратор. Разберем, как это сделать:

  1. Запустим Конфигуратор.
  2. Перейдем в меню Администрирование — Параметры информационной базы....
  3. Установим значения для полей «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса».

Эти настройки дублируют параметры в консоли кластера, но их полезно проверить, если вы не имеете прямого доступа к оснастке управления сервером.

Почему сеансы не «засыпают»: влияние фоновой активности

Часто администраторы сталкиваются с ситуацией: настройки выставлены, но пользователи висят сутками. Проанализируем причину этого явления. В современных типовых конфигурациях (ERP, КА 2, УТ 11, ЗУП 3), построенных на базе Библиотеки стандартных подсистем (БСП), реализовано множество механизмов, которые «дергают» сервер в фоновом режиме:

Для платформы 1С любая такая активность считается «действием пользователя». Счётчик бездействия обнуляется, и сеанс никогда не переходит в категорию пассивного. В этом случае штатные средства консоли становятся бессильны. Рассмотрим, как решить эту проблему альтернативными путями.

Использование файла публикации default.vrd (Web-сервер)

Если ваши пользователи работают через Web-клиент или Тонкий клиент по протоколу HTTP/HTTPS, настройки кластера могут перекрываться настройками веб-сервера (IIS или Apache). В этом случае проанализируем файл default.vrd, который находится в каталоге публикации базы.

В структуре XML-файла нас интересует параметр sessionTimeout:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/MyBase"
       ib="Srvr="Server1C";Ref="MyBase";"
       sessionTimeout="1800">
</point>

Здесь sessionTimeout задает время в секундах, через которое веб-сервер принудительно разорвет соединение при отсутствии активности со стороны браузера или тонкого клиента.

Принудительное завершение через скрипты (PowerShell + RAS)

Самый надежный метод для серверных баз — использование внешнего скрипта, который будет игнорировать ложную активность БСП. Мы можем ориентироваться на свойство LastActiveTime (время последней активности). Для тех, кто предпочитает готовые инструменты, существует детализированный менеджер задач (процессов) 1С (поможет менеджер задач PowerTools для управления процессами 1С) с использованием PowerShell, который позволяет детально мониторить владельцев процессов и массово завершать их.

Если же писать скрипт самостоятельно, разберем логику его работы:

  1. Скрипт подключается к серверу 1С через интерфейс RAS (Remote Administration Server) или COM-объект.
  2. Перебирает все активные сеансы информационной базы.
  3. Сравнивает текущее время и LastActiveTime сеанса.
  4. Если разница составляет более 5 часов (18000 секунд), выполняется команда TerminateSession.

Пример обращения к объекту сеанса через программный интерфейс:


Сеансы = Соединение.GetSessions(Кластер, ИнфоБаза);
Для Каждого Сеанс Из Сеансы Цикл
    Если (ТекущаяДата() - Сеанс.LastActiveTime) > 18000 Тогда
        Соединение.TerminateSession(Кластер, Сеанс);
    КонецЕсли;
КонецЦикла;

Такой подход гарантированно освобождает лицензии, так как завершение происходит на стороне сервера принудительно.

Завершение через RDP (терминальный сервер)

Если пользователи работают в терминальном режиме, наиболее эффективно настроить Групповые политики (GPO). Проанализируем путь в редакторе политик: Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Ограничения сеансов по времени.

Настроим параметр «Задать предел времени для активного, но бездействующего сеанса служб удаленных рабочих столов». Когда Windows завершит RDP-сеанс пользователя, связь с клиентом 1С разорвется. Дополнительно для обслуживания можно использовать утилиту, выполняющую очистку кэша 1С на терминальных серверах с принудительным закрытием сессий. После этого в консоли 1С сеанс станет «проблемным» и будет удален согласно настройкам кластера, о которых мы говорили в самом начале.

Встроенная обработка «Завершение работы пользователей»

Не забудем и про штатный инструмент, встроенный во многие конфигурации. Найти его можно в разделе Администрирование — Обслуживание — Завершение работы пользователей. Хотя он чаще используется для блокировки входа перед обновлением, в нем можно установить параметр «Завершить работу пользователей через...». Однако этот метод является разовым.

Более функциональным решением может стать расширение Завершение работы пользователей для принудительного отключения или, если требуется комплексный подход, полноценный центр администрирования 1С (включая блокировки, бэкапы и управление сеансами из одной обработки). Для администраторов Linux-серверов также актуальна специальная обработка для автоматической установки и снятия блокировок.

Подводя итог, отметим: для эффективного решения задачи лучше всего комбинировать настройки спящих сеансов в консоли 1С (для борьбы с обрывами связи) и внешние скрипты или настройки терминального сервера (для борьбы с реально забытыми сессиями, которые имитируют активность фоновыми запросами).

← На главную