Удаление зависших соединений и сеансов 1С: консоль, rac и блокировка входа

· 10 мин

Содержание

Чтобы удалить соединение в 1С 8.3 на клиент-серверной базе, откройте «Консоль администрирования серверов 1С», раскройте Кластеры → <кластер> → Информационные базы → <база> → Сеансы, щёлкните правой кнопкой по нужному сеансу и выберите «Удалить». Соединения этого сеанса закроются вместе с ним, а лицензия освободится.

Частое заблуждение — пытаться «почистить» соединения прямо в таблицах SQL или удалять файлы базы. Так делать не нужно: сеансами и подключениями управляет кластер серверов , и все штатные способы работают через него. В файловой базе кластера нет, там подход другой — его тоже разберём.

Сеанс и соединение: что именно вы удаляете

В 1С эти два понятия часто путают, а от этого зависит, какую строку удалять.

ОбъектЧто этоГде виденЧто будет при удалении
СеансРабота одного пользователя или фонового задания с базойУзел «Сеансы» у базыПользователя «выбросит» из программы, лицензия освободится
СоединениеСетевой канал между клиентом и рабочим процессомУзел «Соединения» у базы или у рабочего процессаКанал оборвётся; сеанс либо переподключится, либо уйдёт в «спящий» режим

Практическое правило простое:

  • 👤 Пользователь «висит» в списке, держит лицензию или блокировку — удаляйте сеанс.
  • 🔌 Висит подключение без сеанса (например, от внешней программы или зависшего Конфигуратора) — разрывайте соединение.
  • 🗄️ Нужно, чтобы в базу никто не вошёл снова, — после удаления включите блокировку начала сеансов.

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

Как удалить соединение через консоль администрирования

Консоль ставится вместе с сервером 1С. В Windows её ярлык обычно лежит в меню «Пуск» рядом с сервером. Если ярлыка нет, консоль можно открыть через оснастку MMC, указав файл 1CV8 Servers.msc.

Удаление сеанса пользователя

  1. Запустите консоль. Если сервер ещё не добавлен, щёлкните правой кнопкой по «Central 1C:Enterprise 8.3 servers» → «Создать» → «Центральный сервер 1С:Предприятия 8.3» и укажите имя сервера.
  2. Раскройте Кластеры → <кластер> → Информационные базы → <нужная база> → Сеансы.
  3. В списке найдите пользователя. Смотрите на колонки «Пользователь», «Компьютер», «Приложение» и «Начало работы».
  4. Щёлкните правой кнопкой по строке и выберите «Удалить». Подтвердите действие.
  5. Обновите список (F5). Сеанс должен исчезнуть.

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

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

Разрыв соединения без сеанса

Соединения видны в узле «Соединения» у информационной базы и в узле рабочего процесса: Кластеры → <кластер> → Рабочие процессы → <процесс> → Соединения. По колонке «Приложение» легко отличить, кто держит канал: Конфигуратор, COM-соединение, веб-клиент или фоновое задание.

Если строка не исчезает после удаления сеанса, разорвите её через утилиту rac (следующий раздел) — там это делается одной командой.

Удаление сеансов и подключений через rac и ras

Консоль есть только в Windows. На Linux-сервере, а также для скриптов используют пару утилит:

  • 🖥️ ras — сервер администрирования, слушает порт 1545;
  • ⌨️ rac — консольный клиент, который подключается к ras.

Сам менеджер кластера (процесс rmngr) и агент сервера (ragent) напрямую команд не принимают: управлять ими нужно через ras/rac или консоль. Утилиты лежат в каталоге bin установленной платформы.

Шаг 1. Запустите сервер администрирования

ras cluster --daemon

В Windows без ключа --daemon окно останется открытым — это нормально, пока вы работаете. Для постоянной работы ras регистрируют как службу.

Шаг 2. Узнайте идентификаторы кластера и базы

rac cluster list
rac infobase summary list --cluster=<uuid-кластера>

Из первого вывода берите значение cluster, из второго — infobase нужной базы.

Шаг 3. Найдите и удалите сеанс

rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Шаг 4. Разорвите отдельное соединение

