Принудительное завершение сеанса в 1С: из программы, консоли и командной строки

· 9 мин

Содержание

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

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

1. Сначала найдите, кто именно сидит в базе

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

Где посмотреть список сеансов:

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

В списке смотрите на колонку с типом приложения. От неё зависит, что произойдёт после завершения.

Приложение в спискеЧто этоМожно ли завершать
Тонкий клиент / 1CV8Cобычная работа пользователяда, предупредив человека
Толстый клиент / 1CV8старые формы, внешние обработкида
Веб-клиент / WebClientработа через браузерда
Конфигуратор / Designerкто-то правит конфигурациютолько после разговора: можно потерять несохранённые правки
COM-соединение / COMConnectionвнешняя программа, обменда, но обмен прервётся
Фоновое задание / BackgroundJobрегламентное задание, длительная операцияосторожно: задание запустится снова по расписанию

Колонка «Компьютер» показывает имя машины. Если один и тот же человек висит с трёх разных компьютеров, скорее всего, два сеанса — «зависшие» после обрыва связи. Их можно закрывать без звонка.

2. Как отключить пользователя из самой 1С

Это основной способ для бухгалтера с правами администратора в типовой конфигурации. Работает и в файловой, и в серверной базе, но по-разному.

  1. Откройте форму «Активные пользователи» (см. раздел выше).
  2. Нажмите «Обновить», чтобы список был свежим.
  3. Выделите сеанс. Можно выбрать несколько строк с зажатым Ctrl.
  4. Нажмите «Завершить сеанс».
  5. В серверной базе программа спросит параметры администрирования: логин и пароль администратора кластера (если он задан) и администратора информационной базы. Введите их и подтвердите.

Сеанс исчезнет из списка через несколько секунд. Пользователь увидит сообщение о разрыве соединения.

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

Если кнопка «Завершить сеанс» не работает

  • 🔑 Не задан или неверен пароль администратора кластера. Программа подключается к кластеру от вашего имени. Узнайте пароль у системного администратора.
  • 🔌 Нет доступа к агенту сервера. Компьютер, с которого вы работаете, должен «видеть» сервер 1С по порту 1540. Если между вами межсетевой экран, завершение сработает только на самом сервере.
  • 🗂️ Файловая база. Мгновенного завершения здесь нет: программа отправляет клиенту команду закрыться, и он закрывается при следующем обращении к базе. Если клиент «завис» или компьютер выключен из сети, сеанс останется висеть — тогда смотрите раздел про файловую базу ниже.

3. Отключение сеанса в консоли администрирования серверов 1С

Консоль кластера — самый надёжный путь для клиент-серверной базы. Она работает напрямую с менеджером кластера и не зависит от того, отвечает ли сама программа.

  1. Запустите «Администрирование серверов 1С Предприятия» на сервере или на машине администратора.
  2. Раскройте Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → кластер → Информационные базы → ваша база.
  3. Откройте ветку «Сеансы».
  4. Найдите строку по колонкам «Пользователь», «Компьютер» и «Приложение».
  5. Правый клик → «Удалить». Подтвердите.

Если консоль просит пароль, это пароль администратора кластера, а не пользователя 1С.

В той же базе есть ветка «Соединения». Удалять соединения вместо сеансов не нужно: соединение — это транспорт, клиент тут же откроет новое. Пользователя отключает именно удаление сеанса.

Через командную строку: rac

Если графической консоли нет (сервер на Linux, удалённый доступ только по SSH), используйте утилиту rac. Она лежит в папке bin установленной платформы и работает через службу сервера администрирования ras (по умолчанию порт 1545). Служба ras должна быть запущена.

Порядок команд:

# 1. Узнать UUID кластера
rac cluster list

# 2. Узнать UUID нужной базы
rac infobase summary list --cluster=<uuid-кластера>

# 3. Посмотреть сеансы этой базы
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>

# 4. Завершить нужный сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если у кластера задан администратор, добавьте к каждой команде --cluster-user=<логин> --cluster-pwd=<пароль>. Если ras запущен на другой машине, в конце команды укажите её адрес: сервер:1545.

В выводе session list ищите поля user-name, host и app-id — по ним определяете, чей сеанс. Полный список параметров смотрите в справке: rac help session.

4. Запрет входа: блокировка базы и учётной записи

Завершить сеанс мало, если человек сразу зайдёт снова. Тут два разных инструмента: блокировка всей базы (на время работ) и запрет входа конкретному пользователю.

Блокировка всей базы на время обслуживания

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

  • ⏰ время начала и окончания блокировки;
  • 💬 текст сообщения, которое увидят пользователи;
  • 🔐 код разрешения — по нему администратор может зайти в заблокированную базу.

После установки блокировки программа предупреждает всех, кто сидит в базе, и завершает их сеансы. Новые входы запрещены до окончания блокировки или до её снятия.

Чтобы войти в заблокированную базу самому, добавьте к параметрам запуска ключ /UC с кодом без пробела. Например, при коде 1234 — /UC1234. Параметр указывается в окне запуска: кнопка «Изменить» у базы → «Дополнительные параметры запуска».

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

Блокировка в консоли не завершает уже открытые сеансы, она только не пускает новые. Тех, кто уже внутри, придётся отключить вручную, как в разделе 3.

Запрет входа конкретному сотруднику

Нужен, если сотрудник уволился или доступ надо закрыть надолго.

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

Запрет действует со следующего входа. Уже открытый сеанс флажок не закрывает, поэтому шаг 4 обязателен.

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

Менять свойства пользователей в Конфигураторе (Администрирование → Пользователи) в типовых конфигурациях не советуем: справочник «Пользователи» в программе и список пользователей базы рассинхронизируются.

5. Файловая база: как выгнать того, кто не выходит

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

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

Принудительное закрытие файла или процесса во время записи может повредить базу. Делайте это, только когда остальные способы не сработали, и перед этим сохраните копию каталога базы. После такого отключения стоит запустить «Тестирование и исправление информационной базы» в Конфигураторе.

Если файловая база опубликована на веб-сервере, все её сеансы идут через процесс веб-сервера. Перезапуск службы Apache или пула IIS отключит сразу всех веб-пользователей этой публикации — учитывайте это и выбирайте время.

6. Отключение пользователей по расписанию и из скриптов

Отключать всех вручную каждую ночь перед обновлением или копией неудобно. Варианты автоматизации:

Параметры запуска БСП

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

Скрипт на rac для серверной базы

Пример для PowerShell: завершает все сеансы одной базы, например перед ночным копированием.

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

$out = & $rac session list --cluster=$cluster --infobase=$ib
$ids = $out | Select-String '^session\s+:\s+(\S+)' |
       ForEach-Object { $_.Matches[0].Groups[1].Value }

foreach ($id in $ids) {
    & $rac session terminate --cluster=$cluster --session=$id
}

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

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

Зависшие сеансы, которые никто не закрывал

Частая причина «лишних» активных пользователей — обрыв сети: клиент давно закрыт, а сеанс на сервере остался и держит лицензию. Проверить, кто занимает лицензии, можно командой rac session list --licenses. Для автоматического закрытия таких сеансов в свойствах информационной базы в консоли кластера есть параметры «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» (в секундах). Задайте их, и сервер сам освободит лицензии потерянных клиентов.

Какая у вас ситуация?

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

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