Завершаем чужой сеанс в 1С 8.3: консоль кластера, блокировка, скрипты и файловая база

· 9 мин

Содержание

В клиент-серверной 1С пользователя выгоняют из консоли кластера: Информационные базы → <база> → Сеансы, правый клик по сеансу → Удалить. Если нужно, чтобы человек не зашёл обратно, сначала включают блокировку начала сеансов в свойствах базы. В файловой базе консоли нет: там работают через блокировку в режиме «Предприятие» или закрывают открытый файл 1Cv8.1CD на файловом сервере.

Выбор способа зависит от ситуации. Один зависший сеанс проще удалить вручную. Ночное обновление требует блокировки с кодом разрешения. А регулярную выгрузку перед регламентом удобнее поручить скрипту на rac или COM-соединении.

СпособКогда подходитРежим базыЧто нужно
Консоль кластераодин-два сеанса, срочноклиент-серверправа администратора кластера
Блокировка в «Предприятии»плановое обновление, все пользователиоба режимаправо «Администрирование» в базе
rac / COM-скриптрегулярно, по расписаниюклиент-сервердоступ к серверу, ras или comcntr.dll
Закрытие файла / процессафайловая база, сеанс «висит»файловыйправа на файловом или терминальном сервере

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

1. Удаление сеанса через консоль администрирования серверов 1С

Консоль кластера — основной инструмент для серверной базы. Она ставится вместе с сервером 1С и называется «Администрирование серверов 1С Предприятия».

Пошагово

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

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

Что смотреть в списке сеансов

  • 🖥️ Приложение — «Тонкий клиент», «Конфигуратор», «Фоновое задание», «COM-соединение», «Веб-клиент». Фоновые задания удалять бессмысленно: планировщик запустит их снова.
  • ⏱️ Время начала и Последняя активность — помогают отличить работающего человека от забытого окна.
  • 🔒 Захвачено СУБД и Время вызова (текущее) — ненулевые значения означают, что сеанс прямо сейчас выполняет запрос. Такой сеанс лучше не трогать, пока операция не закончится, либо понимать, что транзакция откатится.

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

У каждой базы в консоли две ветки: «Сеансы» и «Соединения». Их легко спутать.

  • 👤 Сеанс — логическая работа пользователя с базой: кто вошёл, под каким именем, какая лицензия занята. Выгоняют человека именно удалением сеанса.
  • 🔌 Соединение — сетевой канал между клиентом и рабочим процессом. У одного сеанса их может быть несколько, а у служебных подключений сеанса может не быть вовсе.

Удаляйте сеанс. К соединениям возвращайтесь, только когда сеансов уже нет, а база всё равно занята: так бывает с зависшими COM-подключениями обменов и интеграций.

Как найти нужного человека, если все под одним логином

Под одной учётной записью «Бухгалтер» могут работать трое. Тогда смотрите колонку «Компьютер»: в ней имя рабочей станции или терминального сервера. Если и она одинаковая (общий терминал), сверьте «Время начала» с тем, когда человек входил, или сравните с окном Администрирование → Обслуживание → Активные пользователи в «Предприятии»: там рядом с пользователем видны номер сеанса, компьютер и время начала работы.

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

Частая причина — не зарегистрирована библиотека консоли после обновления платформы. Регистрируют её командой от имени администратора, путь берут под установленную версию:

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

Разрядность библиотеки должна совпадать с разрядностью консоли. Если на кластере задан администратор, консоль спросит логин и пароль; без них вместо списка сеансов появится Администратор кластера не аутентифицирован.

2. Как не дать пользователю зайти обратно: блокировка сеансов

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

Блокировка в свойствах базы (консоль кластера)

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

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

Блокировка из режима «Предприятие» (БСП)

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

В форме задают:

  • 📝 текст сообщения для пользователей;
  • 🕐 время начала и окончания блокировки;
  • 🔑 код разрешения для входа администратора.

После установки блокировки программа предупреждает работающих пользователей и через несколько минут завершает их сеансы сама. Плюс этого способа — он работает и в файловой базе.

Список текущих сеансов в «Предприятии» открывается через Администрирование → Обслуживание → Активные пользователи. В клиент-серверном варианте оттуда можно завершить выделенный сеанс; программа может запросить параметры администрирования кластера.

Обработку блокировки можно вызвать без интерфейса — параметром запуска БСП /CЗавершитьРаботуПользователей. Снимают блокировку параметром /CРазрешитьРаботуПользователей. Это удобно для ночных скриптов обновления.

3. Скрипты: rac и COM-соединение для автоматизации

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

Утилита rac

rac работает через сервер администрирования ras. Его нужно запустить на сервере 1С, по умолчанию он слушает порт 1545:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ras.exe" cluster --daemon

Дальше по шагам: получить идентификатор кластера, найти базу, вывести сеансы и завершить нужный.

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

Если на кластере есть администратор, добавьте к командам --cluster-user=<имя> --cluster-pwd=<пароль>. Остальные параметры смотрите в справке rac help session.

COM-соединение (V83.COMConnector)

Второй путь — подключиться к агенту кластера из PowerShell или VBScript через comcntr.dll. Библиотеку регистрируют так же, как консоль:

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

Пример на PowerShell: завершить все сеансы пользователя «Иванов» в базе buh, кроме фоновых заданий.

