Снятие сеансов пользователей и блокировка входа в базу 1С
Содержание
«Выгнать» пользователя из 1С и «завершить его сеанс» — не одно и то же. Принудительно отключить пользователей
обычно нужно перед обновлением конфигурации, загрузкой .dt, свёрткой базы или когда чей-то сеанс завис и держит документ. Кто-то под этим понимает закрыть вход всем, кто-то — снять один застрявший сеанс.
В клиент-серверной базе активные сеансы снимают в консоли Администрирование серверов 1С Предприятия или командой rac session terminate. В файловой базе отдельной кнопки нет: там закрывают вход через блокировку соединений в конфигураторе и ждут, пока люди выйдут сами.
Любое принудительное отключение обрывает несохранённые данные пользователя: наполовину проведённый документ, незаписанный отчёт. Сначала включите блокировку входа и предупредите людей, и только потом снимайте сеансы.
Какой способ подходит вашей установке
Путь зависит от того, как развёрнута база. Сначала определитесь, а потом переходите к нужному разделу.
| Ваша установка | Чем снимать сеансы |
|---|---|
| Клиент-серверная на Windows, есть консоль MMC | Консоль «Администрирование серверов 1С» |
| Клиент-серверная на Linux или автоматизация | Утилита rac (через службу ras) |
| Файловая база (общий сетевой каталог) | Блокировка соединений в конфигураторе + выход людей |
| Терминальный сервер, работа по RDP | Завершение RDP-сессий Windows |
| Нужно закрыть вход всем перед обновлением | Блокировка начала сеансов + вход по коду /UC |
Дальше разберём каждый вариант с точными путями и командами.
Сначала закрыть вход: блокировка начала сеансов
Мягкий путь. Он не рвёт работающих пользователей, а запрещает новым входить. Без него снятие сеансов бессмысленно: человек тут же зайдёт обратно, и так по кругу.
В клиент-серверной базе блокировка задаётся в свойствах информационной базы. В консоли администрирования раскройте кластер → Информационные базы, откройте свойства нужной базы и включите:
- 🔒 Блокировка начала сеансов включена — галочка;
- Код разрешения — короткое слово, с которым админ сможет войти в обход блокировки;
- Сообщение блокировки — текст, который увидят пользователи при попытке входа.
После этого вы заходите в заблокированную базу с ключом командной строки:
"C:\Program Files\1cv8\8.3.24.1234\bin\1cv8.exe" ENTERPRISE /S "server/infobase" /UC КодРазрешения
Ключ /UC (код разрешения, по-английски — uniqueness code) пропускает именно вас, пока остальным вход закрыт. Запомните код: без него в заблокированную базу не войдёт даже администратор.
Для файловой базы ту же блокировку ставят в конфигураторе: Администрирование → Блокировка соединений с информационной базой. Там задают дату начала, дату окончания и код разрешения.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1 и другие) есть ещё мягче вариант — Администрирование → Обслуживание → Блокировка работы пользователей. Он предупреждает людей, даёт время сохраниться и отключает по истечении срока. В части конфигураций раздел называется «НСИ и администрирование».
Монопольный доступ к базе (он нужен для обновления структуры, загрузки .dt, тестирования и исправления) появится только когда из базы выйдет последний пользователь. Поэтому блокировка входа — обязательный первый шаг, а не формальность.
Снятие сеансов в консоли администрирования серверов
Это основной способ для клиент-серверной базы на Windows. Консоль Администрирование серверов 1С Предприятия — оснастка MMC, она ставится вместе с сервером.
Порядок действий:
- Откройте консоль. Раскройте узел центрального сервера, затем нужный кластер.
- Выберите ветку
Сеансы. В списке видно, кто в базе: пользователь, приложение, компьютер, с какого времени. - Отметьте один сеанс или несколько (с
Ctrl), нажмите правой кнопкой →Удалить.
Сервер пометит сеанс на завершение и закроет его после того, как отработает текущий серверный вызов. Если вызов короткий, сеанс исчезнет за секунды.
Отдельно от сеансов есть ветка Соединения — это физические подключения рабочих процессов. У одного сеанса может быть несколько соединений (например, фоновые задания). Обычно достаточно удалить сеанс; к соединениям спускаются, когда сеанс завис и не уходит.
Снятие сеанса обрывает работу пользователя без предупреждения. Перед массовым удалением включите блокировку начала сеансов (предыдущий раздел), иначе люди зайдут снова.
Если на кластере задан администратор, консоль спросит логин и пароль администратора кластера — без них ветки сеансов не раскроются.
Как выгнать пользователей из режима 1С:Предприятие
Не у всех есть доступ к серверу и консоли. Если у вас роль с административными правами, часть работы делается прямо из программы.
В типовых конфигурациях откройте список активных пользователей: раздел Администрирование → Обслуживание, пункт со списком активных пользователей (в разных конфигурациях формулировка пункта отличается, но список всегда показывает, кто сейчас в базе). Оттуда виден состав работающих и время их последней активности.
Само принудительное завершение чужих сеансов из режима Предприятия штатно делает механизм блокировки работы пользователей (о нём выше): он задаёт время отключения, рассылает предупреждение и по истечении срока завершает сеансы. Это аккуратнее «жёсткого» удаления из консоли, потому что людям даётся время сохранить данные.
Если нужно снять конкретный застрявший сеанс немедленно, а не всех по расписанию, — это уже уровень кластера. Переходите к консоли или к rac.
Команда rac: завершение сеансов из терминала
На Linux оснастки MMC нет, и для автоматизации командная строка удобнее. Работает утилита rac (клиент администрирования), которая подключается к серверу администрирования ras.
Сначала убедитесь, что ras запущен — как служба или вручную:
ras cluster --port=1545 localhost:1540
Дальше находим идентификатор кластера:
rac cluster list
В выводе будет строка cluster : <uuid>. Подставляем этот UUID и смотрим активные сеансы:
rac session list --cluster=<uuid-кластера>
Каждый сеанс выводится блоком со своим session : <uuid>, именем пользователя и базой. Завершаем нужный сеанс по его идентификатору:
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере задан администратор, добавьте к командам --cluster-user= и --cluster-pwd=. Закрыть вход новым пользователям через rac тоже можно — параметр у объекта infobase update (--sessions-deny=on и код разрешения). Точный набор ключей вашей версии смотрите в rac infobase help, подкоманды и параметры между релизами добавляются.
rac называет только те подкоманды и параметры, в которых вы уверены. Полный список выдаёт rac help и rac session help — не придумывайте ключи по памяти, это частая причина ошибок в скриптах.
Терминальный сервер: завершаем RDP-сессии
Когда люди работают на терминальном сервере по RDP, иногда проще отключить не сеанс 1С, а всю сессию Windows вместе с запущенным клиентом — например, если клиент завис и не отвечает.
Два пути:
- Диспетчер задач → вкладка
Пользователи→ правой кнопкой по пользователю →Выйти. Это завершает его сессию Windows целиком. - Командная строка с правами администратора:
query user
logoff <ID-сессии>
query user покажет список сессий с их ID, logoff завершит нужную.
logoff закрывает всю рабочую сессию пользователя, а не только 1С: закроются все его программы, несохранённые данные пропадут. Делайте это, когда клиент 1С завис намертво и снять сеанс через кластер не выходит.
Разница с предыдущими способами важная: завершив RDP-сессию, вы убираете клиента, но сам сеанс на сервере 1С может ещё несколько минут висеть как «зависший», пока кластер не поймёт, что соединение разорвано.
Отключение на уровне СУБД: когда стоит и чем опасно
Иногда сеанс не снимается ни из консоли, ни через rac — рабочий процесс завис на запросе к базе данных. Тогда остаётся оборвать соединение прямо в СУБД.
Для PostgreSQL находим и завершаем бэкенды нужной базы:
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'имя_базы'
AND pid <> pg_backend_pid();
Для MS SQL Server смотрим соединения через sp_who2 (или представление sys.dm_exec_sessions), находим нужный SPID и завершаем:
KILL <SPID>;
Это крайняя мера. Кластер 1С не знает, что вы оборвали соединение в обход него: сеанс может ещё отображаться в консоли как активный, пока сервер не обнаружит разрыв. Рассинхрон состояния — обычное последствие. Не используйте обрыв через СУБД как основной способ снятия сеансов — только когда штатные пути не сработали.
После такого обрыва проверьте список сеансов в консоли и, если нужно, перезапустите рабочий процесс.
Перезапуск службы и сервера как крайняя мера
Самый грубый способ разом выгнать всех — перезапустить агента сервера 1С. Он сбрасывает сразу все сеансы всех информационных баз кластера, а не одной.
В services.msc найдите службу «Агент сервера 1С:Предприятия» (имя вида 1C:Enterprise 8.3 Server Agent) и выполните перезапуск. Или из консоли:
net stop "1C:Enterprise 8.3 Server Agent"
net start "1C:Enterprise 8.3 Server Agent"
Перезапуск службы обрывает сеансы во всех базах кластера одновременно и прерывает регламентные задания. Делайте это только в технологическое окно, когда предупреждены все отделы, а не как рядовую операцию в рабочий день.
Если завис не весь сервер, а один рабочий процесс, в консоли можно перезапустить конкретный rphost (ветка Рабочие процессы). Он уронит только те сеансы, которые обслуживал, — это мягче полного перезапуска, но тоже бьёт сразу по нескольким пользователям.
Автоматизация: массовое снятие сеансов скриптом
Когда отключать пользователей приходится регулярно (ночное обновление, ежедневная выгрузка), ручная работа в консоли не нужна. Связку «заблокировать вход
→ снять сеансы» оформляют скриптом на rac.
Простой пакетный файл для Windows: сначала закрываем вход, потом в цикле завершаем сеансы кластера.
@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1234\bin\rac.exe"
set CLUSTER=<uuid-кластера>
rem снять каждый сеанс кластера
for /f "tokens=3" %%s in ('%RAC% session list --cluster=%CLUSTER% ^| findstr /c:"session "') do (
%RAC% session terminate --cluster=%CLUSTER% --session=%%s
)
Формат вывода rac session list между версиями немного отличается — перед запуском по расписанию проверьте его вручную и подстройте разбор строки. Для серьёзных задач вместо .bat берут более предсказуемые инструменты (PowerShell или OneScript/oscript), где удобнее разбирать вывод и обрабатывать ошибки.
В скрипте всегда ставьте блокировку начала сеансов ПЕРЕД циклом снятия. Иначе между завершением одного сеанса и следующего пользователь успеет зайти, и вы никогда не дойдёте до пустой базы.
Скрипт обычно вешают на планировщик заданий перед регламентной операцией, а после неё отдельным шагом снимают блокировку входа.
Частые ошибки и как их распознать
Короткая диагностика по симптому — что именно пошло не так при отключении.
--cluster-user и --cluster-pwd.ras или указан не тот порт (по умолчанию 1545). Запустите ras и повторите команду.Частые вопросы
Чем сеанс отличается от соединения?
Можно ли отключить одного пользователя, не трогая остальных?
rac снимается конкретный сеанс по пользователю — остальные продолжают работать. А вот блокировка начала сеансов закрывает вход сразу всем.Как войти в базу, если вход уже заблокирован?
/UC <код разрешения> — тем самым словом, которое вы задали в настройке блокировки. Без кода в заблокированную базу не пустит даже администратора.