Зависший пользователь в базе 1С: как выгнать сеанс и не потерять данные

· 9 мин

Содержание

Принудительно завершить сеанс в 1С проще всего в клиент-серверной базе: откройте консоль администрирования серверов, найдите базу, раскройте ветку Сеансы, выделите нужный сеанс и выберите в контекстном меню Удалить. Пользователь получит сообщение, его клиент закроется, лицензия освободится.

В файловой базе консоли кластера нет. Там работают два способа: блокировка работы пользователей из самой программы или закрытие процесса 1cv8c.exe и открытого файла 1Cv8.1CD на компьютере, где лежит база. Для скриптов и планировщика подходит утилита rac. Какой способ выбрать, зависит от варианта базы и от того, жив ли ещё клиент у пользователя.

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

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

1. Отключить пользователя из режима Предприятия

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и др.) список подключений есть прямо в программе. Права нужны административные.

Где найти список активных пользователей

КонфигурацияПуть
Бухгалтерия предприятия 3.0Администрирование → Обслуживание → Активные пользователи
ЗУП 3.1Администрирование → Обслуживание → Активные пользователи
УТ 11НСИ и администрирование → Администрирование → Обслуживание → Активные пользователи
Любая конфигурацияГлавное меню → Функции для технического специалиста → Обработки → Активные пользователи

Если пункта «Функции для технического специалиста» нет в главном меню, включите его: Главное меню → Сервис и настройки → Параметры, флажок отображения команды «Функции для технического специалиста».

Как завершить сеанс из списка

  1. Откройте «Активные пользователи». В таблице видно имя пользователя, компьютер, приложение (тонкий клиент, конфигуратор, фоновое задание) и время начала сеанса.
  2. Выделите строку нужного сеанса.
  3. Нажмите команду завершения сеанса в командной панели формы.
  4. В клиент-серверной базе программа попросит логин и пароль администратора кластера, если он задан. Без них сеанс не завершится.

💡 Смотрите на колонку «Приложение». Сеанс «Фоновое задание» лучше не трогать: обрыв обмена или закрытия месяца посреди операции оставит данные в промежуточном состоянии.

2. Блокировка работы пользователей: выгнать всех разом

Когда нужно освободить базу целиком — перед обновлением, загрузкой .dt или тестированием и исправлением, — точечное удаление сеансов неудобно. Люди заходят снова. Здесь помогает блокировка.

Путь в БП 3.0 и ЗУП 3.1: Администрирование → Обслуживание → Блокировка работы пользователей.

  1. Поставьте флажок запрета работы пользователей.
  2. Укажите время начала и окончания блокировки. Окно в 5–10 минут даёт людям время записать документы.
  3. Напишите сообщение: «В 19:00 база будет закрыта на обновление, сохраните документы».
  4. Задайте код разрешения, например upd77. Он понадобится, чтобы войти самому.
  5. Нажмите «Установить».

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

Чтобы зайти в заблокированную базу, добавьте к строке запуска параметр /UC с кодом:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC"upd77"

Для конфигуратора — то же, но с DESIGNER. Для ночных скриптов в конфигурациях на БСП есть ещё параметр запуска /C"ЗавершитьРаботуПользователей": он сам ставит блокировку и ждёт выхода сеансов. Снимают её запуском с /C"РазрешитьРаботуПользователей".

Не забудьте снять блокировку после работ. Иначе утром никто не войдёт, а вы получите десяток звонков.

3. Консоль управления кластером: когда клиент завис

Если пользователь ушёл домой, а сеанс остался, или клиент не реагирует на сообщения, работайте через консоль администрирования серверов 1С:Предприятия. Это оснастка MMC, она ставится вместе с сервером 1С или отдельно из дистрибутива.

