Отключаем активных пользователей 1С: консоль, блокировка, rac и процессы

· 10 мин

Содержание

Завершить сеанс пользователя в 1С 8.3 проще всего в консоли «Администрирование серверов 1С Предприятия»: Кластеры → ваш кластер → Информационные базы → база → Сеансы, правый клик по сеансу → Удалить. Это работает для клиент-серверной базы. В файловой базе консоли нет, там сеансы закрывают из самой программы или через процессы Windows.

Какой способ выбрать, зависит от задачи. Выкинуть одного зависшего сотрудника — хватит консоли или формы «Активные пользователи». Освободить базу под обновление — нужна блокировка начала сеансов, иначе люди тут же зайдут обратно. Регулярно чистить забытые сеансы, которые держат лицензии, — удобнее скриптом на утилите rac по расписанию.

Способы завершить работу пользователей: что когда подходит

СпособТип базыКогда выбиратьЧто теряет пользователь
Консоль кластера, Сеансы → УдалитьКлиент-сервернаяРазово отключить 1–5 человекНесохранённые данные открытых форм
Форма «Активные пользователи» в конфигурацииОбеНет доступа к серверу, но есть права администратора в базеТо же
Блокировка начала сеансовОбе (в файловой — средствами конфигурации)Обновление, исправление, выгрузка .dtПолучает предупреждение заранее, успевает сохраниться
Утилита racКлиент-сервернаяСкрипты, работа с Linux-сервером, массовые операцииТо же, что в консоли
Завершение процесса ОСОбеСеанс не удаляется штатно, процесс зависВсё несохранённое; на сервере — сеансы соседей

Штатные способы всегда идут раньше аварийных. Снятие процесса — крайняя мера.

Шаг 1. Посмотреть, кто сейчас работает в базе

Прежде чем кого-то отключать, выясните, кто в базе и что делает. Иначе можно оборвать проведение документа или закрытие месяца на середине.

В консоли администрирования кластера

  1. Запустите оснастку «Администрирование серверов 1С Предприятия» (ярлык ставится вместе с сервером 1С или отдельным компонентом установщика).
  2. Если сервер ещё не добавлен: правый клик по Central 1C:Enterprise 8.3 servers → Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя компьютера и порт агента — по умолчанию 1540.
  3. Раскройте Кластеры → ваш кластер → Информационные базы → нужная база → Сеансы.

В списке видно:

  • 👤 имя пользователя и компьютер;
  • 🧩 приложение: тонкий клиент, толстый клиент, веб-клиент, Конфигуратор, фоновое задание, COM-соединение;
  • 🕒 время начала и время последней активности;
  • 🔑 занята ли лицензия.

💡 Колонки можно добавить и отсортировать. Сортировка по «Последней активности» сразу показывает сеансы, которые висят с прошлой недели.

Если консоль не открывается

Типичная ситуация: после обновления платформы оснастка выдаёт ошибку создания объекта. Консоль работает через библиотеку radmin.dll той версии платформы, что установлена на сервере. Её нужно перерегистрировать от имени администратора:

regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll"

Подставьте номер установленной версии из папки C:\Program Files\1cv8\. Разрядность библиотеки должна совпадать с разрядностью консоли.

Внутри самой базы

Без доступа к серверу список сеансов можно посмотреть в клиенте:

  • в любой конфигурации: главное меню ☰ → Все функции → Стандартные → Активные пользователи. Режим «Все функции» включается в параметрах (☰ → Сервис → Параметры). Эта платформенная форма только показывает сеансы, завершить их не даёт;
  • в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП: Администрирование → Обслуживание (в старых релизах раздел назывался «Поддержка и обслуживание»), ссылка «Активные пользователи». Здесь сеанс уже можно завершить.

Шаг 2. Завершить сеанс конкретного пользователя

Через консоль кластера

  1. В узле Сеансы выделите сеанс. Удерживая Ctrl, можно выделить несколько.
  2. Правый клик → Удалить.
  3. Подтвердите. Если на кластере задан администратор, консоль спросит его логин и пароль.

У пользователя появится сообщение о том, что сеанс завершён администратором, и клиент закроется. Лицензия освобождается сразу.

Несохранённые изменения в открытых формах пропадут. Если в сеансе идёт длительная операция (закрытие месяца, расчёт зарплаты), транзакция откатится, и операцию придётся запускать заново. Сначала позвоните человеку.

Рядом с «Сеансами» есть узел Соединения. Разрывать соединения вместо удаления сеансов не стоит: сеанс может остаться жить и переподключиться. Работайте с сеансами.

Через форму «Активные пользователи» в БСП

  1. Откройте Администрирование → Обслуживание → Активные пользователи.
  2. Выделите строку и нажмите команду завершения сеанса в командной панели.

