Администрирование · 10 мин
Как ограничить количество сеансов одного пользователя в 1С
Способы ограничить число одновременных сеансов пользователя в 1С: настройка в конфигураторе, кластер серверов, блокировка соединений, программные методы и контроль результата.
Одновременная работа одного пользователя в нескольких сеансах — частая причина лишних лицензий, конфликтов данных и перегрузки сервера 1С. Сотрудник запускает базу на компьютере, терминале и удалённом рабочем столе, а сеансы «висят» в фоне, хотя реально работает человек только в одном окне. Задача администратора — ограничить число таких сеансов штатными средствами платформы или конфигурации.
В 1С нет единого переключателя «не больше одного сеанса на пользователя», поэтому на практике применяют комбинацию подходов: настройки кластера серверов, параметры сеансов в конфигураторе, программный контроль при входе и политики завершения неактивных соединений. Выбор зависит от режима работы базы — файлового или клиент-серверного — и от того, какая конфигурация используется.
Ниже разобраны рабочие способы ограничения сеансов, их ограничения, типичные ошибки и способы проверить, что ограничение действительно срабатывает.
Как 1С учитывает сеансы и почему их становится много
Сеанс — это подключение пользователя или фонового процесса к информационной базе. Один пользователь может держать несколько сеансов: толстый клиент на рабочем месте, тонкий клиент через веб-сервер, сеанс в терминале, плюс фоновые задания, запущенные от его имени. Каждый такой сеанс в клиент-серверном режиме потребляет лицензию, если она выдаётся на сеанс.
Рост числа «зависших» сеансов обычно связан с тремя причинами: пользователь закрывает программу аварийно (сеанс остаётся активным до таймаута), сеанс открывается на терминальном сервере и не завершается при выходе, а также регламентные задания стартуют под учётной записью пользователя. Прежде чем вводить ограничения, стоит посмотреть реальную картину в консоли кластера или через «Администрирование — Активные пользователи» в типовых конфигурациях.
Способ 1. Настройки кластера серверов 1С
В клиент-серверном варианте часть ограничений задаётся в консоли администрирования серверов 1С. Откройте свойства информационной базы в кластере: там доступны параметры, влияющие на время жизни соединений — «интервал перезапуска», «допустимый объём памяти», а также настройки блокировки установки соединений. Прямого параметра «максимум сеансов на пользователя» здесь нет, но есть инструменты косвенного контроля.
Полезные для задачи настройки кластера:
- Блокировка установки соединений — позволяет запретить новые подключения, например на время регламентных работ. Можно задать сообщение, которое увидит пользователь.
- Разрешение выдачи лицензий — управляет тем, какой сервер выдаёт клиентские лицензии, что влияет на учёт сеансов.
- Таймауты соединений — настройки рабочих процессов, влияющие на то, как быстро освобождаются ресурсы неактивных подключений.
Для ограничения именно количества сеансов одного пользователя настройки кластера недостаточно — потребуется программный контроль, описанный ниже.
Способ 2. Программное ограничение сеансов при входе
Самый гибкий способ — проверять число активных сеансов пользователя в момент установки соединения и отказывать во входе, если лимит превышен. Для этого используется обработчик УстановкаПараметровСеанса в модуле сеанса либо событие подключения в общем модуле, а список активных сеансов получают методом ПолучитьСеансыИнформационнойБазы().
Логика проверки выглядит так: при входе получаем все сеансы базы, отбираем те, где имя пользователя совпадает с текущим, исключаем фоновые задания и служебные соединения, и если количество превышает лимит — вызываем исключение с понятным сообщением. Пользователь увидит текст ошибки и не сможет войти, пока не закроет другой сеанс.
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
МаксСеансов = 1;
ТекущийПользователь = ИмяПользователя();
Если ПустаяСтрока(ТекущийПользователь) Тогда
Возврат; // служебные подключения не ограничиваем
КонецЕсли;
Счетчик = 0;
Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
Если Сеанс.ИмяПользователя = ТекущийПользователь
И Сеанс.ИмяПриложения <> "BackgroundJob" Тогда
Счетчик = Счетчик + 1;
КонецЕсли;
КонецЦикла;
Если Счетчик > МаксСеансов Тогда
ВызватьИсключение "Превышен лимит одновременных сеансов. Завершите другой сеанс и повторите вход.";
КонецЕсли;
КонецПроцедурыУчтите, что текущий сеанс уже присутствует в списке, поэтому сравнение ведётся с учётом этого. Исключайте из подсчёта фоновые задания и COM-соединения, иначе регламентные операции, запущенные от имени пользователя, будут блокировать ему вход.
Способ 3. Автоматическое завершение неактивных сеансов
Ограничение на входе не решает проблему «зависших» сеансов: пользователь не сможет войти, пока старый сеанс не закроется. Поэтому ограничение почти всегда дополняют автоматическим завершением простаивающих подключений.
В типовых конфигурациях на базе Библиотеки стандартных подсистем есть механизм завершения сеансов по таймауту: администратор задаёт время бездействия, после которого сеанс завершается. В самописных решениях аналог реализуют регламентным заданием, которое периодически получает список сеансов, проверяет время последней активности и принудительно завершает давно неактивные подключения.
Для файлового режима вариантов меньше: централизованного управления сеансами нет, поэтому ограничиваются программной проверкой при входе и организационными мерами — например, настройкой автоматического завершения сеансов на терминальном сервере средствами Windows.
- 1Проанализируйте активные сеансы: кто и сколько держит подключений, есть ли фоновые задания от пользователей
- 2Настройте автоматическое завершение неактивных сеансов, чтобы пользователи не блокировались «зависшими» подключениями
- 3Добавьте программную проверку лимита сеансов при входе с исключениями для служебных учётных записей
- 4Протестируйте на копии базы: вход под обычным пользователем, под администратором, запуск фоновых заданий
- 5Включите механизм в рабочей базе и предупредите пользователей о новом правиле
Способ 4. Организационные и системные меры
Не всё нужно решать внутри 1С. Часть проблемы снимается на уровне инфраструктуры:
- Терминальный сервер: настройте групповые политики Windows на завершение отключённых RDP-сессий через заданное время — тогда сеансы 1С в терминале не будут висеть бесконечно.
- Ярлык запуска: уберите у пользователей возможность запускать несколько копий клиента с разными параметрами, если это не нужно по работе.
- Разделение учётных записей: выделите отдельные служебные учётные записи для обменов, интеграций и фоновых заданий, чтобы они не конкурировали за лимит с интерактивной работой.
Такие меры особенно эффективны в файловом режиме, где программные возможности платформы ограничены, а в клиент-серверном режиме они снижают нагрузку на механизм принудительного завершения.
Как проверить, что ограничение работает
После внедрения проверьте механизм в контролируемых условиях. Откройте базу под тестовым пользователем, затем попытайтесь войти второй раз с тем же логином — должно появиться заданное вами сообщение об отказе. Закройте первый сеанс и убедитесь, что вход снова возможен.
Дополнительно проверьте граничные случаи: вход администратора (он не должен блокироваться), запуск фонового задания от имени пользователя (не должно мешать входу), поведение при аварийном закрытии клиента (сеанс должен завершиться по таймауту, а не висеть вечно).
Как проверить результат
Вход отклонён с понятным сообщением о лимите
Второй сеанс открывается без ограничений
Администратор входит без ограничений
Администратор заблокирован — риск потери доступа к базе
Задания выполняются и не блокируют вход
Регламентные операции мешают пользователю войти
Сеанс завершается по таймауту автоматически
Сеанс висит часами и блокирует вход
Типичные ошибки при ограничении сеансов
Что важно запомнить
Штатного параметра «один сеанс на пользователя» в 1С нет. Рабочая схема — программная проверка числа сеансов при входе через ПолучитьСеансыИнформационнойБазы, дополненная автоматическим завершением неактивных подключений и исключениями для служебных учётных записей и администраторов.
Частые вопросы
Можно ли ограничить сеансы без доработки конфигурации?
Полностью — нет. Настройки кластера позволяют управлять соединениями и таймаутами, но лимит на конкретного пользователя задаётся только программно. В типовых конфигурациях на БСП часть задачи решается штатным механизмом завершения неактивных сеансов без изменения кода.
Работает ли ограничение в файловом режиме?
Да, программная проверка при входе работает и в файловом режиме, поскольку ПолучитьСеансыИнформационнойБазы доступен и там. Но централизованного принудительного завершения чужих сеансов в файловом режиме нет, поэтому его дополняют настройками терминального сервера и организационными правилами.
Что делать, если пользователь заблокирован из-за зависшего сеанса?
Администратор может завершить зависший сеанс через консоль кластера серверов 1С (раздел «Сеансы» у нужной базы). Чтобы ситуация не повторялась, настройте автоматическое завершение неактивных сеансов по таймауту.
Нужно ли ограничивать сеансы служебных учётных записей?
Нет, наоборот — их следует исключить из проверки. Учётные записи для обменов, интеграций и регламентных заданий могут легально открывать несколько соединений, и жёсткий лимит нарушит автоматические процессы.
Повлияет ли ограничение сеансов на лицензии 1С?
Косвенно — да. Если лицензии выдаются на сеанс, сокращение числа параллельных подключений одного пользователя высвобождает лицензии для других сотрудников и снижает риск ошибки «не найдено свободной лицензии».