rac connection list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac connection disconnect --cluster=<uuid-кластера> --process=<uuid-процесса> --connection=<uuid-соединения>

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

Полный список подкоманд и параметров для вашей версии платформы покажет rac help и, например, rac help session.

Зависшие сеансы в файловой базе и сброс блокировок

В файловом варианте нет ни консоли, ни rac. Каждый пользователь открывает файл 1Cv8.1CD напрямую по сети, поэтому «соединение» — это просто открытый файл.

Что делать по порядку

  1. Попросите пользователей закрыть 1С. Список работающих можно посмотреть в самой программе: в конфигурациях на БСП — Администрирование → Обслуживание → Активные пользователи, в Конфигураторе — Администрирование → Активные пользователи.
  2. Если человек недоступен, завершите процесс 1cv8.exe или 1cv8c.exe на его компьютере через Диспетчер задач.
  3. Если компьютер выключен, а база всё равно «занята», закройте открытый файл на сервере, где лежит папка базы: Управление компьютером → Общие папки → Открытые файлы, найдите 1Cv8.1CD и выберите «Закрыть открытый файл».
  4. Проверьте, не остался ли в папке базы файл блокировки 1Cv8.1CL. Когда все пользователи вышли, его можно удалить — при следующем входе он создастся заново.

Перед удалением файла блокировки и закрытием открытых файлов сделайте копию папки базы. Закрывайте файл только когда в базе точно никто не работает: обрыв записи посреди транзакции может повредить 1Cv8.1CD.

Нужно ли чистить таблицы базы

В клиент-серверной базе управляемые блокировки хранятся в памяти кластера, а не в таблицах СУБД. Удалили сеанс — его блокировки снялись. Править служебные таблицы SQL вручную нельзя: это верный путь к повреждённой базе.

Если сеансы «воскресают» после удаления или кластер показывает сеансы давно выключенных компьютеров, помогает очистка сеансовых данных сервера. Для этого останавливают службу «Агент сервера 1С:Предприятия 8.3» и удаляют каталоги snccntx* в папке кластера внутри srvinfo.

Остановка службы сервера 1С обрывает работу всех пользователей всех баз на этом сервере. Делайте это только в нерабочее время и после предупреждения. Файл 1CV8Clst.lst и папки с данными баз не трогайте.

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

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

Способ 1. В свойствах базы в консоли

Откройте свойства базы (Информационные базы → <база> → Свойства) и заполните:

  • ✅ «Блокировка начала сеансов включена» — флажок;
  • 🕒 начало и конец блокировки;
  • 💬 сообщение для пользователей;
  • 🔑 «Код разрешения» — придумайте строку, например upd2510.

С кодом разрешения вы сами сможете войти, добавив в строку запуска параметр /UCupd2510.

Способ 2. Из самой программы (конфигурации на БСП)

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

Способ 3. Параметром запуска

Для скриптов удобно запускать базу с параметром:

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

Снять блокировку — тот же запуск с /C"РазрешитьРаботуПользователей". Это работает только в конфигурациях на БСП.

Какая у вас ситуация с соединением?

Ограничения и лимиты подключений к серверу 1С

Часть проблем с «лишними» соединениями решается настройкой, а не ручным удалением.

ПараметрГде задаётсяЧто даёт
Время засыпания пассивного сеансаСвойства информационной базыСеанс без активности переходит в «спящий» и освобождает ресурсы
Время завершения спящего сеансаСвойства информационной базыСпящий сеанс через заданное время удаляется автоматически
Количество ИБ на процесс, количество соединений на процессСвойства рабочего сервераРаспределяет подключения между рабочими процессами
Допустимый объём памяти рабочих процессовСвойства рабочего сервераПроцесс, «съевший» память, перезапускается, а не тормозит всех
Блокировка регламентных заданийСвойства информационной базыФоновые задания не открывают новые сеансы

Время засыпания и завершения задают в секундах. Например, 1200 и 28800 значат: через 20 минут простоя сеанс «засыпает», а через 8 часов в спящем состоянии удаляется.

Спящий сеанс не держит клиентскую лицензию. Поэтому настройка этих двух параметров часто снимает жалобы «нет свободных лицензий» без всякого ручного удаления.

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