Пошагово

  1. Запустите «Администрирование серверов 1С Предприятия» из меню «Пуск».
  2. Если сервер ещё не добавлен: правой кнопкой по Central 1C:Enterprise 8.3 servers → Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя сервера. Порт агента по умолчанию — 1540.
  3. Раскройте: сервер → Кластеры → кластер → Информационные базы → ваша база → Сеансы.
  4. Найдите сеанс по пользователю, компьютеру и времени начала.
  5. Правой кнопкой → Удалить. Подтвердите.

Если стоит пароль администратора кластера, консоль спросит его при раскрытии кластера.

Сеансы и соединения — в чём разница

ВеткаЧто показываетКогда удалять
Сеансылогический вход пользователя, держит лицензиюобычное принудительное завершение
Соединениясетевое подключение к рабочему процессусеанс удалён, но база всё ещё занята

Сначала удаляйте сеанс. Соединение трогайте, только если после этого монопольный режим всё равно не ставится.

💡 Колонка «Спящий» и «Время последней активности» подсказывают, какой сеанс действительно брошен. Сеанс с активностью минуту назад — живой человек.

4. Командная строка: утилита rac

Утилита rac делает то же самое, что консоль, но из скрипта. Работает в Windows и Linux. Ей нужен запущенный сервер администрирования ras (порт по умолчанию — 1545).

Запуск ras

В Linux:

/opt/1cv8/x86_64/8.3.24.1548/ras cluster --daemon

Номер версии в пути подставьте свой. В Windows ras обычно регистрируют службой, чтобы не держать окно открытым.

Найти и завершить сеанс

# 1. UUID кластера
rac localhost:1545 cluster list

# 2. Список сеансов кластера
rac localhost:1545 session list --cluster=<uuid-кластера>

# 3. Завершить конкретный сеанс
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если на кластере есть администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль> к командам с --cluster. Чтобы ограничить список одной базой, сначала получите её UUID через rac localhost:1545 infobase summary list --cluster=<uuid>, затем добавьте --infobase=<uuid-базы> к session list.

Точный набор параметров зависит от версии платформы. Если команда ругается на ключ, смотрите rac help session.

Запрет входа через rac

Блокировку можно поставить и на уровне кластера, без открытия базы:

rac localhost:1545 infobase update --cluster=<uuid> --infobase=<uuid-базы> \
  --infobase-user="Администратор" --infobase-pwd="***" \
  --sessions-deny=on --denied-message="Обновление" --permission-code="upd77"

Снимается та же командой с --sessions-deny=off. Это удобно, когда база не открывается вовсе и до «Блокировки работы пользователей» не добраться.

5. Файловая база: процессы и открытые файлы

В файловом варианте нет сервера, который бы распоряжался сеансами. База — это файл 1Cv8.1CD, и его держат открытым клиенты на компьютерах пользователей.

Порядок действий

  1. Попробуйте блокировку из раздела 2. Клиенты на БСП её видят и закрываются сами. Это самый мягкий путь.
  2. Найдите, кто держит файл. На компьютере, где лежит база, откройте Управление компьютером → Общие папки → Открытые файлы. В списке будет путь к 1Cv8.1CD и имя пользователя Windows.
  3. Закройте файл. Правой кнопкой по строке → Закрыть открытый файл. Из командной строки:
net file
net file 17 /close

Здесь 17 — идентификатор из вывода первой команды.

  1. Если база на терминальном сервере, ищите процесс клиента в Диспетчере задач на вкладке «Пользователи» или завершите процесс:
taskkill /FI "USERNAME eq ivanova" /IM 1cv8c.exe /F

Толстый клиент и конфигуратор работают в процессе 1cv8.exe, тонкий клиент — 1cv8c.exe.

  1. Если база опубликована на веб-сервере, файл держит сам веб-сервер. Перезапустите службу Apache или пул приложений IIS — оборвутся все веб-сеансы этой публикации.

Сделайте копию каталога базы перед обрывом сеансов в файловом режиме. Если клиент в этот момент писал в 1Cv8.1CD, файл может повредиться, и понадобится «Тестирование и исправление».

