Принудительное завершение чужого сеанса в 1С 8.3: от вежливой блокировки до KILL в SQL
Содержание
Выкинуть активного пользователя из 1С 8.3 быстрее всего через консоль кластера: Кластеры → ваш кластер → Информационные базы → база → Сеансы, правый клик по сеансу → Удалить. В файловой базе консоли нет, там работают блокировка работы пользователей из самой программы или закрытие открытого файла 1Cv8.1CD на компьютере, где лежит база.
Какой способ выбрать, зависит от двух вещей: файловая база или клиент-серверная и насколько срочно. Мягкие способы дают человеку сохранить документ. Жёсткие обрывают сеанс мгновенно, и всё несохранённое пропадает.
Что выбрать: сравнение способов
Сначала определитесь с вариантом работы базы. Посмотреть его можно в окне запуска: под списком баз для выделенной строки видна строка подключения. File="..." означает файловую базу
, Srvr="..."; Ref="..." — серверную.
| Способ | Где работает | Скорость | Риск для данных |
|---|---|---|---|
| Блокировка работы пользователей в программе | файл и сервер | минуты, с предупреждением | минимальный |
| Удаление сеанса в консоли кластера | только сервер | мгновенно | несохранённые правки теряются |
Команда rac session terminate | только сервер | мгновенно, можно по расписанию | как у консоли |
| Завершение процесса в диспетчере задач | клиент или терминальный сервер | мгновенно | несохранённые правки теряются |
Закрытие файла 1Cv8.1CD в общих папках | только файл | мгновенно | возможно повреждение базы |
KILL / pg_terminate_backend в СУБД | только сервер | мгновенно | откат транзакции, сеанс в 1С может остаться |
Если нужно лишь обновить конфигурацию, начинайте с блокировки. Она и предупредит людей, и не даст им зайти обратно, пока идёт работа.
Штатная блокировка работы пользователей в программе
Во всех типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть встроенный механизм. Нужны права администратора в самой программе.
- Откройте
Администрирование → Обслуживание. - Найдите ссылку «Блокировка работы пользователей» и откройте её.
- Укажите время начала и окончания блокировки, текст сообщения («Обновление, вернёмся через 30 минут»).
- Задайте код разрешения, например
upd2024. По нему вы сами сможете войти в заблокированную базу. - Установите флажок блокировки и нажмите «Записать».
Дальше программа сама показывает пользователям предупреждение и через несколько минут завершает их сеансы. Новые входы до окончания блокировки запрещены, кроме входа с кодом.
Войти с кодом разрешения можно из командной строки или через поле «Дополнительные параметры запуска» в свойствах базы:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /UCupd2024
Для серверной базы вместо /F указывают /S"server\base".
Ключи запуска для завершения и снятия блокировки
В БСП предусмотрены два параметра для /C, удобные для администратора и скриптов:
- 🔒
/C ЗавершитьРаботуПользователей— запускает процедуру завершения сеансов сразу при входе; - 🔓
/C РазрешитьРаботуПользователей— снимает блокировку, если вы не можете войти в программу и выключить её вручную.
Второй ключ применяют вместе с кодом разрешения: /UCupd2024 /C РазрешитьРаботуПользователей.
Где смотреть, кто сейчас в базе
В пользовательском режиме это обработка «Активные пользователи» в том же разделе Администрирование → Обслуживание. В клиент-серверной базе там же есть команда завершения выбранного сеанса: программа запросит логин и пароль администратора кластера, если они заданы.
В Конфигураторе список доступен через Администрирование → Активные пользователи. Он только показывает сеансы, отключить из этого окна никого нельзя.
Монопольный режим: почему он сам никого не выгоняет
Частое заблуждение: «включу монопольный режим, и все вылетят». Монопольный режим работает наоборот. Его можно установить, только когда в базе никого, кроме вас, нет. Если есть хоть один чужой сеанс, вы получите отказ с сообщением о невозможности установить монопольный режим.
Монопольный доступ нужен для узкого списка операций:
- 📦 обновление конфигурации базы данных, когда меняется структура;
- 💾 загрузка информационной базы из файла
.dt; - 🛠 тестирование и исправление информационной базы.
Поэтому порядок такой: сначала выгнать всех блокировкой или из консоли, потом выполнять эти операции.
В клиент-серверном варианте платформа 8.3 при неудачной попытке обновить конфигурацию базы данных показывает окно со списком мешающих сеансов. В нём есть команда завершить сеансы и повторить. Она сработает, если вы знаете учётные данные администратора кластера.
Не путайте монопольный режим с выходом Конфигуратора. Открытый Конфигуратор у коллеги — тоже сеанс, и он тоже помешает обновлению.
Отключение сеансов в консоли администрирования серверов 1С
В клиент-серверной базе это главный рабочий инструмент. Консоль «Администрирование серверов 1С Предприятия» ставится вместе с платформой и открывается как оснастка MMC.
- Запустите консоль. Если центрального сервера нет в дереве, добавьте его: правый клик по корню →
Создать → Центральный сервер 1С:Предприятия, укажите имя сервера. - Раскройте
Кластеры → Локальный кластер(или ваше имя) →Информационные базы→ нужная база →Сеансы. - В правой части отсортируйте список по колонке «Пользователь» или «Компьютер».
- Правый клик по нужному сеансу →
Удалить. Можно выделить несколько строк сразу.
Пользователь увидит сообщение о разрыве соединения, а его сеанс исчезнет из списка.
Как не удалить лишнее
В списке сеансов много служебных строк. Ориентируйтесь на колонку «Приложение»:
- 🖥 «Тонкий клиент», «Толстый клиент», «Веб-клиент» — живые пользователи;
- 🧩 «Конфигуратор» — кто-то открыл конфигурацию, уточните у коллег перед удалением;
- ⚙️ «Фоновое задание» — регламентные задания и обмены, их обрывать без причины не стоит;
- 🔗 «COM-соединение» — внешние программы и обработки обмена, например интеграция с сайтом.
Один человек может держать два-три сеанса, если открывал программу повторно. Сверяйте и «Пользователя», и «Компьютер», иначе выкинете однофамильца с соседнего ПК.
Узел «Соединения» в той же ветке показывает сетевые подключения к рабочим процессам. Для отключения конкретного человека работайте именно с «Сеансами».
Блокировка начала сеансов на уровне кластера
Чтобы человек не зашёл обратно через минуту, откройте свойства информационной базы в той же ветке. Там есть флажок «Блокировка начала сеансов включена», поля начала и конца блокировки, сообщение и код разрешения. Рядом — флажок блокировки регламентных заданий, его включают на время обновления, чтобы фоновые обмены не мешали.
Для изменения свойств базы консоль попросит логин и пароль администратора информационной базы.
Если консоль не открывается
Классическая проблема: оснастка не запускается или выдаёт ошибку класса. Решение — перерегистрировать библиотеку той версии платформы, что стоит на сервере. Командная строка от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\radmin.dll"
Номер версии в пути подставьте свой. Версия консоли должна совпадать с версией сервера.
Командная строка: rac и ras
Без графической консоли сеансы удаляют утилитой rac. Она работает через сервер администрирования ras, который должен быть запущен (по умолчанию слушает порт 1545). На Windows его обычно ставят отдельной службой, на Linux — запускают командой ras cluster --daemon.
Последовательность команд:
rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid кластера>
rac localhost:1545 session list --cluster=<uuid кластера> --infobase=<uuid базы>
rac localhost:1545 session terminate --cluster=<uuid кластера> --session=<uuid сеанса>
В выводе session list смотрите поля user-name, host и app-id: так видно, кто в базе, с какого компьютера и каким клиентом. Если на кластере задан администратор, добавьте --cluster-user= и --cluster-pwd=.
Если какой-то ключ не принимается, сверьтесь с rac help session: набор параметров зависит от версии платформы.
Диспетчер задач Windows: процессы клиента и сервера
Этот способ грубее, но иногда единственный, например когда пользователь ушёл домой, оставив программу открытой.
На компьютере пользователя или терминальном сервере
Клиентские процессы 1С называются 1cv8c.exe (тонкий клиент) и 1cv8.exe (толстый клиент и Конфигуратор).
- Откройте диспетчер задач (
Ctrl+Shift+Esc), вкладку «Пользователи». - Раскройте нужного пользователя и завершите его процесс 1С. Или выберите «Выйти», чтобы закрыть весь сеанс Windows.
- В клиент-серверной базе проверьте консоль кластера: сеанс иногда остаётся висеть до таймаута, его нужно удалить вручную.
Файловая база в общей папке
Если база лежит на сервере в сетевой папке, а пользователь недоступен:
- На компьютере с базой откройте
compmgmt.msc→Общие папки → Открытые файлы. - Найдите
1Cv8.1CDи строки с именем нужного пользователя. - Правый клик → «Закрыть открытый файл».
Закрытие файла посреди записи может повредить базу. Делайте это только после копии каталога базы и, если 1С потом ругается на ошибки, запускайте тестирование и исправление.
Процесс rphost.exe на сервере 1С
Завершать rphost.exe ради одного человека нельзя. В одном рабочем процессе живут десятки сеансов, они оборвутся все разом. Перезапуск рабочих процессов или службы агента сервера допустим только в нерабочее время или по согласованию: все пользователи потеряют несохранённые данные.
Сеансы в СУБД: блокировки и SQL
Иногда пользователь уже вышел, а его транзакция продолжает держать блокировки, и остальные ловят ошибку Конфликт блокировок при выполнении транзакции. Сначала ищите сеанс в консоли кластера: удаление там корректнее. В СУБД идите, если в 1С сеанс не виден или не удаляется.
Microsoft SQL Server
Соединения 1С видны по имени программы:
SELECT session_id, host_name, login_name, status, last_request_start_time
FROM sys.dm_exec_sessions
WHERE program_name LIKE '1CV8%';
Кто кого блокирует, покажет запрос к sys.dm_exec_requests по полю blocking_session_id. Завершение соединения:
KILL 57;
PostgreSQL
SELECT pid, usename, client_addr, state, query_start
FROM pg_stat_activity
WHERE datname = 'buh';
SELECT pg_terminate_backend(12345);
Соединение СУБД не равно сеансу пользователя. Рабочий процесс 1С держит соединения для многих сеансов, и одно соединение может обслуживать разных людей. Убив не то, вы откатите чужую транзакцию: например, проведение документа или закрытие месяца у коллеги.
После KILL транзакция откатывается. Если она была большой, откат длится долго, и блокировки держатся до его окончания.
Автоматизация и профилактика «вечных» сеансов
Тайм-ауты для забытых сеансов
В Конфигураторе откройте Администрирование → Параметры информационной базы. Там есть «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» в секундах. Пример: 1200 и 3600. Неактивный 20 минут сеанс засыпает и освобождает лицензию, а через час сна завершается.
Для пользователей, которые оставляют программу на ночь, это решает проблему без ручного вмешательства.
Ночное отключение всех по расписанию
Перед регламентом удобно выгнать всех скриптом в планировщике заданий Windows:
@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1342\bin\rac.exe"
set CL=<uuid кластера>
set IB=<uuid базы>
for /f "tokens=2 delims=: " %%s in ('%RAC% localhost:1545 session list --cluster=%CL% --infobase=%IB% ^| findstr /b /c:"session "') do (
%RAC% localhost:1545 session terminate --cluster=%CL% --session=%%s
)
Фильтр findstr /b /c:"session " берёт строки, начинающиеся со слова session и пробела. Так в выборку не попадает поле session-id.
В выборку попадут и фоновые задания, и ваш собственный сеанс, если вы в базе. Запускайте скрипт, когда сами не работаете в ней, и включайте блокировку регламентных заданий, если это важно.