Зависший сеанс в 1С 8.3: как завершить его и освободить базу
Содержание
Сбросить пользователя в 1С 8.3 в клиент-серверной базе проще всего через консоль администрирования серверов: Кластер → Информационные базы → <база> → Сеансы, правый щелчок по сеансу → «Удалить». В файловой базе такой команды нет: там закрывают процесс 1cv8.exe или 1cv8c.exe на компьютере пользователя, а если его уже нет — освобождают файл базы на сервере.
Зависший сеанс держит лицензию, не даёт обновить конфигурацию и блокирует документы, которые человек открыл. Действуйте от мягкого к жёсткому: сначала штатное завершение, потом блокировка входа, и только в крайнем случае — процессы сервера и СУБД.
Как понять, кто держит базу и почему
Прежде чем что-то завершать, посмотрите список сеансов. Есть три способа.
| Где смотреть | Путь | Что видно |
|---|---|---|
| Конфигуратор | Администрирование → Активные пользователи | Пользователь, компьютер, приложение, время начала |
| Режим Предприятия | Все функции → Стандартные → Активные пользователи | То же, плюс в типовых конфигурациях — кнопки управления |
| Консоль кластера | Кластер → Информационные базы → <база> → Сеансы | Номер сеанса, рабочий процесс, лицензия, время последней активности |
💡 Если пункта «Все функции» в меню нет, включите его: главное меню (кнопка с тремя полосками) → Сервис → Параметры → флажок «Отображать команду “Все функции”».
Типичные признаки зависшего сеанса:
- 🧍 пользователь говорит, что давно вышел, а сеанс с его именем висит в списке;
- ⏳ время начала — вчера или раньше, а человек сегодня не работал;
- 🖥 в колонке «Компьютер» — терминальный сервер , где пользователь просто закрыл окно RDP, не выходя из программы;
- 🔒 на ровном месте возникает
Невозможно установить монопольный режим. Уже запущены сеансы; - 🎫 новые пользователи не могут войти:
Не обнаружена свободная лицензия.
Отдельный случай — фоновые задания. В списке они видны как сеансы с приложением «Фоновое задание». Их не надо путать с пользователями: регламентное задание обмена или загрузки курсов может работать по нескольку минут и завершится само.
Сброс пользователя в файловой базе
В файловом варианте нет сервера, который управляет сеансами. Каждый клиент сам открывает файл 1Cv8.1CD и отмечается в нём. Поэтому «удалить сеанс» из другой программы нельзя — можно только закрыть сам процесс.
Шаг 1. Закройте 1С на компьютере пользователя
- Попросите пользователя выйти из программы штатно — через «Файл → Выход» или крестик.
- Если окно не отвечает, откройте на его компьютере диспетчер задач (
Ctrl+Shift+Esc). - На вкладке «Подробности» найдите
1cv8.exe(толстый клиент или Конфигуратор) или1cv8c.exe(тонкий клиент). - Выберите процесс → «Снять задачу».
Несохранённые изменения в открытых формах пропадут. Проведённые и записанные документы останутся.
Шаг 2. Терминальный сервер
Если база открыта через RDP, зависший процесс живёт на сервере, а не у пользователя.
- Откройте диспетчер задач на терминальном сервере.
- Вкладка «Пользователи» → разверните нужного пользователя.
- Завершите его процесс
1cv8c.exeили1cv8.exe.
Если сессия RDP пользователя отключена и больше не нужна, можно выйти из неё целиком: правый щелчок по пользователю → «Выйти». Все его программы закроются.
Шаг 3. Освободите файл базы на сетевой папке
Бывает, что компьютер пользователя выключили по питанию, а сетевая папка всё ещё считает файл открытым. Тогда сеанс висит, хотя процесса уже нет.
- На сервере, где лежит папка с базой, откройте
compmgmt.msc(«Управление компьютером»). - Перейдите в
Общие папки → Открытые файлы. - Найдите строки с путём к
1Cv8.1CDи пользователем, у которого сеанс завис. - Правый щелчок → «Закрыть открытый файл».
Через минуту-две обновите список активных пользователей: сеанс должен исчезнуть.
Крайняя мера: файл блокировок
Рядом с 1Cv8.1CD лежит служебный файл 1Cv8.1CL. Если все пользователи точно вышли, а 1С продолжает сообщать о запущенных сеансах, этот файл можно переименовать или удалить — платформа создаст его заново при следующем входе.
Делайте это только когда в базе гарантированно никого нет и сначала скопируйте папку базы целиком. Удаление файла при живом сеансе может повредить данные.
Завершение сеанса в клиент-серверной базе через консоль кластера
В клиент-серверном варианте сеансами управляет кластер 1С. Здесь сброс пользователя — штатная операция, базу останавливать не нужно.
Через консоль администрирования
- Запустите «Администрирование серверов 1С Предприятия» (оснастка ставится вместе с сервером; при ошибке подключения на новой машине обычно помогает перерегистрация
radmin.dllнужной разрядности командойregsvr32). - Подключитесь к центральному серверу: агент по умолчанию слушает порт
1540. - Откройте
Кластер → Информационные базы → <ваша база> → Сеансы. - Отсортируйте по колонке «Пользователь» или «Компьютер», найдите зависший сеанс.
- Правый щелчок → «Удалить».
Пользователь увидит сообщение о разрыве соединения. Если у него остался открытый клиент, программа предложит перезапуск.
💡 Перед удалением загляните в ветку «Блокировки» той же базы. Там видно, какие объекты держит сеанс. Если он висит на длинной транзакции, после удаления она откатится — это нормально, данные не испортятся, но изменения этой транзакции пропадут.
Через rac из командной строки
Удобно, когда консоли нет под рукой или сброс нужно автоматизировать. rac работает через сервер администрирования ras (по умолчанию порт 1545), поэтому ras должен быть запущен — службой или командой ras cluster.
rem 1. Узнать идентификатор кластера
rac cluster list
rem 2. Список сеансов (подставьте UUID кластера)
rac session list --cluster=<uuid-кластера>
rem 3. Завершить конкретный сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере задан администратор, добавьте --cluster-user и --cluster-pwd. Сеансы, которые занимают лицензии, удобно смотреть командой rac session list --cluster=<uuid> --licenses. Полный список параметров — в rac help session.
Блокировка входа, чтобы никто не вернулся
Если вы сбрасываете пользователей перед обновлением, удалить сеансы мало: через минуту кто-то войдёт снова. Сначала закройте вход.
Блокировка в свойствах информационной базы (клиент-сервер)
- В консоли кластера: правый щелчок по базе → «Свойства».
- Включите «Блокировка начала сеансов включена».
- Задайте время начала и окончания блокировки.
- Впишите «Сообщение о блокировке» — его увидят пользователи.
- Задайте «Код разрешения», например
upd2024. - При необходимости включите «Блокировка регламентных заданий включена», чтобы фоновые обмены не мешали.
Сами вы входите в заблокированную базу с ключом /UC:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S"srv1c\buh" /UCupd2024
Блокировка из режима Предприятия (типовые конфигурации)
В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть своя блокировка работы пользователей. В Бухгалтерии она находится в разделе Администрирование → Обслуживание, группа про обновление и блокировку.
Её плюс — работает и в файловой базе. Пользователи получают предупреждение, а через несколько минут программа завершает их сеансы сама. Минус — зависший клиент, который ничего не обрабатывает, на предупреждение не отреагирует. Его всё равно придётся закрыть вручную способами выше.
Ту же блокировку можно включить из командной строки, запустив базу в режиме Предприятия с параметром /CЗавершитьРаботуПользователей и кодом /UC. Снимают её параметром /CРазрешитьРаботуПользователей.
Если держит не 1С, а СУБД
Иногда сеанс в консоли уже удалён, а документ по-прежнему не записывается, и в логах Конфликт блокировок при выполнении транзакции или превышено время ожидания блокировки. Значит, соединение рабочего процесса с СУБД застряло в незавершённой транзакции.
Сначала посмотрите в консоли кластера ветку «Соединения» базы: у каждого соединения указан рабочий процесс и сеанс. Если соединение без сеанса долго висит, найдите его на стороне СУБД.
MS SQL Server:
-- кто сейчас подключён к базе и кто кого блокирует
EXEC sp_who2;
-- оборвать конкретное соединение (spid из колонки SPID)
KILL 57;
PostgreSQL:
SELECT pid, usename, state, xact_start, query
FROM pg_stat_activity
WHERE datname = 'buh';
SELECT pg_terminate_backend(12345);
Обрыв соединения на стороне СУБД откатывает транзакцию, а рабочий процесс 1С получает ошибку. Пользователь этого сеанса увидит сообщение и потеряет несохранённое. Используйте этот путь, только если штатное удаление сеанса не помогло.
Аварийный сценарий: рабочий процесс rphost и перезапуск службы
Когда консоль не отвечает, сеансы не удаляются, а rphost.exe съел всю память — дело уже не в одном пользователе.
Перезапуск рабочего процесса
Каждый rphost.exe обслуживает много сеансов. В консоли в ветке «Рабочие процессы» видно, сколько памяти занимает каждый и какие сеансы на нём.
Если завершить зависший rphost.exe в диспетчере задач сервера, агент кластера запустит новый процесс. Все сеансы на этом процессе оборвутся сразу, у всех пользователей, а не только у зависшего. Делайте это в обед или после рабочего дня, предупредив людей.
Перезапуск службы агента
Последний шаг — перезапуск службы «Агент сервера 1С:Предприятия 8.3» в services.msc.
- Предупредите всех пользователей: при остановке службы оборвутся все сеансы во всех базах кластера.
- Остановите службу.
- Проверьте, что в диспетчере задач не осталось
ragent.exe,rmngr.exe,rphost.exe. - Если сеансы «оживают» после перезапуска, остановите службу ещё раз и удалите (лучше — перенесите в другую папку) каталоги
snccntx*в каталоге кластера:srvinfo\reg_1541\. Это кэш сеансовых данных, он создаётся заново. - Запустите службу.
Не удаляйте другие файлы в srvinfo. Там лежит реестр кластера со списком баз; без него придётся заново регистрировать базы и настраивать кластер.
rac session list --licenses или колонка лицензии в консоли), удалите зависшие.Как сделать, чтобы сеансы не зависали
Зависшие сеансы — почти всегда следствие привычек и настроек, а не сбоев платформы.
Таймауты сеансов в свойствах базы
В свойствах информационной базы в консоли кластера есть два параметра:
- ⏱ Время засыпания пассивного сеанса — через сколько секунд без связи с клиентом сеанс переходит в «спящий» и отпускает соединение;
- 🛌 Время завершения спящего сеанса — через сколько секунд спящий сеанс удаляется совсем.
Значение по умолчанию для завершения — сутки. Для офиса, где все работают днём, его разумно уменьшить, например до 2-4 часов (7200-14400 секунд). Тогда сеанс человека, у которого «упал» ноутбук, сам исчезнет к обеду, а не к следующему утру.
Перезапуск рабочих процессов
В свойствах кластера задайте «Допустимый объём памяти» и «Интервал превышения допустимого объёма памяти», а также включите «Принудительно завершать проблемные процессы». Кластер сам перезапустит распухший rphost вместо того, чтобы ждать, пока сервер ляжет. Можно задать и плановый «Интервал перезапуска» — процессы будут перезапускаться мягко, с переносом сеансов на новый процесс.
Терминальный сервер
Самый частый источник «висяков» — пользователи закрывают окно RDP крестиком. Сессия Windows продолжает жить вместе с открытой 1С.
Ограничьте время отключённых сессий групповой политикой: Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов удалённых рабочих столов → Ограничение сеансов по времени. Параметр для отключённых сеансов — например, 2 часа.
Привычки пользователей
Частые вопросы
Нужны ли права администратора кластера, чтобы сбросить пользователя?
rac спросят его логин и пароль. Права администратора в самой базе тут не помогают. Если администратор кластера не задан, удалить сеанс может любой, у кого есть доступ к консоли, — поэтому администратора кластера лучше завести.Пропадут ли данные пользователя, чей сеанс я удалил?
Почему после удаления сеанс снова появляется?
snccntx*.Как сбросить сеанс самого себя, если я завис в Конфигураторе?
1cv8.exe в диспетчере задач. В клиент-серверной базе дополнительно удалите свой старый сеанс в консоли, иначе он будет занимать лицензию до истечения таймаута.