Почему соединения с базой 1С зависают

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

  • 🔌 Обрыв сети или выключенный компьютер. Клиент не успел сообщить серверу о выходе, сеанс висит до таймаута.
  • 🧩 Внешняя программа через COM-соединение. Обработка обмена или сайт открыли соединение и не закрыли его. В колонке «Приложение» видно «COM-соединение».
  • ⏰ Зависшее фоновое или регламентное задание. Например, долгий обмен или пересчёт итогов.
  • 🌐 Веб-публикация. Веб-сервер держит сеансы веб-клиента и HTTP-сервисов, пока пул приложений жив.
  • 🔒 Долгая транзакция. Пользователь запустил тяжёлое проведение, сеанс держит блокировки, остальные ждут.
  • 🛠️ Конфигуратор, оставленный открытым. Сам по себе он не захватывает базу монопольно, но мешает, когда для операции нужен монопольный режим.

Как найти виновника

  1. В консоли в списке сеансов отсортируйте по колонке последней активности: давно неактивные — первые кандидаты.
  2. Посмотрите колонку «Приложение»: фоновые задания и COM-соединения сразу видны.
  3. Колонки про блокировки и время работы в СУБД покажут, кто держит данные и мешает остальным.
  4. Сверьтесь с журналом регистрации базы (в программе на БСП — Администрирование → Обслуживание → Журнал регистрации): отбор по пользователю и времени покажет, что он делал последним.

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

Автоматический контроль активных сессий

Ручное удаление годится раз в неделю. Если зависания регулярны, настройте скрипт и запускайте его Планировщиком заданий Windows, например каждую ночь в 02:00.

Пример на PowerShell: удаляет в выбранной базе все сеансы Конфигуратора и COM-соединений. Замените пути и идентификаторы на свои.

$rac = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$cluster = "<uuid-кластера>"
$ib = "<uuid-базы>"

$out = & $rac session list --cluster=$cluster --infobase=$ib
$sessions = @()
$cur = @{}
foreach ($line in $out) {
    if ($line.Trim() -eq "") {
        if ($cur.Count) { $sessions += [pscustomobject]$cur; $cur = @{} }
        continue
    }
    $k, $v = $line -split ":", 2
    $cur[$k.Trim()] = $v.Trim()
}
if ($cur.Count) { $sessions += [pscustomobject]$cur }

$sessions | Where-Object { $_."app-id" -in @("Designer", "COMConnection") } | ForEach-Object {
    & $rac session terminate --cluster=$cluster --session=$($_.session)
    Write-Output "Удалён сеанс $($_.session) ($($_."user-name"), $($_."app-id"))"
}

Перед боевым запуском закомментируйте строку с terminate и посмотрите, какие сеансы скрипт выберет. Набор полей вывода у разных версий платформы может отличаться — сверьте с реальным выводом rac session list.

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

Кроме скрипта, для контроля полезны:

  • 📊 периодическая выгрузка rac session list в файл — видно, сколько сеансов в пике;
  • 📩 уведомление администратору, если сеансов больше, чем лицензий;
  • 🧾 технологический журнал сервера — если нужно разобраться в причине частых разрывов.

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

Освободится ли лицензия сразу после удаления сеанса?
Да, клиентская лицензия освобождается в момент завершения сеанса. Обновите список в консоли — счётчик лицензий уменьшится.
Пользователь потеряет данные, если удалить его сеанс?
Несохранённые изменения в открытых формах пропадут, незавершённая транзакция откатится. Уже записанные документы останутся.
Почему после удаления сеанс появился снова?
Его открыл источник заново: фоновое задание, внешняя программа по COM, веб-сервер или сам пользователь. Найдите источник по колонке «Приложение» и включите блокировку начала сеансов.
Можно ли удалить чужой сеанс без прав администратора кластера?
Если администратор кластера задан, нет. Обычный пользователь базы может только завершить свою работу или, в программе на БСП с полными правами, включить блокировку работы пользователей.
Как удалить соединение, если консоль не открывается?
Используйте rac с любого компьютера, где установлена платформа, указав адрес сервера администрирования: rac server:1545 cluster list. Сервер ras должен быть запущен.