Принудительное завершение сеанса в 1С: из программы, консоли и командной строки
Содержание
Быстрее всего отключить активного пользователя в 1С из самой программы: откройте список активных пользователей, выделите нужный сеанс и нажмите «Завершить сеанс». В клиент-серверной базе то же самое делается в консоли администрирования кластера: база → «Сеансы» → правый клик по сеансу → «Удалить». В файловой базе принудительно выгнать человека можно только через блокировку входа или закрытием процесса на его компьютере.
Какой путь выбрать, зависит от трёх вещей: вариант базы (файловая или серверная), есть ли у вас права администратора 1С и знаете ли вы пароль администратора кластера. Способы ниже идут от мягкого к жёсткому: сначала программа, потом консоль, в крайнем случае — закрытие процесса.
1. Сначала найдите, кто именно сидит в базе
Отключать вслепую нельзя. За одним пользователем может висеть несколько сеансов: открытый клиент, Конфигуратор, фоновое задание обмена, COM-соединение внешней программы. Завершив не тот, вы оборвёте, например, загрузку банковской выписки.
Где посмотреть список сеансов:
- 📋 В программе на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) — форма «Активные пользователи». Она открывается из раздела
Администрирование → Обслуживание, а также через поиск по командам (строка поиска в шапке программы, введите «активные»). - 📋 Стандартная функция платформы —
Главное меню → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его:Главное меню → Сервис → Параметры → Отображать команду «Все функции». Эта форма только показывает список, завершать сеансы из неё нельзя. - 📋 Консоль кластера — ветка базы → «Сеансы». Здесь видно всё, включая фоновые задания.
- 📋 Конфигуратор —
Администрирование → Активные пользователи. Тоже только просмотр.
В списке смотрите на колонку с типом приложения. От неё зависит, что произойдёт после завершения.
| Приложение в списке | Что это | Можно ли завершать |
|---|---|---|
| Тонкий клиент / 1CV8C | обычная работа пользователя | да, предупредив человека |
| Толстый клиент / 1CV8 | старые формы, внешние обработки | да |
| Веб-клиент / WebClient | работа через браузер | да |
| Конфигуратор / Designer | кто-то правит конфигурацию | только после разговора: можно потерять несохранённые правки |
| COM-соединение / COMConnection | внешняя программа, обмен | да, но обмен прервётся |
| Фоновое задание / BackgroundJob | регламентное задание, длительная операция | осторожно: задание запустится снова по расписанию |
Колонка «Компьютер» показывает имя машины. Если один и тот же человек висит с трёх разных компьютеров, скорее всего, два сеанса — «зависшие» после обрыва связи. Их можно закрывать без звонка.
2. Как отключить пользователя из самой 1С
Это основной способ для бухгалтера с правами администратора в типовой конфигурации. Работает и в файловой, и в серверной базе, но по-разному.
- Откройте форму «Активные пользователи» (см. раздел выше).
- Нажмите «Обновить», чтобы список был свежим.
- Выделите сеанс. Можно выбрать несколько строк с зажатым
Ctrl. - Нажмите «Завершить сеанс».
- В серверной базе программа спросит параметры администрирования: логин и пароль администратора кластера (если он задан) и администратора информационной базы. Введите их и подтвердите.
Сеанс исчезнет из списка через несколько секунд. Пользователь увидит сообщение о разрыве соединения.
Несохранённые изменения в открытых документах у отключённого пользователя пропадут. Если человек на месте, сначала напишите или позвоните: пусть запишет документ и выйдет сам.
Если кнопка «Завершить сеанс» не работает
- 🔑 Не задан или неверен пароль администратора кластера. Программа подключается к кластеру от вашего имени. Узнайте пароль у системного администратора.
- 🔌 Нет доступа к агенту сервера. Компьютер, с которого вы работаете, должен «видеть» сервер 1С по порту 1540. Если между вами межсетевой экран, завершение сработает только на самом сервере.
- 🗂️ Файловая база. Мгновенного завершения здесь нет: программа отправляет клиенту команду закрыться, и он закрывается при следующем обращении к базе. Если клиент «завис» или компьютер выключен из сети, сеанс останется висеть — тогда смотрите раздел про файловую базу ниже.
3. Отключение сеанса в консоли администрирования серверов 1С
Консоль кластера — самый надёжный путь для клиент-серверной базы. Она работает напрямую с менеджером кластера и не зависит от того, отвечает ли сама программа.
- Запустите «Администрирование серверов 1С Предприятия» на сервере или на машине администратора.
- Раскройте
Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → кластер → Информационные базы → ваша база. - Откройте ветку «Сеансы».
- Найдите строку по колонкам «Пользователь», «Компьютер» и «Приложение».
- Правый клик → «Удалить». Подтвердите.
Если консоль просит пароль, это пароль администратора кластера, а не пользователя 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.
Запрет входа конкретному сотруднику
Нужен, если сотрудник уволился или доступ надо закрыть надолго.
Администрирование → Пользователи и права → Пользователи.- Откройте карточку пользователя.
- Снимите флажок «Вход в программу разрешен». Запишите.
- Отдельно завершите его текущий сеанс одним из способов выше.
Запрет действует со следующего входа. Уже открытый сеанс флажок не закрывает, поэтому шаг 4 обязателен.
Удалять пользователя не нужно. Под ним в базе остаются документы, история изменений и настройки. Запрета входа достаточно, а при возвращении сотрудника флажок просто ставят обратно.
Менять свойства пользователей в Конфигураторе (Администрирование → Пользователи) в типовых конфигурациях не советуем: справочник «Пользователи» в программе и список пользователей базы рассинхронизируются.
5. Файловая база: как выгнать того, кто не выходит
В файловой базе нет кластера и нет консоли. Сеанс — это просто программа на чужом компьютере, которая держит открытым файл 1Cv8.1CD. Отсюда порядок действий от мягкого к жёсткому:
- Блокировка через программу. Установите блокировку работы пользователей (раздел 4). Клиенты, которые отвечают, получат предупреждение и закроются сами в течение нескольких минут.
- Закрыть 1С на компьютере пользователя. Попросите человека выйти или подключитесь к его машине удалённо.
- Терминальный сервер
. Если база открыта на сервере терминалов:
Диспетчер задач → Пользователи→ выбрать пользователя → снять задачу1cv8.exe(или1cv8c.exe) либо выйти из его сеанса Windows. - Сетевая папка. На компьютере, где лежит база:
Управление компьютером → Общие папки → Открытые файлы→ найти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, какие сеансы их ещё держат.