Выгоняем всех из базы: сеансы, блокировка входа и RAC на сервере 1С

· 10 мин

Содержание

Чтобы отключить пользователей от сервера 1С, откройте консоль Администрирование серверов 1С Предприятия, найдите базу в ветке Информационные базы, раскройте узел Сеансы, выделите сеансы и выберите в контекстном меню Удалить. Чтобы никто не зашёл обратно, в свойствах базы включите Блокировка начала сеансов включена и задайте код разрешения. Без консоли то же самое делает утилита командной строки rac.

Всё это работает только в клиент-серверном варианте 1С 8.3, где базы крутятся на кластере серверов. Для файловой базы консоли и rac нет: там пользователей отключают средствами самой конфигурации, об этом ниже.

Что сделать до того, как рвать сеансы

Принудительное завершение сеанса — это выдернутый шнур. Документ, который человек вводил, не сохранится. Если в этот момент шла запись в базу, транзакция откатится, но работа пользователя пропадёт.

Перед отключением пройдитесь по короткому списку:

  • 📣 Предупредите людей. Письмо или сообщение в рабочий чат за 15–30 минут: «В 19:00 база закрывается на обновление, сохраните документы».
  • 🔍 Посмотрите, кто внутри. Список сеансов покажет пользователя, компьютер и тип приложения. Иногда «висит» один бухгалтер, которому проще позвонить.
  • ⏳ Проверьте фоновые задания. Если идёт закрытие месяца или большой обмен, обрыв сеанса фонового задания прервёт расчёт, и его придётся запускать заново.
  • 🔑 Узнайте пароль администратора кластера. Если он задан, без него ни консоль, ни rac не дадут удалить сеанс.
  • 💾 Сделайте резервную копию, если после отключения пойдёт обновление конфигурации или загрузка .dt.

Порядок важен: сначала блокировка входа, потом удаление сеансов. Иначе пока вы чистите список, пользователи успеют зайти снова — особенно если у них настроен автоматический перезапуск клиента.

Кто такие «пользователи» в списке сеансов

В списке сеансов не только люди. Колонка Приложение (в rac — поле app-id) показывает, что именно подключено:

Значение app-idЧто это
1CV8CТонкий клиент
1CV8Толстый клиент
WebClientВеб-клиент через браузер
DesignerКонфигуратор
BackgroundJobФоновое или регламентное задание
COMConnectionВнешнее COM-соединение (обработки, интеграции)
SrvrConsoleСама консоль администрирования
WSConnection, HTTPServiceConnectionОбращения к веб-сервисам и HTTP-сервисам базы

Свой сеанс консоли удалять не нужно. Сеансы фоновых заданий удаляйте после того, как выключите регламентные задания, иначе планировщик тут же создаст новые.

Отключение пользователей в консоли администрирования серверов

Консоль ставится вместе с платформой, компонентом «Администрирование сервера 1С:Предприятия». Эта оснастка MMC работает не через RAS, а напрямую через агент сервера, порт 1540. Поэтому запускать её можно с любого компьютера, где стоит платформа той же версии, что и сервер.

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

Самая частая причина — после установки или обновления платформы не зарегистрирована библиотека radmin.dll. Оснастка открывается пустой или с ошибкой создания объекта. Лечится перерегистрацией из командной строки, запущенной от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"

Подставьте номер версии из своей папки C:\Program Files\1cv8\. Версия radmin.dll должна совпадать с версией сервера. Если на компьютере несколько платформ, зарегистрируйте библиотеку именно от той, что стоит на сервере.

Пошагово: завершить сеансы одной базы

  1. Откройте Администрирование серверов 1С Предприятия из меню «Пуск».
  2. В дереве раскройте Central 1C:Enterprise 8.3 servers. Если сервера там нет, щёлкните правой кнопкой → Создать → Центральный сервер 1С:Предприятия 8.3 и укажите имя компьютера.
  3. Раскройте сервер → Кластеры → ваш кластер (по умолчанию называется Локальный кластер и висит на порту 1541).
  4. Раскройте Информационные базы → нужную базу → Сеансы.
  5. Выделите строки. Для группового выделения работают Shift и Ctrl.
  6. Правая кнопка → Удалить. Подтвердите.

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

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

Не путайте «Сеансы» и «Соединения». Удаление соединения рвёт сетевой канал, но сеанс может остаться и продолжить держать лицензию и блокировки. Завершают работу пользователя именно через сеансы.

Отключение сеансов через утилиту rac

rac — консольный клиент сервера администрирования (RAS). Он нужен, когда нет графической консоли, сервер на Linux или отключение надо встроить в скрипт.

