Отключаем зависшего пользователя от базы 1С без перезагрузки сервера
Содержание
Завершить сеанс пользователя
в 1С:Предприятии 8.3 быстрее всего так: в клиент-серверной базе откройте консоль администрирования кластера, раскройте Информационные базы → <ваша база> → Сеансы, щёлкните по нужной строке правой кнопкой и выберите «Удалить». В типовой конфигурации на БСП то же самое делается без консоли: Администрирование → Обслуживание → Активные пользователи, кнопка «Завершить сеанс».
Типичная ситуация: вечер, пора ставить обновление, а в списке активных пользователей висит менеджер, который ушёл домой и не закрыл программу. Или бухгалтер жалуется, что 1С «не пускает»: его старый сеанс после обрыва связи всё ещё держит лицензию. Отключить его можно тремя способами — из самой программы, из консоли кластера и командой rac, — а блокировка входа не даст ему вернуться.
Когда сеанс приходится закрывать принудительно
Принудительное отключение — не рядовая операция. Пользователь теряет несохранённые данные: открытый документ, недописанный отчёт, незаписанную форму. Поэтому сначала попробуйте договориться: позвонить, написать в мессенджер, попросить выйти.
Обрывать сеанс без предупреждения приходится в таких случаях:
- 🔧 Обновление конфигурации с изменением структуры базы — для него нужен монопольный доступ.
- 📦 Загрузка
.dt, тестирование и исправление базы — тоже только в монопольном режиме. - 🔑 Не хватает лицензий: зависшие сеансы занимают места, и новые пользователи получают отказ.
- 🐢 Сеанс тормозит всех: долгий отчёт или обработка держит блокировки, остальные ждут.
- 🚪 Увольнение или смена прав — нужно, чтобы сотрудник вышел из базы прямо сейчас, а не при следующем входе.
Сеанс фонового задания (обмена, загрузки банковской выписки, расчёта) обрывать опасно: операция прервётся на середине. Если в списке видите сеанс с приложением «Фоновое задание», сначала выясните, что оно делает.
Способ 1. «Активные пользователи» в режиме Предприятие и в Конфигураторе
Это самый удобный путь для бухгалтерских баз: не нужен доступ к серверу, не нужна консоль.
В типовой конфигурации (БП 3.0, ЗУП 3.1, УТ 11)
- Откройте
Администрирование → Обслуживание. - Перейдите по ссылке «Активные пользователи».
- Выделите строку пользователя. В колонках видно приложение (тонкий клиент, веб-клиент, Конфигуратор, фоновое задание), компьютер и время начала сеанса.
- Нажмите «Завершить сеанс».
- Если база клиент-серверная и на кластере задан администратор, программа попросит его имя и пароль. Введите их — это учётная запись администратора кластера, а не пользователя 1С.
Для команды нужны полные права в информационной базе. У обычного бухгалтера кнопка недоступна.
💡 Двойной щелчок по строке в списке открывает журнал регистрации с отбором по этому сеансу. Так видно, что пользователь делал последним, — полезно, если сеанс «висит» и нужно понять почему.
В Конфигураторе
В Конфигураторе есть пункт Администрирование → Активные пользователи. Он показывает, кто сейчас в базе, но завершить сеанс оттуда нельзя. Список удобен, чтобы перед обновлением увидеть, кого ещё нужно попросить выйти.
Если база файловая
В файловом варианте нет сервера, который мог бы оборвать соединение. Завершение отдельного сеанса из списка в типовых конфигурациях рассчитано на клиент-серверный режим. Для файловой базы остаются два пути:
- закрыть программу на компьютере пользователя (сам пользователь, удалённый доступ или диспетчер задач на терминальном сервере — процесс
1cv8c.exeили1cv8.exe); - включить блокировку работы пользователей (см. раздел про регламентные работы) — программа сама предупредит всех и закроет их сеансы.
Завершая процесс через диспетчер задач, проверьте пользователя в колонке «Пользователь». На терминальном сервере у каждого сотрудника свой 1cv8c.exe, легко убить чужой.
Способ 2. Консоль администрирования кластера серверов 1С
Консоль — это оснастка MMC «Администрирование серверов 1С:Предприятия». Она ставится вместе с платформой и работает только для клиент-серверных баз.
Подготовка: если консоль не открывается
Самая частая проблема — консоль выдаёт ошибку при запуске или не видит сервер. Причина обычно одна: не зарегистрирована библиотека radmin.dll нужной версии платформы. Запустите командную строку от имени администратора и выполните:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути подставьте свой — он должен совпадать с версией платформы на сервере. После смены релиза платформы регистрацию нужно повторить.
Пошагово
- Запустите консоль, щёлкните правой кнопкой по «Central 1C:Enterprise 8.3 servers» и добавьте центральный сервер: имя компьютера и порт агента (по умолчанию 1540).
- Раскройте
Кластеры → <кластер> → Информационные базы → <ваша база> → Сеансы. - Найдите пользователя. Помогут колонки «Пользователь», «Компьютер», «Приложение», «Начало работы».
- Щёлкните по строке правой кнопкой и выберите «Удалить». Подтвердите.
Сеанс исчезнет из списка, лицензия освободится сразу. Пользователь увидит сообщение о разрыве связи с сервером.
💡 Узел Сеансы есть и на уровне всего кластера — там видны сеансы всех баз. Удобно, если на сервере десяток баз и непонятно, в какой из них «застрял» человек.
Сеанс и соединение — не одно и то же
В консоли есть узлы «Сеансы» и «Соединения». Сеанс — это работа пользователя с базой: его права, лицензия, открытые данные. Соединение — канал связи между клиентом и рабочим процессом. Пользователя отключают через сеанс. Удаление одного соединения сеанс обычно не закрывает: клиент переподключится.
Способ 3. Утилита rac: завершение сеансов из командной строки
rac пригодится, если на сервере Linux, нет графического доступа или нужно отключать пользователей по расписанию — например, ночью перед резервным копированием.
Запуск сервера администрирования ras
rac работает не напрямую с кластером, а через сервер администрирования ras (порт по умолчанию 1545). Его нужно запустить на сервере 1С. Для проверки — вручную:
"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe" cluster --port=1545 localhost:1540
Для постоянной работы ras регистрируют как службу Windows с ключом --service. На Linux его запускают как демон (--daemon) или через systemd.
Основные команды
Найти идентификатор кластера:
rac cluster list
Найти идентификатор базы:
rac infobase summary list --cluster=<uuid-кластера>
Посмотреть сеансы конкретной базы:
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
Завершить выбранный сеанс:
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере задан администратор, к каждой команде добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. Без указания адреса rac подключается к localhost:1545. Для удалённого сервера адрес пишут после команды: rac cluster list srv1c:1545. Полный список параметров выдаёт rac help session.
Отключить всех пользователей базы одним скриптом
Вывод rac — блоки строк «ключ : значение». В блоке сеанса первая строка — session : <uuid>. Скрипт PowerShell ниже находит все сеансы базы и завершает их по очереди:
$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cluster = "<uuid-кластера>"
$ib = "<uuid-базы>"
& $rac session list --cluster=$cluster --infobase=$ib |
Select-String '^session\s+:\s+(\S+)' |
ForEach-Object {
$id = $_.Matches[0].Groups[1].Value
& $rac session terminate --cluster=$cluster --session=$id
}
Скрипт отключит всех, включая фоновые задания и администратора, который сейчас работает в Конфигураторе. Запускайте его вне рабочего времени и только после блокировки новых входов — иначе через минуту пользователи зайдут снова.
Блокировка новых подключений на время регламентных работ
Отключить людей мало — нужно, чтобы они не зашли обратно, пока идёт обновление. Для этого есть блокировка начала сеансов.
| Способ | Где | Подходит для |
|---|---|---|
| Блокировка работы пользователей (БСП) | Администрирование → Обслуживание | Файловые и клиент-серверные базы с типовой конфигурацией |
| Свойства базы в консоли кластера | Карточка базы в консоли | Клиент-серверные базы, любая конфигурация |
rac infobase update | Командная строка | Автоматизация, Linux, ночные скрипты |
Через программу
- Откройте
Администрирование → Обслуживаниеи перейдите в «Блокировку работы пользователей». - Отметьте запрет работы, напишите сообщение для пользователей: «С 20:00 до 21:00 обновление, сохраните документы».
- Укажите время начала и окончания блокировки.
- Задайте код разрешения — по нему администратор сможет войти в заблокированную базу.
- Нажмите «Установить блокировку».
Программа заранее предупреждает пользователей и к началу блокировки сама закрывает их сеансы. Это мягче, чем удаление из консоли: у людей есть несколько минут, чтобы сохранить работу.
Чтобы войти в заблокированную базу, добавьте к параметрам запуска ключ /UC с кодом разрешения:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /UC1234
Через консоль кластера
Откройте свойства базы в консоли. Включите флажок «Блокировка начала сеансов включена», заполните время начала и конца, сообщение и код разрешения. Там же есть флажок «Блокировка регламентных заданий включена» — включите его, чтобы обмены и фоновые расчёты не стартовали во время работ.
Через rac
rac infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> ^
--infobase-user=Администратор --infobase-pwd=<пароль> ^
--sessions-deny=on --scheduled-jobs-deny=on ^
--denied-message="Обновление базы" --permission-code=1234
Для этой команды нужны логин и пароль пользователя информационной базы с административными правами. После работ снимите блокировку той же командой с --sessions-deny=off --scheduled-jobs-deny=off.
Не забудьте снять блокировку после обновления. Иначе утром вся бухгалтерия увидит сообщение о регламентных работах и не сможет войти.
Почему сеансы зависают и как сделать так, чтобы их было меньше
Если отключать «призраков» приходится каждый день, проблема не в пользователях, а в настройках.
Откуда берутся зависшие сеансы
- 📶 Обрыв связи. Ноутбук ушёл в сон, упал VPN, пропал Wi-Fi. Клиента уже нет, а сервер ещё какое-то время держит сеанс — вдруг клиент вернётся.
- 🖥️ Закрытое окно RDP. Сотрудник нажал крестик в окне удалённого рабочего стола вместо «Выйти». Терминальная сессия осталась, 1С в ней продолжает работать.
- ⏳ Долгая операция. Сеанс жив, просто выполняет тяжёлый отчёт или закрытие месяца . Его не стоит путать с зависшим.
- 🔒 Ожидание блокировки. Сеанс ждёт, пока другой сеанс освободит данные. В консоли это видно по сеансам, которые долго находятся в одном вызове.
Что настроить
- Таймауты сеансов. В Конфигураторе, в
Администрирование → Параметры информационной базы, задаются время засыпания пассивного сеанса и время завершения спящего сеанса. Первое — через сколько секунд без связи сеанс «засыпает» и отдаёт лицензию. Второе — через сколько спящий сеанс будет завершён окончательно. - Завершение терминальных сессий. На терминальном сервере в групповой политике задайте лимит для отключённых сеансов RDP: например, завершать через 2 часа. Тогда брошенные окна не будут копиться неделями.
- Регламентные задания. Тяжёлые обмены и пересчёты переносите на ночь, чтобы днём они не держали блокировки.
Как найти виновника тормозов
В списке сеансов консоли кластера включите колонки с текущим временем вызова и нагрузкой на СУБД (через настройку колонок списка). Сеанс, у которого текущий вызов длится десятки минут, и есть тот, кто держит остальных. Прежде чем его удалить, посмотрите в журнале регистрации, что именно запущено: может, это закрытие месяца, которое лучше дождаться, чем запускать заново.
Если сеанс не завершается
Бывает, что сеанс удалили, а он снова в списке или не исчезает вовсе.
Перезапуск службы «Агент сервера 1С:Предприятия 8.3» или завершение процесса rphost.exe отключает сразу всех, кто работает через этот процесс, а не одного человека. Незаписанные документы у всех пропадут. Предупредите пользователей и выбирайте нерабочее время.