Принудительное завершение сеансов в 1С 8.3: от блокировки до консоли кластера

· 10 мин

Содержание

Чтобы выбить пользователей из базы 1С, в типовой конфигурации откройте Администрирование → Обслуживание → Блокировка работы пользователей, задайте время начала и код разрешения и нажмите «Установить блокировку». Через несколько минут программа сама закроет сеансы и не пустит новых. В клиент-серверном варианте то же самое делается в консоли кластера: свойства базы → «Блокировка начала сеансов включена», затем удаление сеансов вручную.

Способ зависит от трёх вещей: файловая база или серверная, есть ли у вас права администратора кластера и нужно ли, чтобы люди успели сохранить документы. Мягкие варианты дают людям сохранить работу, жёсткие обрывают сеанс сразу.

Перед тем как выгонять: что проверить и кого предупредить

Принудительное завершение сеанса — это обрыв. Документ, который человек не записал, пропадёт. Если в этот момент шло проведение большого документа или закрытие месяца , транзакция откатится, и операцию придётся запускать заново.

Что сделать заранее:

  • 📣 разослать сообщение в рабочий чат за 15–30 минут, а не в момент блокировки;
  • 🔍 посмотреть список активных пользователей и понять, кто реально работает, а кто просто оставил окно открытым на ночь;
  • ⏳ проверить, нет ли длительных фоновых операций: расчёта себестоимости, обмена, загрузки банковской выписки;
  • 🔑 убедиться, что у вас есть пароль администратора базы, а для серверной базы — ещё и администратора кластера, если он задан;
  • 💾 сделать резервную копию, если после выгона планируется обновление или тестирование.

Не все сеансы — это люди. В списке бывают фоновые задания, регламентные задания, COM-соединения (обмен с сайтом, внешние обработки), веб-сервисы и мобильные клиенты. Их тоже придётся остановить, иначе монопольный доступ не получится.

Вариант базыМягкий способЖёсткий способ
ФайловаяБлокировка работы пользователей в режиме «Предприятие»Закрытие процессов 1cv8.exe / открытых файлов на сервере
Клиент-сервернаяТа же блокировка или блокировка в свойствах базы в консолиУдаление сеансов в консоли или через rac
Любая (крайний случай)—Разрыв соединения на стороне СУБД

Блокировка работы пользователей из режима «Предприятие»

Это главный и самый безопасный способ. Он есть во всех типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА и ERP. Пользователи получают предупреждение, у них есть время записать документы, после чего сеансы завершаются сами.

Пошагово

  1. Войдите в базу под пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание.
  3. Сначала нажмите ссылку «Активные пользователи» — посмотрите, кто сейчас в базе.
  4. Вернитесь и откройте «Блокировка работы пользователей».
  5. Заполните сообщение для пользователей: что происходит и когда база снова будет доступна.
  6. Укажите время начала и окончания блокировки. Начало ставьте с запасом в 5–10 минут.
  7. Задайте код разрешения, например UPDATE2025. По нему вы сами сможете войти в заблокированную базу.
  8. Нажмите «Установить блокировку».

После установки у пользователей начинают всплывать предупреждения. В момент начала блокировки их сеансы закрываются, а при попытке войти они видят ваше сообщение.

Ваш собственный сеанс блокировка не закрывает. А вот войти повторно вы сможете только с кодом разрешения — запишите его до того, как закроете программу.

Как войти в заблокированную базу

Добавьте к параметрам запуска ключ /UC с кодом разрешения. В окне списка баз: «Изменить» → последний шаг мастера → поле «Дополнительные параметры запуска»:

/UCUPDATE2025

Если код с пробелами, возьмите его в кавычки: /UC"код с пробелами". После работы снимите блокировку той же формой — кнопкой «Снять блокировку» — или дождитесь времени окончания, если вы его указали.

Завершение сеансов из списка активных пользователей

В форме «Активные пользователи» есть команда завершения выбранного сеанса. В клиент-серверной базе программа запросит параметры администрирования: логин и пароль администратора кластера (если задан) и администратора базы. Без них выбить конкретного человека из режима «Предприятие» не получится — остаётся общая блокировка.

В файловой базе завершить чужой сеанс из этого списка нельзя: у файлового варианта нет механизма удалённого управления сеансами. Работает только блокировка, которая заставляет клиентов закрыться самостоятельно.

Конфигуратор и монопольный доступ

Конфигуратор сам по себе пользователей не выгоняет. В меню Администрирование → Активные пользователи он показывает список подключённых сеансов, но кнопки «завершить» там нет. Список нужен, чтобы понять, кто мешает.

