Принудительное завершение сеансов 1С: от консоли кластера до rac
Содержание
Быстрее всего выбить пользователей из 1С в клиент-серверном варианте так: откройте консоль администрирования серверов, раскройте Кластер → Информационные базы → <ваша база> → Сеансы, выделите сеансы и выберите в контекстном меню «Удалить». Чтобы люди не зашли обратно через минуту, сразу после этого включите блокировку начала сеансов в свойствах той же базы.
В файловой базе консоли нет. Там работает блокировка через саму конфигурацию (Администрирование → Обслуживание) или закрытие процессов 1cv8.exe и открытых файлов базы на стороне Windows. Ниже все варианты по порядку: от мягкого к жёсткому.
С чего начать: мягкое завершение или жёсткое
Сеанс в 1С — это не просто «окно у бухгалтера». У каждого сеанса есть соединение с рабочим процессом сервера, а иногда и открытая транзакция в СУБД. От того, где вы его рвёте, зависит, что потеряет пользователь.
| Способ | Когда подходит | Чем рискуете |
|---|---|---|
| Блокировка через конфигурацию | Плановое обновление, закрытие периода | Почти ничем: пользователей предупредят |
| Удаление сеанса в консоли кластера | Нужно освободить базу или лицензию сейчас | Несохранённые данные в открытых формах |
Утилита rac | Linux-сервер, скрипты, ночные регламенты | То же, что в консоли |
| Завершение процессов ОС | Сеанс завис и не удаляется | Обрываются сразу все сеансы процесса |
| Завершение соединения в СУБД | Зависшая транзакция держит блокировку | Откат транзакции, сеанс 1С может остаться |
Перед жёсткими методами проверьте две вещи:
- 🔍 кто именно в базе и что делает — бухгалтер с незакрытым документом или фоновое задание обмена;
- 🔑 есть ли у вас пароль администратора кластера (если он задан) и логин с правами администратора информационной базы.
Завершаем сеансы через консоль администрирования серверов
Консоль — оснастка MMC, которая ставится вместе с платформой (компонент «Администрирование сервера 1С:Предприятия»). Она подключается к агенту сервера по порту 1540. Работает только под Windows, но управлять может и сервером на Linux — достаточно доступа к этому порту.
Если консоль открывается пустой или с ошибкой оснастки, зарегистрируйте библиотеку нужной версии платформы из командной строки администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"
Номер версии подставьте свой — он должен совпадать с версией сервера.
Пошагово
- Запустите «Администрирование серверов 1С Предприятия».
- Если центрального сервера нет в дереве — правой кнопкой по корню,
Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя сервера. - Раскройте
Кластеры → Локальный кластер → Информационные базы → <база>. Консоль может спросить логин и пароль администратора базы. - Откройте узел «Сеансы». В списке видно пользователя, компьютер, приложение (тонкий клиент, конфигуратор, фоновое задание) и время начала.
- Выделите один или несколько сеансов (Ctrl или Shift) и выберите «Удалить» в контекстном меню.
Пользователь увидит сообщение о разрыве связи с сервером. Всё, что он не успел записать, пропадёт.
Сеанс конфигуратора удаляется так же, как обычный. Но если в нём шла правка конфигурации без сохранения, изменения пропадут. Сначала позвоните программисту.
Если нужно выбить всех сразу
Внутри узла «Сеансы» выделите первую строку, нажмите Ctrl+A и удалите. Сеансы фоновых заданий при этом тоже завершатся, но регламентные задания запустят их снова. Чтобы этого не было, используйте блокировку из следующего раздела.
Узел «Соединения» под базой показывает сетевые соединения рабочих процессов. Обычно достаточно удалить сеанс; соединение трогают, когда сеанса уже нет, а соединение висит.
Закрываем вход: блокировка базы перед работами
Выбить пользователей — половина дела. Без блокировки через минуту кто-нибудь снова откроет базу, и обновление упадёт с ошибкой монопольного доступа.
Блокировка в свойствах базы (клиент-сервер)
В консоли кластера откройте свойства информационной базы и заполните:
- ✅ «Блокировка начала сеансов включена»;
- 🕒 «Начало» и «Конец» — интервал блокировки; пустое начало значит «прямо сейчас»;
- 💬 «Сообщение» — текст, который увидит пользователь при попытке входа;
- 🔑 «Код разрешения» — любая строка. С ней вы сами сможете зайти, пока блокировка действует;
- ⏸ «Блокировка регламентных заданий включена» — чтобы обмены и загрузки не стартовали во время работ.
Вход с кодом разрешения — параметр запуска /UC:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /UC"obnovlenie"
Блокировка начала сеансов не выгоняет тех, кто уже в базе. Она только не пускает новых. Активные сеансы удаляйте отдельно.
Блокировка из самой программы
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) есть форма «Блокировка работы пользователей» в разделе Администрирование → Обслуживание. Там же список «Активные пользователи».
Чем она удобнее консоли:
- Работает и в файловом, и в клиент-серверном варианте.
- Пользователи получают предупреждение заранее и успевают сохранить документы.
- После наступления времени блокировки программа сама завершает их сеансы.
Для клиент-серверной базы форма попросит параметры администрирования кластера. Если кластер без пароля — поля оставьте пустыми.
Эту же процедуру можно запустить без захода в интерфейс — параметром командной строки. Это удобно для ночных скриптов:
1cv8.exe ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"obnovlenie"
А снимает блокировку запуск с параметром /C"РазрешитьРаботуПользователей" и тем же /UC.
Как выбить пользователей из 1С без консоли: веб-клиент и Linux
Консоль MMC есть не всегда: администратор сидит на macOS, сервер на Linux, доступ только через браузер. Варианты здесь такие.
- 🌐 Форма «Активные пользователи» в типовой конфигурации работает и в веб-клиенте. В клиент-серверном режиме в ней есть команда завершения выбранного сеанса — она тоже попросит пароль администратора кластера.
- 🖥 Сервер администрирования
rasплюс утилитаrac— штатная замена консоли для любой ОС. О ней отдельный раздел ниже. - 🧩 Сторонние графические надстройки над
rasсуществуют, но ставьте их только из проверенных источников: они получают права администратора кластера.
Для файловой базы веб-публикации отдельного способа нет: сеансы веб-клиента — это процессы веб-сервера. Перезапуск пула IIS или службы Apache выбьет всех, кто работает через браузер.
Когда сеанс не удаляется: процессы Windows и Linux
Бывает, что сеанс в консоли удалили, а он висит в списке. Или пользователь закрыл 1С, а лицензия всё ещё занята. Тогда спускаемся на уровень операционной системы.
Терминальный сервер или рабочее место
На терминальном сервере каждый пользователь — свой процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент, конфигуратор). Завершить процессы конкретного пользователя:
tasklist /v /fi "IMAGENAME eq 1cv8c.exe"
taskkill /f /fi "USERNAME eq ivanova" /im 1cv8c.exe
Файловая база в общей папке
Если база лежит на файловом сервере, откройте на нём compmgmt.msc → Общие папки → Открытые файлы. Найдите 1Cv8.1CD и закройте его для нужного пользователя. Делайте это только когда пользователь точно ничего не записывает: обрыв во время записи может повредить файл базы.
Рабочий процесс сервера
Сеансы клиент-серверной базы обслуживает процесс rphost.exe (в Linux — rphost). Один процесс держит сразу много сеансов, часто разных баз.
Завершение rphost обрывает все сеансы на этом процессе, а не только зависший. Перезапуск службы «Агент сервера 1С:Предприятия 8.3» выбивает вообще всех пользователей всех баз кластера. Делайте это вне рабочего времени или после предупреждения людей.
Понять, какой rphost нужен, можно по узлу «Рабочие процессы» в консоли: там видны PID и число соединений.
Соединения в СУБД: когда трогать SQL Server или PostgreSQL
В клиент-серверном варианте под сеансами 1С есть соединения рабочих процессов с СУБД. Пользователи 1С не подключаются к СУБД напрямую — с ней работает rphost.
Отсюда важное следствие: убийство соединения в СУБД не убирает сеанс в 1С. Рабочий процесс просто откроет новое соединение. Трогать СУБД имеет смысл в одном случае — долгая транзакция держит блокировки, и остальные пользователи стоят в ожидании.
MS SQL Server:
-- кто работает с базой
EXEC sp_who2;
-- завершить конкретное соединение (откатит его транзакцию)
KILL 57;
PostgreSQL:
SELECT pid, usename, state, xact_start, query
FROM pg_stat_activity
WHERE datname = 'buh';
SELECT pg_terminate_backend(12345);
Номер 57 и PID 12345 здесь условные — берите их из результата первого запроса.
Откат большой транзакции может идти дольше, чем она выполнялась. Если проведение документов за месяц висит час, KILL вернёт базу в рабочее состояние тоже не мгновенно.
Не переводите базу в однопользовательский режим средствами СУБД, пока работает кластер 1С. Рабочие процессы потеряют доступ, и пользователи получат ошибки вместо понятного сообщения о блокировке.
Автоматизация: rac и скрипт для ночных работ
ras — сервер администрирования, rac — консольный клиент к нему. Оба входят в состав сервера 1С. По умолчанию ras слушает порт 1545.
Запуск ras на Linux вручную:
/opt/1cv8/x86_64/8.3.24.1691/ras cluster --daemon
На Windows его обычно регистрируют отдельной службой.
Базовые команды:
# список кластеров — берём UUID кластера
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-сеанса>
Если у кластера есть администратор, к каждой команде добавьте --cluster-user и --cluster-pwd.
Включить блокировку начала сеансов и регламентных заданий:
rac localhost:1545 infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> \
--infobase-user="Администратор" --infobase-pwd="пароль" \
--sessions-deny=on --scheduled-jobs-deny=on \
--denied-message="Идёт обновление, вход до 23:30 закрыт" \
--permission-code="obnovlenie"
Сценарий ночного обновления из этих кирпичей:
- Включить блокировку сеансов и регламентных заданий.
- Пройти циклом по
session listи завершить каждый сеанс черезsession terminate. - Выполнить обновление или выгрузку с ключом
/UC. - Вернуть
--sessions-deny=offи--scheduled-jobs-deny=off.
Если сомневаетесь в каком-то параметре для своей версии платформы, сверьтесь со встроенной справкой: rac help session, rac help infobase.
Почему сеансы зависают и как сделать, чтобы выбивать приходилось реже
Если «выгонять всех» приходится каждую неделю, причина обычно в одной из ситуаций ниже.
- 💤 Брошенные сеансы. Человек закрыл ноутбук, связь пропала, сеанс остался. В свойствах базы в консоли задайте «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» (в секундах) — сервер сам уберёт такие сеансы.
- 🔁 Фоновые задания и обмены. Регламентное задание запускается раз в минуту и снова занимает базу. Смотрите столбец «Приложение» в списке сеансов: там видно «Фоновое задание».
- 🐢 Долгие транзакции. Перепроведение, закрытие месяца
, тяжёлый отчёт в транзакции. Их видно по долгому времени вызова в консоли и по
xact_startв PostgreSQL. - 📶 Нестабильная сеть до сервера. Разрывы дают «призрачные» сеансы, которые держат лицензии.
- 🎫 Лицензии. Если лицензий не хватает из-за зависших сеансов, посмотрите, кто их занимает:
rac session list --licensesпокажет сеанс и выданную ему лицензию.
Одна полезная привычка: в сообщении блокировки пишите время окончания работ. Тогда звонков «почему не пускает» почти не будет.
Выгонит ли удаление сеанса пользователя из базы навсегда?
Можно ли выбить пользователей из файловой базы удалённо?
1Cv8.1CD на файловом сервере.Что делать, если забыл код разрешения?
Освобождается ли лицензия сразу после удаления сеанса?
Нужен ли монопольный режим, чтобы просто выгнать всех?
.dt, тестирования и исправления. Чтобы завершить сеансы, достаточно прав администратора.