Запуск службы RAS

rac не работает с агентом напрямую — он обращается к RAS, который по умолчанию слушает порт 1545. На Windows RAS обычно регистрируют службой:

sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto DisplayName= "1C:Enterprise 8.3 Remote Server"
sc start "1C:Enterprise 8.3 Remote Server"

На Linux достаточно запустить его демоном:

/opt/1cv8/x86_64/8.3.xx.xxxx/ras cluster --daemon

Пошагово: найти и завершить сеанс

Все идентификаторы в rac — это GUID. Цепочка всегда одна: кластер → база → сеанс.

Шаг 1. Узнать ID кластера.

rac cluster list localhost:1545

Скопируйте значение поля cluster.

Шаг 2. Узнать ID базы.

rac infobase summary list --cluster=<ID кластера> localhost:1545

Если на кластере задан администратор, к каждой команде добавляйте --cluster-user=<имя> --cluster-pwd=<пароль>.

Шаг 3. Посмотреть сеансы базы.

rac session list --cluster=<ID кластера> --infobase=<ID базы> localhost:1545

В выводе ищите поля session (это ID для завершения), user-name, host, app-id и last-active-at.

Шаг 4. Завершить нужный сеанс.

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

Команда завершает один сеанс за вызов. Чтобы выгнать всех, нужен цикл — готовый скрипт есть в разделе про автоматизацию. Полный список ключей конкретной версии смотрите через rac help session.

Чтобы видеть, какие сеансы держат лицензии, добавьте к списку ключ --licenses: rac session list --cluster=<ID> --licenses localhost:1545.

Как закрыть вход в базу на время работ

Удалённые сеансы ничего не стоят, если люди тут же зайдут обратно. Поэтому для обновлений и обслуживания базу блокируют.

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

В консоли: правая кнопка на базе → Свойства. Там есть всё нужное:

ПолеЧто указать
Блокировка начала сеансов включенаФлажок — главный выключатель
Начало и КонецИнтервал блокировки; пустые поля — блокировка сразу и бессрочно
СообщениеТекст, который увидит пользователь при попытке входа
Код разрешенияКод, с которым администратор всё же войдёт в базу
Блокировка регламентных заданий включенаФлажок, чтобы планировщик не запускал фоновые задания

Для изменения свойств консоль запросит логин и пароль администратора информационной базы — пользователя 1С с полными правами.

Войти в заблокированную базу администратор может с параметром запуска /UC<код>. Например, если код разрешения 7531, то в свойствах базы в окне запуска в поле «Дополнительные параметры запуска» пишут /UC7531.

То же самое через rac

rac infobase update --cluster=<ID кластера> --infobase=<ID базы> ^
  --infobase-user=Администратор --infobase-pwd=<пароль> ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="База закрыта на обновление до 21:00" ^
  --permission-code=7531 localhost:1545

После работ снимите блокировку той же командой с --sessions-deny=off --scheduled-jobs-deny=off. Не забудьте вернуть регламентные задания: забытый флажок означает, что неделю не будут загружаться курсы валют, банковские выписки и обмены.

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

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

Как это работает:

  1. Указываете время начала и окончания блокировки, текст сообщения и код разрешения.
  2. Нажимаете «Установить блокировку».
  3. Работающие пользователи получают предупреждение, а затем программа сама завершает их сеансы.

Для файловой базы это основной способ отключить пользователей: консоли сервера там нет.

Ту же блокировку можно поставить из пакетного запуска, без интерактивного входа. Типовые конфигурации понимают параметры запуска /C ЗавершитьРаботуПользователей и /C РазрешитьРаботуПользователей:

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

Блокировка из конфигурации и блокировка в консоли — одна и та же блокировка сеансов базы. Если вы ставили её в консоли, а снимаете в программе (или наоборот), проверьте результат в свойствах базы.

Какой способ выбрать

СпособКогда подходитОграничения
Консоль кластераРазовое отключение, админ работает на сервереНужна консоль той же версии и radmin.dll
racLinux, скрипты, ночные регламентыНужен запущенный RAS
Обработка в конфигурацииНет доступа к серверу, файловая базаНужны права администратора в 1С, база должна открываться

Почему сеанс не удаляется или висит часами

Бывает, что сеанс после Удалить остаётся в списке или пользователь давно ушёл домой, а его сеанс всё ещё «активен». Причины разные, и лечатся они по-разному.

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

Что смотреть в свойствах сеанса