6. Конфигуратор и монопольный режим

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

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

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

Порядок на практике такой:

  1. Поставьте блокировку (раздел 2 или rac, раздел 4) с кодом разрешения.
  2. Дождитесь, пока в «Активных пользователях» конфигуратора останетесь только вы. Висящие сеансы удалите через консоль кластера или закройте файл (раздел 5).
  3. Запустите конфигуратор с /UC"код" и выполните операцию.
  4. Снимите блокировку.

Фоновые задания тоже держат базу. При блокировке через «Блокировку работы пользователей» или rac можно отдельно запретить регламентные задания — в rac за это отвечает параметр --scheduled-jobs-deny=on.

7. Почему сеансы зависают и как это предупредить

Зависший сеанс — обычно следствие обрыва, а не ошибки пользователя.

Частые причины:

  • 📶 обрыв сети или VPN, ноутбук ушёл в сон с открытой базой;
  • 🖥️ пользователь закрыл RDP-окно крестиком, не выйдя из 1С;
  • ⏳ долгая операция в фоне: закрытие месяца , обмен, тяжёлый отчёт;
  • 🧱 рабочий процесс rphost упёрся в память и перестал отвечать;
  • 🗂️ повреждённый сеансовый кэш сервера после аварийного отключения.

Настройки, которые сокращают число «призраков»

В свойствах информационной базы в консоли кластера есть два параметра:

  • «Время засыпания пассивного сеанса» — через сколько секунд неактивный сеанс отпускает ресурсы;
  • «Время завершения спящего сеанса» — через сколько секунд спящий сеанс завершается сам.

Если поставить второй параметр, например, в 3600, брошенный на ночь сеанс закроется через час без вашего участия. Ноль означает, что автоматического завершения нет.

Для терминальных серверов задайте в групповых политиках лимит для отключённых RDP-сеансов. Тогда сеанс Windows закроется, а с ним и клиент 1С.

Если сеанс не удаляется вовсе

Бывает, что консоль показывает сеанс, Удалить проходит без ошибки, а строка возвращается. Порядок эскалации:

  1. Удалите соединения этой базы в ветке Соединения.
  2. Найдите в консоли рабочий процесс, к которому привязан сеанс, и посмотрите его память.
  3. Вне рабочего времени перезапустите службу «Агент сервера 1С:Предприятия 8.3».
  4. Если не помогло — очистите сеансовые данные сервера: остановите службу, переименуйте папки snccntx* в каталоге srvinfo\reg_1541, запустите службу.

Шаги 3 и 4 обрывают все сеансы всех баз кластера, включая фоновые задания. Делайте их ночью или после предупреждения всех пользователей. Папки переименовывайте, а не удаляйте: так их легко вернуть.

Диагностика: выберите симптом

Частые вопросы

Освобождается ли лицензия сразу после удаления сеанса?
Да, программная лицензия возвращается в пул вместе с завершением сеанса. Если число занятых лицензий не уменьшилось, проверьте, не остался ли второй сеанс того же пользователя.
Узнает ли пользователь, что его сеанс завершили?
При удалении из консоли или через «Активные пользователи» клиент показывает сообщение о разрыве и закрывается. Текст сообщения можно задать при блокировке.
Можно ли завершать сеансы по расписанию?
Да. Скрипт с rac в Планировщике заданий Windows или cron в Linux выбирает сеансы нужной базы и завершает их. Перед этим ставят запрет входа, чтобы люди не вернулись.
Обычный пользователь может завершить чужой сеанс?
Нет. Нужны права администратора информационной базы, а в клиент-серверном варианте ещё и доступ к кластеру, если на нём задан администратор.
Что будет с документом, который пользователь редактировал?
Незаписанные изменения пропадут. Уже записанные и проведённые документы останутся, транзакция в момент обрыва откатится целиком.