Отключаем зависшего пользователя от базы 1С: из программы, консоли сервера и командной строки
Содержание
Закончить сеанс пользователя в 1С быстрее всего так: в клиент-серверной базе откройте Консоль администрирования серверов 1С:Предприятия, найдите базу, ветку Сеансы, выделите строку пользователя и выполните Удалить. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) то же делается прямо из программы: Администрирование → Обслуживание → Активные пользователи, команда завершения сеанса.
Повод обычно один: нужно обновить конфигурацию , а база «занята», или лицензий не хватает, потому что кто-то ушёл домой с открытой программой. Для серверных и файловых баз способы разные, и начинать всегда стоит с самого мягкого — предупреждения и блокировки, а не с удаления процесса.
Кто сейчас в базе: проверяем активные подключения
Прежде чем завершать сеанс, посмотрите, кто именно подключён и что делает. Иначе легко «выбить» бухгалтера посреди закрытия месяца или прервать обмен с сайтом.
Где смотреть список:
- 🖥 Из программы —
Администрирование → Обслуживание → Активные пользователи(в конфигурациях на БСП). - 🧰 Платформенная форма —
Функции для технического специалиста → Стандартные → Активные пользователи. Работает в любой конфигурации, но только показывает список, завершать сеансы из неё нельзя. - 🗄 Консоль кластера — ветка базы
Сеансы: самый подробный вид с компьютером, приложением и временем последней активности.
Как читать колонку «Приложение» в консоли:
| Значение | Что это | Можно ли завершать |
|---|---|---|
1CV8C | Тонкий клиент | Да, пользователь потеряет несохранённые данные открытых форм |
1CV8 | Толстый клиент | Да, с тем же риском |
WebClient | Работа через браузер | Да |
Designer | Конфигуратор | Только после разговора с разработчиком: несохранённые изменения пропадут |
BackgroundJob | Фоновое или регламентное задание | Осторожно: задание прервётся, данные его транзакции откатятся |
COMConnection | Внешнее подключение (обмен, интеграция) | Осторожно: оборвётся обмен |
SrvrConsole | Сама консоль администрирования | Не нужно |
Сравните «Время начала» и «Последняя активность». Если сеанс начат вчера, а последней активности не было несколько часов — это почти наверняка забытый или зависший клиент.
Если у сеанса заполнены колонки про блокировки и захват СУБД, он прямо сейчас держит данные. Такой сеанс лучше не трогать пару минут: возможно, идёт проведение большого документа.
Завершение сеанса пользователя 1С из самой программы
Этот способ не требует доступа к серверу. Нужны права администратора в информационной базе.
Один конкретный пользователь
- Откройте
Администрирование → Обслуживание → Активные пользователи. - Выделите строку нужного сеанса. Ориентируйтесь на имя пользователя и компьютер: у одного человека может быть два сеанса — например, клиент и конфигуратор.
- Нажмите команду завершения сеанса в командной панели формы. Если её не видно, откройте меню
Ещё— там тот же список команд. - Подтвердите действие. Через несколько секунд обновите список: строка должна исчезнуть.
В клиент-серверном варианте программа может запросить параметры администрирования кластера (логин и пароль администратора кластера), если они заданы. Без них завершить чужой сеанс не получится.
Все пользователи сразу: блокировка работы
Когда нужно освободить базу целиком — например, под обновление, — удобнее не выбивать людей по одному, а включить блокировку.
- Откройте
Администрирование → Обслуживаниеи найдите команду блокировки работы пользователей (в БП 3.0 —Блокировка работы пользователей). - Заполните сообщение, которое увидят пользователи: «Обновление базы с 19:00, сохраните документы».
- Укажите время начала и окончания блокировки.
- Задайте код разрешения — короткое слово, по которому вы сами сможете войти, пока база закрыта.
- Установите блокировку.
Пользователи получат предупреждение и несколько минут на сохранение работы, затем сеансы завершатся. Новые входы будут отклоняться с вашим сообщением.
Войти администратору во время блокировки можно с параметром запуска /UC и кодом разрешения:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /UCобновление
После работ блокировку обязательно снимите в той же форме. Забытая блокировка — частая причина звонков утром: «база пишет, что работа запрещена».
Для БСП-конфигураций есть и запуск «одной строкой» из командной строки: параметр /C"ЗавершитьРаботуПользователей" включает блокировку и выгоняет пользователей, /C"РазрешитьРаботуПользователей" снимает её. Это пригодится для скриптов обновления.
Как закончить сеанс 1С через консоль кластера серверов
Консоль — основной инструмент администратора серверной базы. Она видит все сеансы, в том числе фоновые задания и зависшие подключения, которые из программы не разглядеть.
Пошагово
- Запустите Администрирование серверов 1С Предприятия (оснастка устанавливается вместе с сервером, на других компьютерах — отдельным компонентом).
- Раскройте
Central 1C:Enterprise 8.3 servers→ имя сервера →Кластеры→ кластер →Информационные базы→ ваша база. - Если кластер защищён, консоль спросит логин и пароль администратора кластера. Затем, возможно, — администратора информационной базы.
- Откройте ветку
Сеансы. - Выделите один или несколько сеансов (с
CtrlилиShift), правой кнопкой —Удалить. - Подтвердите. Обновите список клавишей
F5.
Лицензия, которую занимал сеанс, освобождается сразу после его завершения.
Закрыть вход новым пользователям
В свойствах информационной базы в консоли (правой кнопкой по базе → Свойства) есть флажок «Блокировка начала сеансов включена». Рядом поля начала и конца блокировки, сообщения и кода разрешения. Работает так же, как блокировка из программы, но не зависит от конфигурации.
Там же отдельный флажок «Блокировка регламентных заданий включена». Его ставят перед обновлением, чтобы фоновые задания не стартовали заново, пока вы работаете.
Порядок перед обновлением серверной базы: включить блокировку регламентных заданий → включить блокировку начала сеансов → удалить оставшиеся сеансы → обновить → снять обе блокировки.
Сеанс и соединение — не одно и то же
В ветке Рабочие процессы у каждого процесса есть список Соединения. Удалить соединение — не то же, что удалить сеанс: тонкий клиент может переподключиться и продолжить работу в том же сеансе. Если цель — отключить человека от базы, удаляйте именно сеанс.
Рабочий процесс целиком не завершайте: на нём работают сеансы многих пользователей и других баз. Это крайняя мера, только при массовом зависании и после предупреждения всех, кто подключён к серверу.
Если консоли нет под рукой: утилита rac
На сервере без графического интерфейса (или в скрипте) используйте rac — утилиту командной строки. Она общается с сервером администрирования ras, который должен быть запущен (по умолчанию слушает порт 1545).
Запустить ras вручную на сервере:
"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe" cluster --daemon localhost:1540
Номер версии в пути замените на свой. Для постоянной работы ras регистрируют службой Windows.
Дальше — три команды:
:: 1. Идентификатор кластера
rac localhost:1545 cluster list
:: 2. Список сеансов кластера (cluster — из первой команды)
rac localhost:1545 session list --cluster=<uuid-кластера>
:: 3. Завершить конкретный сеанс
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере заданы администраторы, добавьте к командам 2 и 3 параметры --cluster-user= и --cluster-pwd=. Список сеансов можно ограничить одной базой параметром --infobase=, а идентификатор базы получить командой rac localhost:1545 infobase summary list --cluster=<uuid-кластера>.
Остальные параметры смотрите в справке: rac help session.
Отключение пользователя от файловой базы 1С
У файловой базы нет кластера и консоли. Сеанс живёт внутри процесса программы на компьютере пользователя, а сам файл 1Cv8.1CD открыт по сети. Поэтому способы другие.
Мягко: блокировка из программы
Блокировка работы пользователей в БСП-конфигурациях работает и в файловом режиме. Пользователи получают предупреждение, и программа сама закрывается по истечении времени. Это первое, что стоит попробовать.
Ограничение: если программа у человека зависла намертво или компьютер «уснул», команда до клиента не дойдёт.
Жёстко: завершить процесс 1С
Где запущен клиент, там его и закрывают.
- 💻 На компьютере пользователя —
Диспетчер задач, процесс1cv8c.exe(тонкий клиент) или1cv8.exe(толстый клиент и конфигуратор),Снять задачу. - 🖧 На терминальном сервере —
Диспетчер задач → Пользователи, выбрать человека и завершить его процесс 1С. Или командой:
:: процессы 1С конкретного пользователя терминального сервера
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanov"
Ещё жёстче: закрыть открытый файл базы
Если неясно, с какого компьютера держат базу, посмотрите на сервере, где лежит папка с базой: Управление компьютером → Общие папки → Открытые файлы. Там видно, какой пользователь Windows открыл 1Cv8.1CD. Правой кнопкой — Закрыть открытый файл.
Принудительное закрытие файла во время записи может повредить базу. Делайте это, только когда пользователь точно ничего не проводит, и только при наличии свежей резервной копии.
Не удаляйте файлы из папки базы, кроме тех, назначение которых точно знаете. Рядом с 1Cv8.1CD лежат служебные файлы, и удаление «на всякий случай» может стоить базы.
Почему сеансы зависают и что делать со спящими сеансами
Зависший сеанс — это сеанс, который сервер считает живым, хотя человек давно не работает . Причины:
- 🔌 Обрыв сети или VPN. Клиент пропал, а сервер ещё держит сеанс, ожидая переподключения.
- 💤 Ноутбук ушёл в сон с открытой программой.
- 🪟 Программу закрыли через диспетчер задач или выключили компьютер кнопкой.
- ⏳ Долгая операция: закрытие месяца , перепроведение, большой отчёт. Сеанс не завис, он работает — проверьте колонки блокировок в консоли.
- 🔁 Зависшее фоновое задание обмена или загрузки, которое не может закончить транзакцию.
Спящие сеансы
Сеанс, у которого пропало соединение с клиентом, становится спящим — в консоли это видно по отдельной колонке. Спящий сеанс сохраняет состояние, чтобы клиент мог переподключиться и продолжить работу без потери данных.
У информационной базы есть два параметра на этот счёт:
- время засыпания пассивного сеанса — через сколько секунд без связи с клиентом сеанс уходит в сон;
- время завершения спящего сеанса — через сколько секунд спящий сеанс завершается окончательно.
Значения задают в конфигураторе: Администрирование → Параметры информационной базы. Если поставить слишком короткое время завершения, пользователи с нестабильным интернетом будут терять несохранённые документы при каждом обрыве. Слишком длинное — сеансы будут копиться и занимать лицензии.
Автоматическая очистка неактивных сеансов 1С
Если зависшие сеансы — регулярная история, автоматизируйте уборку. Три уровня, от простого к сложному.
1. Настройки платформы
Начните с параметров спящих сеансов из предыдущего раздела. Для многих организаций этого достаточно: брошенные сеансы гаснут сами, без скриптов.
2. Скрипт на rac по расписанию
Для ночной очистки перед регламентом удобно связать rac с Планировщиком заданий Windows. Пример на PowerShell завершает все сеансы тонкого и толстого клиента одной базы. Конфигураторы и фоновые задания он не трогает.
$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$server = "localhost:1545"
$ibName = "buh"
$cluster = ((& $rac $server cluster list) -match '^cluster\s*:' | Select-Object -First 1) -replace '^cluster\s*:\s*',''
$ibBlock = (& $rac $server infobase summary list --cluster=$cluster) -join "`n"
$ib = ([regex]::Matches($ibBlock, "infobase\s*:\s*(\S+)\s*\nname\s*:\s*$ibName\b") | Select-Object -First 1).Groups[1].Value
$sessions = (& $rac $server session list --cluster=$cluster --infobase=$ib) -join "`n"
foreach ($block in ($sessions -split "`n`n")) {
if ($block -match 'app-id\s*:\s*(1CV8C|1CV8|WebClient)\b' -and $block -match 'session\s*:\s*(\S+)') {
& $rac $server session terminate --cluster=$cluster --session=$($Matches[1])
}
}
Проверьте скрипт вручную на тестовой базе: формат вывода rac (порядок полей infobase и name) сверьте со своей версией платформы. При защищённом кластере добавьте --cluster-user и --cluster-pwd.
Запускайте такую очистку только в нерабочее время и предупредите пользователей: всё, что не сохранено в открытых формах, пропадёт.
3. Блокировка в сценарии обновления
Для пакетного обновления ночью используйте запуск БСП-конфигурации с /C"ЗавершитьРаботуПользователей" и кодом разрешения, затем обновление, затем /C"РазрешитьРаботуПользователей". Так пользователи получают предупреждение, а не просто вылетают из программы.