Чтобы форма могла управлять сеансами клиент-серверной базы, программа может запросить параметры администрирования кластера: логин и пароль администратора кластера (если он задан). Это нормально — завершение идёт через тот же сервер 1С.

💡 Свой собственный сеанс так не завершить. И форма покажет только сеансы текущей базы, а консоль — всех баз кластера.

Шаг 3. Выгнать всех и не пустить обратно: блокировка начала сеансов

Удалить сеансы мало. Бухгалтер увидит, что 1С закрылась, и откроет её снова через минуту. Перед обновлением конфигурации или загрузкой .dt базу нужно заблокировать.

Блокировка в свойствах информационной базы (клиент-сервер)

  1. В консоли: правый клик по базе → Свойства.
  2. Включите флаг «Блокировка начала сеансов включена».
  3. Заполните время начала и окончания блокировки, текст сообщения для пользователей и «Код разрешения» — любое слово, например obnov2.
  4. Если на время работ нужно остановить и регламентные задания (обмены, загрузку курсов), включите «Блокировка регламентных заданий включена».
  5. Нажмите ОК, затем удалите оставшиеся сеансы, как в шаге 2.

Новые подключения будут получать ваше сообщение. Чтобы зайти самому, добавьте к строке запуска параметр /UC с кодом разрешения:

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /UCobnov2

После работ не забудьте снять флаг блокировки. Забытая блокировка — частая причина звонков утром: «1С пишет, что база заблокирована».

Блокировка средствами конфигурации (файловая и серверная)

В конфигурациях на БСП есть своя форма: Администрирование → Обслуживание → Блокировка работы пользователей. Отметьте «Запретить работу пользователей», укажите время и сообщение, нажмите «Установить блокировку».

Чем она удобнее платформенной:

  • 📢 пользователи заранее получают предупреждение в программе, успевают сохраниться;
  • ⏳ в назначенное время программа сама завершает их сеансы;
  • 🗂 работает и в файловой базе, где консоли нет.

Для скриптов БСП поддерживает параметры запуска: /C"ЗавершитьРаботуПользователей" — установить блокировку и выгнать всех, /C"РазрешитьРаботуПользователей" — снять блокировку. Запуск выполняется под пользователем с полными правами, а вход при установленной блокировке — с тем же /UC.

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UCobnov2

Перед установкой блокировки пройдитесь по короткому списку:

Перед тем как отключить всех пользователей
Выполнено: 0 / 6

Шаг 4. Аварийно: когда сеанс не удаляется

Бывает, что после Удалить сеанс висит в списке, или пользователь «выкинут», а Конфигуратор всё равно сообщает, что база занята. Тогда спускаемся на уровень процессов.

Клиент-серверная база

Сеансы обслуживают рабочие процессы rphost.exe на сервере 1С. Каждый из них держит сеансы сразу многих пользователей.

  1. В консоли откройте Кластеры → кластер → Рабочие процессы. Видно, сколько сеансов и памяти на каждом процессе.
  2. Сначала попробуйте ещё раз удалить сеанс и подождите пару минут: если в сеансе выполнялся тяжёлый серверный вызов, он прерывается не мгновенно.
  3. Если не помогло — правый клик по рабочему процессу и выключите его, либо завершите соответствующий rphost.exe в диспетчере задач сервера (PID виден в консоли).

Завершение rphost.exe обрывает все сеансы на этом процессе, не только зависший. Делайте это, когда в базе никто не работает, или предупредите всех.

Последний вариант — перезапуск службы «Агент сервера 1С:Предприятия 8.3». Он рвёт сеансы всех баз кластера. Только в нерабочее время и только если остальное не помогло.

Файловая база

Здесь сервера нет, база — это файл 1Cv8.1CD, а «сеанс» — это процесс клиента на компьютере пользователя или терминальном сервере.

  • 🖥 Терминальный сервер : в диспетчере задач на вкладке «Пользователи» найдите нужного пользователя и завершите его процессы 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент, Конфигуратор).
  • 🌐 База в общей папке: на компьютере с базой откройте compmgmt.msc → Общие папки → Открытые файлы, найдите 1Cv8.1CD и закройте его для нужного пользователя. Так снимается файл, который держит выключенный без выхода компьютер.
  • 🔒 Если база не освобождается и после этого — проверьте, не открыта ли она фоновым процессом: обменом, загрузкой из банка, резервным копированием.

Принудительное закрытие файла во время записи может повредить базу. Перед этим убедитесь, что есть свежая копия.

Диагностика: выберите симптом

Шаг 5. Завершение сеансов из командной строки через rac

Утилита rac из папки bin платформы делает то же, что консоль, но из скрипта. Работает она через сервер администрирования ras, который надо запустить (по умолчанию слушает порт 1545).

Запуск ras как службы Windows:

sc create "1C:Enterprise 8.3 Remote Server" binpath= "\"C:\Program Files\1cv8\<версия>\bin\ras.exe\" cluster --service --port=1545 localhost:1540" displayname= "1C:Enterprise 8.3 Remote Server" start= auto
sc start "1C:Enterprise 8.3 Remote Server"

Основные команды:

rac cluster list localhost:1545
rac session list --cluster=<uuid кластера> localhost:1545
rac session list --cluster=<uuid кластера> --licenses localhost:1545
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса> localhost:1545

Если на кластере есть администратор, добавьте --cluster-user= и --cluster-pwd=. Чтобы увидеть сеансы только одной базы, узнайте её идентификатор командой rac infobase summary list --cluster=<uuid кластера> и передайте его в session list параметром --infobase=. Остальные параметры смотрите в справке rac help session.

На Linux-сервере 1С это основной способ: графической консоли там нет, а rac работает так же.

Шаг 6. Автоматически отключать забытые сеансы

Классика: сотрудник ушёл домой, не закрыв 1С. Сеанс держит лицензию, а утром новому сотруднику пишет, что лицензий не хватает. Решение — скрипт, который раз в час завершает сеансы без активности дольше заданного срока.

Пример на PowerShell. Он пропускает фоновые задания, консоль и Конфигуратор, а пользовательские сеансы без активности дольше 3 часов завершает:

$rac    = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$ras    = "localhost:1545"
$auth   = @("--cluster-user=admin", "--cluster-pwd=пароль")  # пустой массив, если администратора нет
$limit  = [TimeSpan]::FromHours(3)
$skip   = @("BackgroundJob", "SrvrConsole", "Designer", "COMConnection")

$cluster = ((& $rac cluster list $ras) | Where-Object { $_ -match '^cluster\s*:' } |
            Select-Object -First 1) -replace '^cluster\s*:\s*', ''

$text   = (& $rac session list "--cluster=$cluster" @auth $ras) -join "`n"
$blocks = $text -split "`n\s*`n"

foreach ($block in $blocks) {
    $s = @{}
    foreach ($line in $block -split "`n") {
        if ($line -match '^\s*([\w-]+)\s*:\s*(.*)$') { $s[$Matches[1]] = $Matches[2].Trim().Trim('"') }
    }
    if (-not $s['session'] -or $skip -contains $s['app-id']) { continue }

    $idle = (Get-Date) - [datetime]::Parse($s['last-active-at'])
    if ($idle -gt $limit) {
        & $rac session terminate "--cluster=$cluster" "--session=$($s['session'])" @auth $ras
        "{0:u} завершён сеанс {1} ({2}), простой {3:N0} мин" -f (Get-Date), $s['user-name'], $s['host'], $idle.TotalMinutes |
            Out-File -Append "C:\Scripts\kill_idle.log"
    }
}

Поставьте его в Планировщик заданий Windows с запуском раз в час под учётной записью, у которой есть доступ к rac.exe.

💡 Прежде чем включать завершение, прогоните скрипт с закомментированной строкой session terminate и посмотрите в логе, кого бы он отключил. Порог в 3 часа подберите под свой режим: если бухгалтерия по 4 часа сидит в одном отчёте, порог надо поднять.

Есть и встроенные средства. В свойствах информационной базы в консоли кластера свежих версий платформы есть параметры засыпания пассивного сеанса и завершения спящего сеанса: заснувший сеанс отдаёт лицензию, а по второму таймеру удаляется полностью. Значения задаются в секундах.

Автоматическое завершение тоже обрывает несохранённую работу. Сообщите сотрудникам о правиле заранее.

Частые вопросы

Освобождается ли лицензия сразу после удаления сеанса?
Да. Как только сеанс удалён в консоли или через rac, лицензия возвращается в общий пул, и следующий пользователь может войти.
Можно ли завершить сеанс, если я не администратор кластера?
Если на кластере задан администратор, без его логина и пароля консоль и rac сеанс не удалят. Пользователь 1С с полными правами может завершать сеансы через форму «Активные пользователи» только при наличии этих же параметров кластера.
Что увидит пользователь, которого отключили?
Клиент покажет сообщение о том, что сеанс завершён администратором, и закроется. Если перед этим была включена блокировка, при повторном входе он увидит ваш текст сообщения.
Почему после удаления сеанса Конфигуратор всё равно не получает монопольный доступ?
Чаще всего базу держат фоновые задания или COM-соединения обменов. Включите блокировку регламентных заданий и проверьте узел «Соединения» в консоли.
Нужно ли завершать сеансы перед резервной копией через выгрузку .dt?
Да: выгрузка информационной базы требует монопольного доступа. Для копии средствами СУБД (MS SQL, PostgreSQL) отключать пользователей не обязательно.