В rac session list и в колонках консоли есть поля, которые сразу объясняют, чем занят сеанс:

  • ⏱ last-active-at — время последней активности. Сеанс «тонкого клиента» без активности с утра почти наверняка брошен.
  • 🔒 blocked-by-dbms и blocked-by-ls — сеанс ждёт блокировку СУБД или управляемую блокировку 1С. Ненулевое значение говорит, что он сам кого-то ждёт.
  • 🧮 db-proc-took и db-proc-info — длительность и описание текущего вызова СУБД. Если там тикают минуты, сеанс занят запросом, а не завис.
  • 🛌 hibernate — сеанс «спит»: клиент отключился, а сервер держит контекст на случай возврата.

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

Крайняя мера — перезапуск рабочего процесса

Если сеанс так и не удаляется, остаётся перезапустить рабочий процесс rphost, в котором он живёт, или службу сервера 1С целиком.

Перезапуск рабочего процесса или службы обрывает ВСЕ сеансы на нём, в том числе в других базах этого кластера. Делайте это вне рабочего времени или после блокировки входа во все базы процесса.

Как автоматизировать очистку неактивных сеансов

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

Пример на PowerShell. Он завершает сеансы тонкого, толстого и веб-клиента, неактивные более трёх часов, и не трогает конфигуратор, фоновые задания и интеграции:

$rac  = "C:\Program Files\1cv8\8.3.xx.xxxx\bin\rac.exe"
$ras  = "localhost:1545"
$auth = @()   # если есть админ кластера: @("--cluster-user=admin", "--cluster-pwd=пароль")
$idleHours = 3
$apps = @("1CV8C", "1CV8", "WebClient")

function Parse-Rac($lines) {
    $result = @(); $cur = @{}
    foreach ($l in $lines) {
        if ($l.Trim() -eq "") {
            if ($cur.Count) { $result += [pscustomobject]$cur; $cur = @{} }
            continue
        }
        $k, $v = $l -split ":", 2
        $cur[$k.Trim()] = $v.Trim()
    }
    if ($cur.Count) { $result += [pscustomobject]$cur }
    return $result
}

$cluster = (Parse-Rac (& $rac cluster list $ras) | Select-Object -First 1).cluster
$limit   = (Get-Date).AddHours(-$idleHours)
$sessions = Parse-Rac (& $rac session list "--cluster=$cluster" @auth $ras)

foreach ($s in $sessions) {
    $lastActive = [datetime]::Parse($s.'last-active-at')
    if ($apps -contains $s.'app-id' -and $lastActive -lt $limit) {
        & $rac session terminate "--cluster=$cluster" "--session=$($s.session)" @auth $ras
        "{0}  {1}  {2}  {3}" -f (Get-Date), $s.'user-name', $s.host, $s.'last-active-at' |
            Add-Content "C:\Scripts\1c-idle-sessions.log"
    }
}

Как запустить по расписанию:

  1. Сохраните скрипт, например, в C:\Scripts\kill-idle.ps1.
  2. Откройте «Планировщик заданий» Windows → «Создать задачу».
  3. Триггер — ежедневно, например в 23:30.
  4. Действие — программа powershell.exe с аргументами -ExecutionPolicy Bypass -File C:\Scripts\kill-idle.ps1.
  5. Запуск от учётной записи, у которой есть доступ к папке платформы.

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

Для обновления по ночам скрипт расширяют: сначала rac infobase update с --sessions-deny=on, затем цикл завершения всех клиентских сеансов, затем само обновление, и в конце снятие блокировки.

На Linux логика та же: rac лежит в /opt/1cv8/x86_64/<версия>/, а расписание задают через cron.

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

Можно ли отключить пользователей от сервера 1С без пароля администратора кластера?
Нет. Если администратор кластера задан, консоль и rac требуют его логин и пароль. Если пароль потерян, обратитесь к тому, кто настраивал сервер, или восстановите настройки кластера из резервной копии при остановленной службе.
Удаление сеанса освобождает лицензию сразу?
Да, клиентская лицензия освобождается вместе с сеансом. Если сеанс не исчез из списка, лицензия остаётся занятой.
Что увидит пользователь, когда его сеанс завершат?
Сообщение о том, что сеанс завершён администратором, после чего клиент закроется или предложит перезапуск. Несохранённые данные открытых форм пропадут.
Нужен ли монопольный режим, чтобы обновить базу?
Для обновления конфигурации базы данных с изменением структуры — да, поэтому перед ним блокируют вход и завершают все сеансы. Для простого просмотра или выгрузки отчётов отключать людей не нужно.
Как войти в базу, если блокировка включена?
Запустите 1С с параметром /UC и кодом разрешения, заданным при блокировке, например /UC7531. Без кода войти не получится даже администратору.