Принудительное завершение сеансов 1С: от формы «Активные пользователи» до rac
Содержание
Чтобы отключить сеанс пользователя в 1С 8.3, откройте Администрирование → Обслуживание → Активные пользователи, выделите строку с нужным человеком и выполните команду «Завершить сеанс». В клиент-серверной базе то же самое делается в консоли кластера (ветка «Сеансы» у информационной базы, команда «Удалить») или командой rac session terminate.
Типичная ситуация: вечер, нужно обновить конфигурацию , а в списке активных висят трое бухгалтеров, которые ушли домой с открытой программой. Или сотрудник уволился, а его сеанс держит лицензию. Принудительно завершить сеанс 1С можно пятью способами, и не каждый из них работает в файловой базе.
Какой способ отключения выбрать
Способ зависит от двух вещей: как развёрнута база (файловый вариант или сервер 1С) и есть ли у вас права администратора кластера.
| Способ | Файловая база | Клиент-серверная база | Что нужно |
|---|---|---|---|
| Форма «Активные пользователи» | только просмотр | завершение отдельных сеансов | роль администратора в базе + пароль администратора кластера, если он задан |
| Блокировка работы пользователей | да | да | роль администратора в базе |
| Консоль кластера (MMC) | нет | да | доступ к серверу 1С, права администратора кластера |
Утилита rac | нет | да | запущенная служба ras |
| Завершение процесса на компьютере | да | да (как крайняя мера) | доступ к компьютеру или терминальному серверу |
Конфигуратор тоже показывает список подключённых (Администрирование → Активные пользователи), но завершать сеансы из него нельзя. Это только справка.
Завершение сеанса освобождает клиентскую лицензию. Несохранённые данные пользователя при этом теряются: открытый и не записанный документ останется таким, каким был до последней записи.
Как отключить сеанс пользователя из режима 1С:Предприятие
Этот способ подходит для типовых конфигураций на Библиотеке стандартных подсистем: Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Права нужны полные или административные.
Порядок действий
- Откройте раздел
Администрирование → Обслуживание. - В группе мониторинга перейдите по ссылке «Активные пользователи».
- В списке найдите сеанс. Ориентируйтесь на колонки с именем пользователя, приложением (тонкий клиент, веб-клиент, фоновое задание) и временем начала работы.
- Выделите строку и выполните команду «Завершить сеанс» в командной панели. Можно выделить несколько строк .
- Если у кластера задан администратор, программа попросит ввести параметры администрирования: имя и пароль администратора кластера. Пароль администратора информационной базы обычно подставляется из текущего сеанса.
- Обновите список и убедитесь, что строка пропала.
Если раздела «Обслуживание» в панели нет, ту же форму можно открыть через Все функции → Обработки → Активные пользователи. Пункт «Все функции» включается в настройках главного меню (Сервис и настройки → Параметры → Отображать команду «Все функции»).
Особенность файловой базы
В файловом варианте форма показывает, кто подключён, но завершить чужой сеанс из неё не получится: у файловой базы нет кластера, через который платформа может это сделать. Для файловой базы есть два пути:
- 🔒 включить блокировку работы пользователей (раздел ниже) — программа сама закроется у всех, кроме вас;
- 🖥️ закрыть процесс
1cv8c.exeили1cv8.exeна компьютере пользователя или в его сеансе на терминальном сервере.
Отключение сеансов в консоли кластера серверов 1С
Консоль кластера — это оснастка MMC «Администрирование серверов 1С:Предприятия». Она ставится вместе с сервером 1С или отдельно, компонентом «Администрирование сервера 1С:Предприятия» в установщике платформы.
Как найти и удалить сеанс
- Запустите консоль и откройте ветку
Central 1C:Enterprise 8.3 servers. - Если сервер ещё не добавлен — в контекстном меню выберите «Создать → Центральный сервер 1С:Предприятия 8.3», укажите имя компьютера и порт агента (по умолчанию 1540).
- Раскройте сервер →
Кластеры→ нужный кластер →Информационные базы→ ваша база →Сеансы. - Справа появится список сеансов этой базы. Найдите строку пользователя.
- Правой кнопкой мыши → «Удалить». Подтвердите действие.
Чтобы увидеть сеансы всех баз сразу, откройте ветку Сеансы уровнем выше, прямо под кластером. Это удобно, когда нужно найти, в какой базе сидит конкретный сотрудник.
Не путайте ветки «Сеансы» и «Соединения». Разрыв соединения не завершает сеанс: клиент через несколько секунд переподключится. Завершайте именно сеанс.
Если консоль не открывается
Самая частая причина — оснастка не зарегистрирована или зарегистрирована от другой версии платформы. Перерегистрируйте библиотеку radmin.dll той версии, которая совпадает с версией сервера. Командную строку запустите от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути замените на свой. Если на одном компьютере стоит несколько платформ, консоль будет работать только с сервером той версии, чья radmin.dll зарегистрирована последней.
Как завершить сеанс 1С командой rac
Утилита rac лежит в каталоге bin платформы и работает через сервер администрирования ras. Это способ для Linux-серверов, удалённого администрирования и скриптов.
Запуск сервера администрирования
Если служба ras ещё не установлена, её можно запустить вручную для проверки:
ras cluster --port=1545 localhost:1540
Здесь 1545 — порт, на котором ras принимает команды, 1540 — порт агента сервера 1С. Для постоянной работы ras регистрируют как службу Windows или юнит systemd.
Последовательность команд
Сначала узнайте идентификатор кластера:
rac localhost:1545 cluster list
В выводе нужна строка cluster : <uuid>. Затем посмотрите базы и сеансы:
rac localhost:1545 infobase summary list --cluster=<uuid-кластера>
rac localhost:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
У каждого сеанса в выводе есть поля session (идентификатор), user-name, app-id, host и время последней активности. Завершение одного сеанса:
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если для кластера задан администратор, добавляйте к каждой команде --cluster-user=<имя> и --cluster-pwd=<пароль>. Полный список параметров для вашей версии покажет rac help session.
Расшифровка app-id
| app-id | Что это за сеанс |
|---|---|
1CV8C | тонкий клиент |
1CV8 | толстый клиент |
WebClient | веб-клиент через браузер |
Designer | конфигуратор |
COMConnection | внешнее COM-подключение (обмены, интеграции) |
BackgroundJob | фоновое или регламентное задание |
SrvrConsole | консоль администрирования |
Сеансы BackgroundJob и COMConnection без причины не трогайте: можно оборвать обмен данными или закрытие месяца
, которое запустил регламент.
Автоматическое отключение сеансов по расписанию
Перед ночным обновлением или резервным копированием удобно выгонять всех автоматически, а не обзванивать коллег. Есть три рабочих варианта.
Вариант 1. Встроенное обновление конфигурации
Если обновляете типовую конфигурацию
через её собственный механизм установки обновлений (Администрирование → Обслуживание → Обновление версии программы), там можно запланировать установку на ночь. Программа сама установит блокировку, завершит сеансы и снимет блокировку после обновления. Отдельная автоматизация в этом случае не нужна.
Вариант 2. Скрипт с rac в Планировщике заданий
Для сервера 1С пишется короткий скрипт PowerShell, который завершает все интерактивные сеансы одной базы. Фоновые задания и консоль он не трогает:
$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$srv = "localhost:1545"
$ibName = "buh" # имя базы в кластере
$clOut = (& $rac $srv cluster list) -join "`n"
$cluster = [regex]::Match($clOut, '(?m)^cluster\s*:\s*(\S+)').Groups[1].Value
$ibOut = (& $rac $srv infobase summary list --cluster=$cluster) -join "`n"
$ib = $null
foreach ($b in ($ibOut -split "`n\s*`n")) {
if ($b -match "(?m)^name\s*:\s*$ibName\s*$") {
$ib = [regex]::Match($b, '(?m)^infobase\s*:\s*(\S+)').Groups[1].Value
}
}
if (-not $ib) { Write-Output "База $ibName не найдена"; exit 1 }
$sOut = (& $rac $srv session list --cluster=$cluster --infobase=$ib) -join "`n"
foreach ($b in ($sOut -split "`n\s*`n")) {
$sid = [regex]::Match($b, '(?m)^session\s*:\s*(\S+)').Groups[1].Value
$app = [regex]::Match($b, '(?m)^app-id\s*:\s*(\S+)').Groups[1].Value
if ($sid -and $app -in @('1CV8', '1CV8C', 'WebClient')) {
& $rac $srv session terminate --cluster=$cluster --session=$sid
Write-Output "Завершён сеанс $sid ($app)"
}
}
Скрипт добавляют в Планировщик заданий Windows на нужное время, например на 22:30 перед копированием в 23:00. Запускайте его от учётной записи, у которой есть доступ к rac.exe. Если у кластера задан администратор, допишите в каждый вызов --cluster-user и --cluster-pwd, а пароль храните не в самом скрипте.
Вариант 3. Таймауты бездействия
Для «забытых» сеансов есть параметры информационной базы в конфигураторе: Администрирование → Параметры информационной базы. Там задаются время засыпания пассивного сеанса и время завершения спящего сеанса, в секундах. Это не расписание, а страховка: сеанс, который долго ничего не делает, платформа закроет сама.
Регламентные задания внутри типовых конфигураций сеансы других пользователей не завершают. Если нужна логика «каждый день в 22:00» именно средствами 1С, это доработка через расширение с подключением к агенту кластера. Для большинства организаций скрипта из варианта 2 достаточно.
Как запретить вход в базу на время работ
Завершить сеансы мало: через минуту пользователь зайдёт снова. Поэтому перед обслуживанием вход блокируют.
Блокировка в режиме Предприятия
Администрирование → Обслуживание → Блокировка работы пользователей. В форме задаются:
- 🕒 время начала и окончания блокировки;
- 💬 сообщение, которое увидят пользователи («Идёт обновление, вход до 23:30 закрыт»);
- 🔑 код разрешения — с ним администратор сможет войти, пока база закрыта.
После установки блокировки работающие пользователи получат предупреждение, а к моменту начала блокировки программа у них закроется. Это работает и в файловом варианте. Ваш собственный сеанс останется открытым.
Войти в заблокированную базу можно с параметром запуска /UC, за которым сразу идёт код разрешения: например, /UC12345. Параметр прописывают в поле «Дополнительные параметры запуска» в настройках базы в окне запуска.
Не забудьте снять блокировку после работ — иначе утром никто не войдёт, а сообщение будет висеть до времени окончания, которое вы указали.
Блокировка в консоли кластера и через rac
В консоли откройте свойства информационной базы. Там есть флажки «Блокировка начала сеансов включена» и «Блокировка регламентных заданий включена», поля для сообщения, кода разрешения и периода блокировки. Для изменения свойств нужны имя и пароль администратора информационной базы.
Через rac блокировка ставится командой infobase update с параметрами --sessions-deny=on, --denied-message и --permission-code, плюс учётные данные базы --infobase-user и --infobase-pwd. Точные имена параметров для вашей версии сверьте по rac help infobase.
Блокировку регламентных заданий включайте на время загрузки .dt и обновления структуры. Иначе фоновое задание может стартовать посреди работ и помешать получить монопольный доступ.
Почему сеанс не отключается или висит
Бывает, что сеанс удалили, а он снова в списке. Или пользователь давно выключил компьютер, а сеанс всё ещё занимает лицензию. Разберите по симптомам:
Для разбора, что делал пользователь перед зависанием, откройте журнал регистрации (Администрирование → Обслуживание → Журнал регистрации) и отфильтруйте события по пользователю и времени. Там видно последний документ или отчёт, с которым он работал.
В файловом варианте «висящий» сеанс обычно означает живой процесс 1cv8c.exe на чьём-то компьютере или в терминальной сессии. Найдите его в Диспетчере задач на вкладке «Пользователи» и завершите. Предупредите человека: несохранённые изменения пропадут.