Принудительное завершение сеансов в 1С 8.3: от блокировки до консоли кластера
Содержание
Чтобы выбить пользователей из базы 1С, в типовой конфигурации откройте Администрирование → Обслуживание → Блокировка работы пользователей, задайте время начала и код разрешения и нажмите «Установить блокировку». Через несколько минут программа сама закроет сеансы и не пустит новых. В клиент-серверном варианте то же самое делается в консоли кластера: свойства базы → «Блокировка начала сеансов включена», затем удаление сеансов вручную.
Способ зависит от трёх вещей: файловая база или серверная, есть ли у вас права администратора кластера и нужно ли, чтобы люди успели сохранить документы. Мягкие варианты дают людям сохранить работу, жёсткие обрывают сеанс сразу.
Перед тем как выгонять: что проверить и кого предупредить
Принудительное завершение сеанса — это обрыв. Документ, который человек не записал, пропадёт. Если в этот момент шло проведение большого документа или закрытие месяца , транзакция откатится, и операцию придётся запускать заново.
Что сделать заранее:
- 📣 разослать сообщение в рабочий чат за 15–30 минут, а не в момент блокировки;
- 🔍 посмотреть список активных пользователей и понять, кто реально работает, а кто просто оставил окно открытым на ночь;
- ⏳ проверить, нет ли длительных фоновых операций: расчёта себестоимости, обмена, загрузки банковской выписки;
- 🔑 убедиться, что у вас есть пароль администратора базы, а для серверной базы — ещё и администратора кластера, если он задан;
- 💾 сделать резервную копию, если после выгона планируется обновление или тестирование.
Не все сеансы — это люди. В списке бывают фоновые задания, регламентные задания, COM-соединения (обмен с сайтом, внешние обработки), веб-сервисы и мобильные клиенты. Их тоже придётся остановить, иначе монопольный доступ не получится.
| Вариант базы | Мягкий способ | Жёсткий способ |
|---|---|---|
| Файловая | Блокировка работы пользователей в режиме «Предприятие» | Закрытие процессов 1cv8.exe / открытых файлов на сервере |
| Клиент-серверная | Та же блокировка или блокировка в свойствах базы в консоли | Удаление сеансов в консоли или через rac |
| Любая (крайний случай) | — | Разрыв соединения на стороне СУБД |
Блокировка работы пользователей из режима «Предприятие»
Это главный и самый безопасный способ. Он есть во всех типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА и ERP. Пользователи получают предупреждение, у них есть время записать документы, после чего сеансы завершаются сами.
Пошагово
- Войдите в базу под пользователем с полными правами.
- Откройте
Администрирование → Обслуживание. - Сначала нажмите ссылку «Активные пользователи» — посмотрите, кто сейчас в базе.
- Вернитесь и откройте «Блокировка работы пользователей».
- Заполните сообщение для пользователей: что происходит и когда база снова будет доступна.
- Укажите время начала и окончания блокировки. Начало ставьте с запасом в 5–10 минут.
- Задайте код разрешения, например
UPDATE2025. По нему вы сами сможете войти в заблокированную базу. - Нажмите «Установить блокировку».
После установки у пользователей начинают всплывать предупреждения. В момент начала блокировки их сеансы закрываются, а при попытке войти они видят ваше сообщение.
Ваш собственный сеанс блокировка не закрывает. А вот войти повторно вы сможете только с кодом разрешения — запишите его до того, как закроете программу.
Как войти в заблокированную базу
Добавьте к параметрам запуска ключ /UC с кодом разрешения. В окне списка баз: «Изменить» → последний шаг мастера → поле «Дополнительные параметры запуска»:
/UCUPDATE2025
Если код с пробелами, возьмите его в кавычки: /UC"код с пробелами". После работы снимите блокировку той же формой — кнопкой «Снять блокировку» — или дождитесь времени окончания, если вы его указали.
Завершение сеансов из списка активных пользователей
В форме «Активные пользователи» есть команда завершения выбранного сеанса. В клиент-серверной базе программа запросит параметры администрирования: логин и пароль администратора кластера (если задан) и администратора базы. Без них выбить конкретного человека из режима «Предприятие» не получится — остаётся общая блокировка.
В файловой базе завершить чужой сеанс из этого списка нельзя: у файлового варианта нет механизма удалённого управления сеансами. Работает только блокировка, которая заставляет клиентов закрыться самостоятельно.
Конфигуратор и монопольный доступ
Конфигуратор сам по себе пользователей не выгоняет. В меню Администрирование → Активные пользователи он показывает список подключённых сеансов, но кнопки «завершить» там нет. Список нужен, чтобы понять, кто мешает.
Монопольный доступ требуется не для всего, а для конкретных операций:
- обновление конфигурации базы данных, если меняется структура хранения;
- загрузка информационной базы из файла
.dt; - тестирование и исправление информационной базы;
- часть операций со сжатием и реструктуризацией таблиц.
Правка конфигурации, сравнение, сохранение в .cf и выгрузка в .dt монопольного режима не требуют.
Что делать, когда Конфигуратор просит монополию
В клиент-серверной базе при обновлении конфигурации БД с активными пользователями платформа показывает окно с предложением завершить сеансы и повторить. Если вы ввели параметры администрирования кластера, она сама удалит мешающие сеансы. Это быстро, но предупреждения пользователи не получат.
В файловой базе такого предложения нет. Сначала выгоните всех через блокировку из режима «Предприятие», затем запускайте Конфигуратор с тем же ключом /UC, иначе он тоже упрётся в блокировку.
Если вы закрыли Конфигуратор, не сняв блокировку и забыв код, база останется недоступной для всех до времени окончания блокировки. Выход — снять флажок в консоли кластера или дождаться окончания блокировки.
Консоль кластера: блокировка и удаление сеансов на сервере
В клиент-серверном варианте самый надёжный инструмент — оснастка «Администрирование серверов 1С:Предприятия» (MMC) на сервере или на машине администратора. Она подключается к агенту сервера (порт 1540 по умолчанию).
Блокировка начала сеансов в свойствах базы
- Раскройте
Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы. - Откройте свойства нужной базы. Консоль попросит логин и пароль администратора этой базы.
- Отметьте флажок «Блокировка начала сеансов включена».
- Заполните поля начала и окончания, сообщение и код разрешения.
- Чтобы регламентные задания не создавали новые сеансы, отметьте «Блокировка регламентных заданий включена».
- Нажмите «ОК».
Новые пользователи с этого момента не войдут. Но уже подключённые останутся в базе — блокировка в консоли сама сеансы не обрывает.
Удаление сеансов
- Под базой раскройте ветку «Сеансы».
- Отсортируйте по колонке «Приложение»: так видно, где люди (
1CV8C,1CV8), где фоновые задания, где Конфигуратор, где COM-соединения. - Выделите сеансы (можно несколько с
Shift) → правая кнопка → «Удалить».
Пользователь увидит сообщение о том, что сеанс завершён администратором. Незаписанные данные пропадут.
Иногда удалённый сеанс висит в списке ещё минуту-две: рабочий процесс дожидается отката транзакции. Если сеанс не уходит дольше, найдите в ветке «Соединения» соединение с тем же номером сеанса и разорвите его.
Перезапуск рабочего процесса или службы агента сервера 1С обрывает сеансы ВСЕХ баз этого кластера, а не одной. Делайте это только если других баз на сервере нет или их пользователи тоже предупреждены.
Командная строка: rac и ras
Консоль MMC неудобна для скриптов и недоступна на Linux. Там работает связка ras (сервер администрирования, порт 1545 по умолчанию) и утилита rac. Обе лежат в папке bin установленной платформы.
Запуск сервера администрирования, если он ещё не работает как служба:
ras cluster --daemon
Дальше идентификаторы получаем по цепочке:
rem 1. UUID кластера
rac cluster list
rem 2. UUID базы
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 infobase update --cluster=<uuid_кластера> --infobase=<uuid_базы> ^
--infobase-user="Администратор" --infobase-pwd="пароль" ^
--sessions-deny=on --scheduled-jobs-deny=on ^
--denied-message="Обновление до 22:00" --permission-code="UPDATE2025"
Снять — та же команда с --sessions-deny=off --scheduled-jobs-deny=off. Полный список параметров для вашей версии платформы смотрите командой rac help infobase.
Файловая база: когда блокировка не сработала
У файловой базы нет кластера и списка сеансов на сервере. Каждый пользователь держит открытым файл 1Cv8.1CD. Если у человека завис клиент или он ушёл, не закрыв программу на ноутбуке, блокировка из «Предприятия» может не отработать.
Варианты по нарастанию жёсткости:
- Терминальный сервер
. Если база открыта через RDP, в диспетчере задач на вкладке «Пользователи» найдите сеанс сотрудника и завершите процесс
1cv8.exeили1cv8c.exe(тонкий клиент). - Файловый сервер. На машине, где лежит база, откройте
Управление компьютером → Общие папки → Открытые файлы, найдите1Cv8.1CDи закройте файл для нужного пользователя. - Компьютер пользователя. Попросить закрыть программу или завершить процесс удалённо средствами администрирования домена.
Перед закрытием файла сделайте копию каталога базы. Обрыв во время записи может повредить 1Cv8.1CD, и тогда понадобится тестирование и исправление через Конфигуратор.
Блокировку соединений файловая база хранит в файле 1Cv8.cdn рядом с 1Cv8.1CD. Пока он там лежит, вход запрещён. Это полезно знать, когда блокировка «осталась» после сбоя.
Разрыв соединений на уровне СУБД
Этот способ — крайний. Он нужен, когда сеанс в консоли кластера удалён, а в СУБД висит транзакция, которая держит блокировки таблиц, или когда сервер 1С недоступен.
Учтите: разрыв соединения в СУБД не удаляет сеанс 1С. Рабочий процесс получит ошибку и, скорее всего, переподключится. Начинайте всегда с консоли кластера.
Microsoft SQL Server — найти соединения рабочих процессов к базе и завершить нужное:
SELECT session_id, login_name, host_name, program_name, status
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('buh_base');
KILL 57; -- номер session_id из запроса выше
PostgreSQL — то же самое через системное представление:
SELECT pid, usename, client_addr, state, query_start
FROM pg_stat_activity
WHERE datname = 'buh_base';
SELECT pg_terminate_backend(12345); -- pid из запроса выше
Команды вроде ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE в SQL Server обрывают все соединения сразу, включая рабочие процессы 1С. После этого сервер 1С потеряет связь с базой до возврата в режим MULTI_USER. Используйте только при остановленном кластере и с пониманием последствий.
Автоматизация: выгон по расписанию перед ночными работами
Ночное обновление или выгрузка копии требуют, чтобы к 23:00 база была пустой. Вручную это неудобно, поэтому процесс собирают в пакетный файл и ставят в Планировщик заданий Windows.
Типовые конфигурации на БСП понимают два параметра запуска:
/C"ЗавершитьРаботуПользователей"— устанавливает блокировку, ждёт закрытия сеансов и закрывается;/C"РазрешитьРаботуПользователей"— снимает блокировку.
Пример сценария для серверной базы:
@echo off
set V8="C:\Program Files\1cv8\8.3.25.1445\bin\1cv8.exe"
set IB=/S"srv1c\buh_base"
set CODE=/UC"NIGHT"
rem 1. Выгнать пользователей и заблокировать вход
%V8% ENTERPRISE %IB% /N"Администратор" /P"пароль" %CODE% /C"ЗавершитьРаботуПользователей" /DisableStartupMessages
rem 2. Выгрузить копию базы
%V8% DESIGNER %IB% /N"Администратор" /P"пароль" %CODE% /DumpIB "D:\backup\buh_base.dt" /Out "D:\backup\log.txt"
rem 3. Разрешить вход
%V8% ENTERPRISE %IB% /N"Администратор" /P"пароль" %CODE% /C"РазрешитьРаботуПользователей" /DisableStartupMessages
Путь к 1cv8.exe замените на свою версию платформы. Для файловой базы вместо /S используйте /F"D:\Bases\buh".
Альтернатива для сервера — сценарий на rac из предыдущего раздела: включить --sessions-deny, перебрать session list и для каждого сеанса вызвать session terminate. Он не зависит от конфигурации и работает, даже если в базе нет БСП.
Не храните пароль администратора в открытом виде в bat-файле на общем диске. Положите сценарий в каталог, доступный только учётной записи планировщика, или используйте пользователя с аутентификацией операционной системы.
Ошибки и зависшие ситуации
Сколько ждать после установки блокировки, прежде чем сеансы закроются?
Можно ли выгнать одного пользователя, не трогая остальных?
rac session terminate. В файловой базе точечно это делается только закрытием его процесса или открытого файла.