Зависший пользователь в базе 1С: как выгнать сеанс и не потерять данные
Содержание
Принудительно завершить сеанс в 1С проще всего в клиент-серверной базе: откройте консоль администрирования серверов, найдите базу, раскройте ветку Сеансы, выделите нужный сеанс и выберите в контекстном меню Удалить. Пользователь получит сообщение, его клиент закроется, лицензия освободится.
В файловой базе консоли кластера нет. Там работают два способа: блокировка работы пользователей из самой программы или закрытие процесса 1cv8c.exe и открытого файла 1Cv8.1CD на компьютере, где лежит база. Для скриптов и планировщика подходит утилита rac. Какой способ выбрать, зависит от варианта базы и от того, жив ли ещё клиент у пользователя.
| Способ | Вариант базы | Когда выбирать | Чем рискуете |
|---|---|---|---|
| «Активные пользователи» в режиме Предприятия | файловый и клиент-серверный | нужно точечно отключить одного-двух человек | почти ничем, если у вас есть права |
| Блокировка работы пользователей | оба | нужно выгнать всех перед обновлением | несохранённые документы у пользователей |
| Консоль кластера серверов | клиент-серверный | сеанс завис, клиент не отвечает | обрыв незавершённой транзакции |
Утилита rac | клиент-серверный | ночные регламенты, Linux, скрипты | то же, что у консоли |
| Процессы и открытые файлы ОС | файловый | база занята, а пользователей «нет» | порча данных при записи в момент обрыва |
Любой из способов обрывает работу человека. Документ, который он не записал, пропадёт. Предупредите пользователя или хотя бы отдел, если это возможно.
1. Отключить пользователя из режима Предприятия
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и др.) список подключений есть прямо в программе. Права нужны административные.
Где найти список активных пользователей
| Конфигурация | Путь |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Обслуживание → Активные пользователи |
| ЗУП 3.1 | Администрирование → Обслуживание → Активные пользователи |
| УТ 11 | НСИ и администрирование → Администрирование → Обслуживание → Активные пользователи |
| Любая конфигурация | Главное меню → Функции для технического специалиста → Обработки → Активные пользователи |
Если пункта «Функции для технического специалиста» нет в главном меню, включите его: Главное меню → Сервис и настройки → Параметры, флажок отображения команды «Функции для технического специалиста».
Как завершить сеанс из списка
- Откройте «Активные пользователи». В таблице видно имя пользователя, компьютер, приложение (тонкий клиент, конфигуратор, фоновое задание) и время начала сеанса.
- Выделите строку нужного сеанса.
- Нажмите команду завершения сеанса в командной панели формы.
- В клиент-серверной базе программа попросит логин и пароль администратора кластера, если он задан. Без них сеанс не завершится.
💡 Смотрите на колонку «Приложение». Сеанс «Фоновое задание» лучше не трогать: обрыв обмена или закрытия месяца посреди операции оставит данные в промежуточном состоянии.
2. Блокировка работы пользователей: выгнать всех разом
Когда нужно освободить базу целиком — перед обновлением, загрузкой .dt или тестированием и исправлением, — точечное удаление сеансов неудобно. Люди заходят снова. Здесь помогает блокировка.
Путь в БП 3.0 и ЗУП 3.1: Администрирование → Обслуживание → Блокировка работы пользователей.
- Поставьте флажок запрета работы пользователей.
- Укажите время начала и окончания блокировки. Окно в 5–10 минут даёт людям время записать документы.
- Напишите сообщение: «В 19:00 база будет закрыта на обновление, сохраните документы».
- Задайте код разрешения, например
upd77. Он понадобится, чтобы войти самому. - Нажмите «Установить».
После начала блокировки клиентские сеансы получают предупреждение и через несколько минут закрываются. Новые входы запрещены.
Чтобы зайти в заблокированную базу, добавьте к строке запуска параметр /UC с кодом:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC"upd77"
Для конфигуратора — то же, но с DESIGNER. Для ночных скриптов в конфигурациях на БСП есть ещё параметр запуска /C"ЗавершитьРаботуПользователей": он сам ставит блокировку и ждёт выхода сеансов. Снимают её запуском с /C"РазрешитьРаботуПользователей".
Не забудьте снять блокировку после работ. Иначе утром никто не войдёт, а вы получите десяток звонков.
3. Консоль управления кластером: когда клиент завис
Если пользователь ушёл домой, а сеанс остался, или клиент не реагирует на сообщения, работайте через консоль администрирования серверов 1С:Предприятия. Это оснастка MMC, она ставится вместе с сервером 1С или отдельно из дистрибутива.
Пошагово
- Запустите «Администрирование серверов 1С Предприятия» из меню «Пуск».
- Если сервер ещё не добавлен: правой кнопкой по
Central 1C:Enterprise 8.3 servers→Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя сервера. Порт агента по умолчанию —1540. - Раскройте: сервер →
Кластеры→ кластер →Информационные базы→ ваша база →Сеансы. - Найдите сеанс по пользователю, компьютеру и времени начала.
- Правой кнопкой →
Удалить. Подтвердите.
Если стоит пароль администратора кластера, консоль спросит его при раскрытии кластера.
Сеансы и соединения — в чём разница
| Ветка | Что показывает | Когда удалять |
|---|---|---|
Сеансы | логический вход пользователя, держит лицензию | обычное принудительное завершение |
Соединения | сетевое подключение к рабочему процессу | сеанс удалён, но база всё ещё занята |
Сначала удаляйте сеанс. Соединение трогайте, только если после этого монопольный режим всё равно не ставится.
💡 Колонка «Спящий» и «Время последней активности» подсказывают, какой сеанс действительно брошен. Сеанс с активностью минуту назад — живой человек.
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, и его держат открытым клиенты на компьютерах пользователей.
Порядок действий
- Попробуйте блокировку из раздела 2. Клиенты на БСП её видят и закрываются сами. Это самый мягкий путь.
- Найдите, кто держит файл. На компьютере, где лежит база, откройте
Управление компьютером → Общие папки → Открытые файлы. В списке будет путь к1Cv8.1CDи имя пользователя Windows. - Закройте файл. Правой кнопкой по строке →
Закрыть открытый файл. Из командной строки:
net file
net file 17 /close
Здесь 17 — идентификатор из вывода первой команды.
- Если база на терминальном сервере, ищите процесс клиента в Диспетчере задач на вкладке «Пользователи» или завершите процесс:
taskkill /FI "USERNAME eq ivanova" /IM 1cv8c.exe /F
Толстый клиент и конфигуратор работают в процессе 1cv8.exe, тонкий клиент — 1cv8c.exe.
- Если база опубликована на веб-сервере, файл держит сам веб-сервер. Перезапустите службу Apache или пул приложений IIS — оборвутся все веб-сеансы этой публикации.
Сделайте копию каталога базы перед обрывом сеансов в файловом режиме. Если клиент в этот момент писал в 1Cv8.1CD, файл может повредиться, и понадобится «Тестирование и исправление».
6. Конфигуратор и монопольный режим
Конфигуратор сам по себе не «выгоняет» пользователей. Его пункт Администрирование → Активные пользователи — это просмотр: кто подключён, с какого компьютера, каким приложением.
Монопольный режим требуется не для любой работы в конфигураторе, а для конкретных операций:
- 🔧 обновление конфигурации базы данных, когда меняется структура;
- 💾 загрузка информационной базы из
.dt; - 🩺 тестирование и исправление;
- 🔄 часть операций при обновлении типовой конфигурации.
Порядок на практике такой:
- Поставьте блокировку (раздел 2 или
rac, раздел 4) с кодом разрешения. - Дождитесь, пока в «Активных пользователях» конфигуратора останетесь только вы. Висящие сеансы удалите через консоль кластера или закройте файл (раздел 5).
- Запустите конфигуратор с
/UC"код"и выполните операцию. - Снимите блокировку.
Фоновые задания тоже держат базу. При блокировке через «Блокировку работы пользователей» или rac можно отдельно запретить регламентные задания — в rac за это отвечает параметр --scheduled-jobs-deny=on.
7. Почему сеансы зависают и как это предупредить
Зависший сеанс — обычно следствие обрыва, а не ошибки пользователя.
Частые причины:
- 📶 обрыв сети или VPN, ноутбук ушёл в сон с открытой базой;
- 🖥️ пользователь закрыл RDP-окно крестиком, не выйдя из 1С;
- ⏳ долгая операция в фоне: закрытие месяца , обмен, тяжёлый отчёт;
- 🧱 рабочий процесс
rphostупёрся в память и перестал отвечать; - 🗂️ повреждённый сеансовый кэш сервера после аварийного отключения.
Настройки, которые сокращают число «призраков»
В свойствах информационной базы в консоли кластера есть два параметра:
- «Время засыпания пассивного сеанса» — через сколько секунд неактивный сеанс отпускает ресурсы;
- «Время завершения спящего сеанса» — через сколько секунд спящий сеанс завершается сам.
Если поставить второй параметр, например, в 3600, брошенный на ночь сеанс закроется через час без вашего участия. Ноль означает, что автоматического завершения нет.
Для терминальных серверов задайте в групповых политиках лимит для отключённых RDP-сеансов. Тогда сеанс Windows закроется, а с ним и клиент 1С.
Если сеанс не удаляется вовсе
Бывает, что консоль показывает сеанс, Удалить проходит без ошибки, а строка возвращается. Порядок эскалации:
- Удалите соединения этой базы в ветке
Соединения. - Найдите в консоли рабочий процесс, к которому привязан сеанс, и посмотрите его память.
- Вне рабочего времени перезапустите службу «Агент сервера 1С:Предприятия 8.3».
- Если не помогло — очистите сеансовые данные сервера: остановите службу, переименуйте папки
snccntx*в каталогеsrvinfo\reg_1541, запустите службу.
Шаги 3 и 4 обрывают все сеансы всех баз кластера, включая фоновые задания. Делайте их ночью или после предупреждения всех пользователей. Папки переименовывайте, а не удаляйте: так их легко вернуть.
Частые вопросы
Освобождается ли лицензия сразу после удаления сеанса?
Узнает ли пользователь, что его сеанс завершили?
Можно ли завершать сеансы по расписанию?
rac в Планировщике заданий Windows или cron в Linux выбирает сеансы нужной базы и завершает их. Перед этим ставят запрет входа, чтобы люди не вернулись.