$con     = New-Object -ComObject "V83.COMConnector"
$agent   = $con.ConnectAgent("tcp://srv1c:1540")
$cluster = $agent.GetClusters()[0]
$agent.Authenticate($cluster, "", "")   # логин и пароль администратора кластера

foreach ($s in $agent.GetSessions($cluster)) {
    if ($s.InfoBase.Name -eq "buh" -and $s.UserName -eq "Иванов" -and $s.AppID -ne "BackgroundJob") {
        $agent.TerminateSession($cluster, $s)
        Write-Output "Завершён сеанс $($s.SessionID) на $($s.Host)"
    }
}

Разрядность PowerShell и зарегистрированной comcntr.dll должна совпадать. Скрипт запускают из планировщика Windows под учётной записью, у которой есть доступ к серверу 1С.

ИнструментПлюсыМинусы
racработает и на Linux, не требует регистрации DLLнужен запущенный ras
COMудобно фильтровать сеансы в PowerShellтолько Windows, привязка к разрядности

4. Файловая база: монопольный режим и открытые файлы

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

Когда это мешает: Конфигуратору нужен монопольный доступ для обновления структуры базы, загрузки .dt, тестирования и исправления. Пока кто-то подключён, он сообщит, что не может установить монопольный режим.

Порядок действий

  1. Если в конфигурации есть БСП — поставьте блокировку из раздела 2. Это самый мягкий способ.
  2. Если пользователь недоступен, а окно открыто — попросите закрыть 1С или закройте её удалённо.
  3. Если база лежит на сетевой папке, откройте на файловом сервере Управление компьютером → Общие папки → Открытые файлы. Найдите 1Cv8.1CD, правый клик → Закрыть открытый файл.
  4. То же из командной строки:
openfiles /query /fo table | findstr 1Cv8.1CD
net file <ID> /close
  1. Если база работает на терминальном сервере, процесс клиента завершают для конкретного пользователя:
taskkill /IM 1cv8c.exe /FI "USERNAME eq ivanov" /F

Для толстого клиента имя процесса — 1cv8.exe.

Закрытие файла или процесса посреди записи может повредить файловую базу. Делайте это вне рабочего времени и только после того, как сделана свежая копия каталога базы. Если после такой операции база не открывается — запустите тестирование и исправление.

5. Почему сеанс не удаляется: разбор причин и сообщений

Иногда сеанс исчезает из списка и через минуту появляется снова. Или не исчезает вовсе. Ниже — что это обычно означает.

Что видитеВероятная причинаЧто делать
Сеанс возвращается сразу после удаленияпользователь переподключился или клиент с автоматическим восстановлением соединениявключить блокировку начала сеансов
Удалённый сеанс «Фоновое задание» снова в спискерегламентные задания продолжают запускатьсявключить блокировку регламентных заданий
Администратор кластера не аутентифицированна кластере задан администраторввести логин и пароль администратора кластера
Сеанс висит, «Время вызова» растётдолгий запрос или ожидание блокировки СУБДдождаться окончания или найти сеанс, который держит блокировку
Конфигуратор не получает монопольный режим, хотя в «Сеансах» пустоостались соединения (Соединения у базы), чаще COM или веб-сервиспроверить ветку «Соединения» базы и завершить источник
Файловая база занята, но никто не признаётсяпроцесс 1С остался после сбоя клиентазакрыть открытый файл на сервере или процесс на терминале

Если сеанс выполняет тяжёлую транзакцию, удаление вызывает откат. Откат длинной операции идёт не мгновенно: сеанс может ещё минуты висеть в состоянии завершения. Это нормально, не повторяйте удаление по кругу.

Крайняя мера — перезапуск рабочего процесса rphost или службы сервера 1С. Она обрывает сеансы всех пользователей всех баз на этом процессе. Её применяют только в нерабочее время и только когда точечное удаление не помогло.

6. Профилактика: таймауты спящих сеансов и порядок работы

Многие «зависшие» сеансы — это ноутбуки, которые ушли в сон с открытой 1С, или обрыв VPN. Платформа умеет закрывать такие сеансы сама.

В свойствах информационной базы в консоли кластера есть два параметра:

  • 💤 «Время засыпания пассивного сеанса» — через сколько секунд после потери связи с клиентом сеанс переходит в спящий;
  • ⏲️ «Время завершения спящего сеанса» — через сколько секунд спящий сеанс завершается и отдаёт лицензию.

Например, значения 300 и 600 означают: через 5 минут после обрыва связи сеанс уснёт, а ещё через 10 минут закроется. Подбирайте их так, чтобы короткий обрыв Wi-Fi не выкидывал людей из программы.

Что ещё помогает:

  • 📅 Регламент обновлений. Заранее объявленное окно, например с 21:00 по средам, снимает большую часть конфликтов.
  • 🔑 Код разрешения в ярлыке администратора. Добавьте /UC<код> в параметры запуска своего ярлыка, чтобы не вспоминать его при блокировке.
  • 🧾 Отдельные учётные записи. Когда несколько человек сидят под одним «Бухгалтером», невозможно понять, чей сеанс удалять.
  • 🤖 Скрипт перед обновлением. Связка «блокировка → завершение сеансов → обновление → снятие блокировки» на rac или параметрах БСП исключает ручные ошибки.
Какая у вас ситуация?

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

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