Монопольный доступ требуется не для всего, а для конкретных операций:

  • обновление конфигурации базы данных, если меняется структура хранения;
  • загрузка информационной базы из файла .dt;
  • тестирование и исправление информационной базы;
  • часть операций со сжатием и реструктуризацией таблиц.

Правка конфигурации, сравнение, сохранение в .cf и выгрузка в .dt монопольного режима не требуют.

Что делать, когда Конфигуратор просит монополию

В клиент-серверной базе при обновлении конфигурации БД с активными пользователями платформа показывает окно с предложением завершить сеансы и повторить. Если вы ввели параметры администрирования кластера, она сама удалит мешающие сеансы. Это быстро, но предупреждения пользователи не получат.

В файловой базе такого предложения нет. Сначала выгоните всех через блокировку из режима «Предприятие», затем запускайте Конфигуратор с тем же ключом /UC, иначе он тоже упрётся в блокировку.

Если вы закрыли Конфигуратор, не сняв блокировку и забыв код, база останется недоступной для всех до времени окончания блокировки. Выход — снять флажок в консоли кластера или дождаться окончания блокировки.

Консоль кластера: блокировка и удаление сеансов на сервере

В клиент-серверном варианте самый надёжный инструмент — оснастка «Администрирование серверов 1С:Предприятия» (MMC) на сервере или на машине администратора. Она подключается к агенту сервера (порт 1540 по умолчанию).

Блокировка начала сеансов в свойствах базы

  1. Раскройте Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы.
  2. Откройте свойства нужной базы. Консоль попросит логин и пароль администратора этой базы.
  3. Отметьте флажок «Блокировка начала сеансов включена».
  4. Заполните поля начала и окончания, сообщение и код разрешения.
  5. Чтобы регламентные задания не создавали новые сеансы, отметьте «Блокировка регламентных заданий включена».
  6. Нажмите «ОК».

Новые пользователи с этого момента не войдут. Но уже подключённые останутся в базе — блокировка в консоли сама сеансы не обрывает.

Удаление сеансов

  1. Под базой раскройте ветку «Сеансы».
  2. Отсортируйте по колонке «Приложение»: так видно, где люди (1CV8C, 1CV8), где фоновые задания, где Конфигуратор, где COM-соединения.
  3. Выделите сеансы (можно несколько с 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. Если у человека завис клиент или он ушёл, не закрыв программу на ноутбуке, блокировка из «Предприятия» может не отработать.

Варианты по нарастанию жёсткости:

  1. Терминальный сервер . Если база открыта через RDP, в диспетчере задач на вкладке «Пользователи» найдите сеанс сотрудника и завершите процесс 1cv8.exe или 1cv8c.exe (тонкий клиент).
  2. Файловый сервер. На машине, где лежит база, откройте Управление компьютером → Общие папки → Открытые файлы, найдите 1Cv8.1CD и закройте файл для нужного пользователя.
  3. Компьютер пользователя. Попросить закрыть программу или завершить процесс удалённо средствами администрирования домена.

Перед закрытием файла сделайте копию каталога базы. Обрыв во время записи может повредить 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-файле на общем диске. Положите сценарий в каталог, доступный только учётной записи планировщика, или используйте пользователя с аутентификацией операционной системы.

Ночное окно обслуживания
Выполнено: 0 / 6

Ошибки и зависшие ситуации

Диагностика: выберите симптом
Сколько ждать после установки блокировки, прежде чем сеансы закроются?
Сеансы закрываются в момент начала блокировки, который вы указали. Предупреждения пользователи начинают получать заранее, поэтому начало лучше ставить через 5–10 минут.
Можно ли выгнать одного пользователя, не трогая остальных?
В серверной базе — да: удалите его сеанс в консоли кластера или командой rac session terminate. В файловой базе точечно это делается только закрытием его процесса или открытого файла.
Освобождает ли удаление сеанса лицензию?
Да, после завершения сеанса лицензия возвращается в пул и доступна другому пользователю.
Блокировка мешает регламентным заданиям?
Блокировка начала сеансов и блокировка регламентных заданий — разные флажки. Чтобы на время работ не запускались обмены и фоновые расчёты, включайте оба.
Почему в списке активных пользователей я вижу сам себя дважды?
Обычно это ваш открытый Конфигуратор и сеанс «Предприятия», либо старый сеанс, оборванный при потере связи. Второй можно удалить в консоли кластера.