Принудительное отключение пользователей от базы 1С 8.3: от консоли кластера до SQL
Содержание
Чтобы выгнать пользователя из
1С в клиент-серверном варианте, откройте консоль администрирования серверов 1С, раскройте Информационные базы → <ваша база> → Сеансы, выделите сеанс нужного человека и выберите в контекстном меню «Удалить». Сеанс оборвётся сразу, лицензия освободится. Чтобы человек не зашёл обратно через минуту, поставьте блокировку начала сеансов или снимите ему право входа.
В файловой базе консоли кластера нет. Там пользователя отключают через механизм блокировки в самой конфигурации, а если клиент завис — завершают процесс 1cv8.exe на его компьютере или закрывают открытый файл базы на сервере. Ниже все способы по порядку: от самого мягкого до крайних мер.
Кто сейчас в базе: смотрим активные сеансы
Прежде чем кого-то выгонять, выясните, кто именно держит базу и что он делает. Иначе можно оборвать бухгалтера посреди проведения закрытия месяца.
Где посмотреть список подключений:
- 🖥️ В пользовательском режиме типовых конфигураций на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Активные пользователи. Видно имя, компьютер, время начала работы и приложение. - 🔧 В Конфигураторе:
Администрирование → Активные пользователи. Только просмотр, отключить отсюда нельзя. - 🗄️ В консоли кластера (клиент-сервер): ветка
Сеансывнутри информационной базы. Это самый подробный источник.
Что важно в списке сеансов консоли:
| Колонка | Что из неё понять |
|---|---|
| Пользователь | Имя пользователя информационной базы |
| Компьютер | Сетевое имя машины, с которой зашли |
| Приложение | Тонкий клиент, Конфигуратор, фоновое задание, COM-соединение, веб-клиент |
| Начало сеанса | Давно открытый сеанс часто оказывается «забытым» |
| Спящий | Сеанс клиента, который потерял связь с сервером |
| Блокировки СУБД / время вызова | Признак, что сеанс прямо сейчас выполняет тяжёлую операцию |
Сеанс с приложением «Фоновое задание» — это не человек, а регламентное задание. Если удалить его, задание просто прервётся и запустится по расписанию снова. Чтобы они не мешали, используйте блокировку регламентных заданий (о ней ниже).
Если человек не отвечает в мессенджере, а база нужна монопольно, сначала посмотрите время последнего вызова. Если сеанс несколько часов ничего не делает, его можно удалять без последствий для данных.
Удаление сеанса через консоль администрирования серверов
Это штатный и самый безопасный способ выгнать пользователя из базы 1С на сервере. Платформа корректно завершает сеанс: незавершённая транзакция откатывается, лицензия возвращается в пул.
Пошагово в консоли
- Запустите «Администрирование серверов 1С Предприятия» из меню «Пуск».
- Раскройте
Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → <кластер> → Информационные базы. - Раскройте нужную базу и перейдите в
Сеансы. Если база запросит логин — введите учётку администратора ИБ. - Найдите строку пользователя, правый клик → «Удалить».
- Обновите список (F5), чтобы убедиться, что сеанс исчез.
У пользователя появится сообщение о разрыве соединения. Всё, что он не записал, потеряется.
Если консоль не открывается
Типичная причина — не зарегистрирована оснастка radmin.dll после установки или смены версии платформы. Зарегистрируйте её из командной строки, запущенной от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути подставьте свой — он должен совпадать с версией сервера. Ещё одна причина: на кластере задан администратор, а консоль подключается без пароля. Тогда при раскрытии ветки появится запрос логина администратора кластера.
Через утилиту rac из командной строки
Когда консоли под рукой нет (Linux-сервер, удалённый доступ по SSH), то же самое делает утилита rac. Ей нужен запущенный сервер администрирования ras.
rem 1. Узнать идентификатор кластера
rac cluster list
rem 2. Список баз кластера
rac infobase summary list --cluster=<uuid-кластера>
rem 3. Сеансы конкретной базы
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rem 4. Удалить сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере есть администратор, добавьте --cluster-user и --cluster-pwd. По остальным ключам смотрите rac help session.
Как не пустить пользователя обратно: блокировка входа и права
Удалённый сеанс не мешает человеку снова нажать ярлык. Если вам нужно 20 минут монопольного доступа для обновления, сеансы надо не только удалить, но и закрыть дверь.
Блокировка начала сеансов на сервере
В консоли кластера откройте свойства информационной базы и заполните:
- ✅ «Блокировка начала сеансов включена» — флажок;
- 🕒 «Начало» и «Конец» — период блокировки (можно оставить пустыми);
- 💬 «Сообщение о блокировке» — текст, который увидит пользователь при попытке входа;
- 🔑 «Код разрешения» — пароль, с которым вход всё-таки возможен;
- ⏸️ «Блокировка регламентных заданий включена» — чтобы фоновые задания не занимали базу.
Администратор заходит в заблокированную базу, добавив в строку запуска параметр /UC с кодом разрешения, например /UCupdate2024. Без кода не пустит никого, включая вас.
То же через rac:
rac infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> ^
--infobase-user=Администратор --infobase-pwd=<пароль> ^
--sessions-deny=on --scheduled-jobs-deny=on ^
--denied-message="Обновление базы, вход закрыт до 19:00" ^
--permission-code=update2024
Снимают блокировку тем же вызовом с --sessions-deny=off и --scheduled-jobs-deny=off.
Блокировка в консоли только запрещает новые входы. Уже открытые сеансы она не трогает — их удаляют отдельно.
Блокировка средствами конфигурации
В типовых конфигурациях есть свой механизм: Администрирование → Обслуживание → Блокировка работы пользователей. Укажите время, сообщение и код разрешения, нажмите «Установить блокировку». Программа предупредит всех активных пользователей и через несколько минут сама завершит их сеансы.
Этот способ работает и в файловой базе, где консоли кластера нет. Минус: клиент проверяет блокировку периодически, поэтому выгнать человека моментально так не получится. Зависший клиент сигнал вообще не обработает.
Тот же механизм вызывается из командной строки параметрами запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"update2024"
Обратный параметр — /C"РазрешитьРаботуПользователей".
Запрет входа конкретному человеку
Если нужно выгнать из 1С одного сотрудника насовсем (уволился, нарушил регламент), блокировки базы мало. Отключите ему вход:
Администрирование → Настройки пользователей и прав → Пользователи.- Откройте карточку пользователя.
- Снимите флажок «Вход в программу разрешён», запишите.
- Удалите его текущий сеанс в консоли — иначе он доработает до закрытия программы.
Не удаляйте пользователя из списка в Конфигураторе, если на него ссылаются документы: ответственные в документах и история изменений потеряют связь. Отключить вход достаточно.
Крайние меры: процесс клиента и рабочий процесс сервера
Сюда переходят, когда штатные способы не сработали: сеанс висит после удаления, консоль показывает его снова и снова, а клиент не реагирует.
На компьютере пользователя
Откройте «Диспетчер задач» и завершите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор). Из командной строки:
taskkill /IM 1cv8c.exe /F
Если пользователи работают на терминальном сервере, ищите процесс нужного пользователя на вкладке «Пользователи» диспетчера задач, иначе закроете 1С всем.
Файловая база в общей папке
Файловая база держит файл 1Cv8.1CD. Если клиент упал, а файл остался открытым по сети, на сервере с базой зайдите в Управление компьютером → Общие папки → Открытые файлы, найдите 1Cv8.1CD нужного пользователя и закройте его. Ещё один след зависшего сеанса — файлы *.cfl в каталоге базы.
Закрытие открытого файла и удаление *.cfl при работающих пользователях может повредить базу. Делайте это, только когда все остальные вышли, и после копии каталога базы.
Рабочий процесс rphost
В клиент-серверном варианте последний шаг — перезапуск рабочего процесса rphost в консоли (Рабочие процессы → процесс → Выключить) или перезапуск службы «Агент сервера 1С:Предприятия 8.3».
Выключение rphost или службы обрывает сеансы ВСЕХ пользователей, которые обслуживаются этим процессом, во всех базах кластера. Делайте это в нерабочее время или после общего предупреждения.
Отключение соединений на уровне СУБД
Иногда сеанса в 1С уже нет, а СУБД держит соединение с открытой транзакцией и блокирует таблицы. Это видно по долгим ожиданиям на блокировках у других пользователей.
Порядок такой: сначала найти соединение, потом убедиться, что оно принадлежит процессу 1С и в нём нет нужной операции, и только затем завершать.
MS SQL Server
-- Активные соединения к базе
SELECT session_id, login_name, host_name, program_name, status, last_request_start_time
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('buh_base');
-- Завершить соединение по номеру
KILL 87;
Быстрый обзор даёт и EXEC sp_who2; с колонками BlkBy (кто кого блокирует).
PostgreSQL
-- Активные соединения
SELECT pid, usename, client_addr, application_name, state, query_start
FROM pg_stat_activity
WHERE datname = 'buh_base';
-- Мягко отменить текущий запрос
SELECT pg_cancel_backend(12345);
-- Разорвать соединение целиком
SELECT pg_terminate_backend(12345);
Убитое соединение откатит транзакцию. Если это было проведение пакета документов или обновление структуры, результат отменится, а долгий откат сам может занять время. Соединения рабочих процессов 1С переиспользуются, и рабочий процесс после разрыва получит ошибку СУБД, поэтому этот способ — последний.
Сравнение способов:
| Способ | Когда применять | Что потеряется |
|---|---|---|
Удаление сеанса в консоли / rac | Обычная ситуация, клиент-сервер | Несохранённые правки одного пользователя |
| Блокировка в конфигурации | Файловая база, плановые работы | Ничего, если пользователи успели сохраниться |
Завершение 1cv8c.exe | Клиент завис на конкретном ПК | Несохранённые правки этого пользователя |
Закрытие 1Cv8.1CD на сервере | Файловая база, клиент упал | Риск повреждения базы |
Выключение rphost / службы | Сеанс не удаляется штатно | Работа всех пользователей процесса |
KILL / pg_terminate_backend | Висящее соединение СУБД | Незавершённая транзакция |
Профилактика: чтобы выгонять приходилось реже
Большинство «зависших» людей в базе — это забытые на ночь окна и обрывы связи. Их можно закрывать автоматически.
Таймауты в свойствах информационной базы
В консоли кластера в свойствах базы есть два параметра:
- ⏲️ «Время засыпания пассивного сеанса» — через сколько секунд сеанс без связи с клиентом становится спящим. Спящий сеанс не занимает клиентскую лицензию.
- ⌛ «Время завершения спящего сеанса» — через сколько секунд спящий сеанс удаляется совсем.
Практичные значения — примерно 300–600 секунд для засыпания и 3600–7200 для завершения. Пользователь, у которого на 10 минут пропал интернет, вернётся в тот же сеанс, а брошенный на выходные — нет.
Скрипт по расписанию
Для регулярных работ (ночное обновление, выгрузка копии) удобно запускать пакетный файл из «Планировщика заданий» Windows или cron:
- Установить блокировку
rac infobase update ... --sessions-deny=on. - Получить
rac session listи пройти по каждому сеансуrac session terminate. - Выполнить работы.
- Снять блокировку
--sessions-deny=off.
Перед этим пусть скрипт или руководитель предупредит людей — сообщение о блокировке увидят только те, кто попытается войти.
Регламент вместо войны
Договоритесь о простом правиле: окно обслуживания (например, после 19:00), сообщение в общий чат за 15 минут, код разрешения знает только администратор. Тогда выгонять людей придётся раз в месяц, а не каждый день.
Частые вопросы
Освобождается ли лицензия после удаления сеанса?
Почему удалённый сеанс снова появляется в консоли?
Можно ли выгнать пользователя из файловой базы удалённо?
Пользователь в Конфигураторе мешает обновлению — что делать?
Как выгнать всех, кроме себя?
/UC и этим кодом, затем удалите в консоли все сеансы, кроме своего. Свой сеанс узнаете по имени компьютера.