Сеанс 1С висит и держит базу: снимаем его без вреда для данных
Содержание
Закрыть зависший сеанс 1С можно тремя путями, и выбор зависит от того, где работает база. В файловом варианте снимают процесс 1cv8c.exe или 1cv8.exe на компьютере пользователя (или на терминальном сервере). В клиент-серверном — удаляют сеанс в консоли администрирования кластера или командой rac session terminate. Завершать рабочий процесс rphost целиком — крайняя мера, она обрывает работу всем, кто на нём сидит.
Пользователю без прав администратора доступен только первый шаг: закрыть своё окно или процесс. Администратору — всё остальное, включая проверку базы после аварийного завершения.
Завис сеанс или просто долго работает: как отличить
Часто «зависание» оказывается долгой операцией: закрытие месяца , перепроведение, обновление базы, большой отчёт. Если её прервать, транзакция откатится, и всё начнётся заново. Поэтому сначала диагностика.
Признаки, что сеанс действительно завис:
- 🔴 окно 1С помечено Windows как «Не отвечает» дольше 10–15 минут, а нагрузка на процессор от
1cv8c.exeнулевая; - 🔴 пользователь давно закрыл программу, а в списке активных пользователей его сеанс остаётся;
- 🔴 база не пускает в Конфигуратор или не даёт установить монопольный режим для обновления из-за «висящего» пользователя;
- 🔴 другие пользователи ждут на одном и том же документе, а тот, кто его держит, ничего не делает.
Признаки долгой, но живой операции:
- 🟢 процесс потребляет процессор или диск, счётчики в Диспетчере задач меняются;
- 🟢 в консоли кластера у сеанса растёт время текущего вызова, а в СУБД видна активная работа;
- 🟢 пользователь сам запустил тяжёлую обработку и знает об этом.
Перед тем как что-то завершать, спросите пользователя, что он делал. Ответ «запустил закрытие месяца 40 минут назад» экономит откат транзакции и повторный запуск.
Закрыть свой зависший сеанс: что может сделать пользователь
Если зависло ваше окно 1С, начните с мягкого варианта. Подождите пару минут, затем попробуйте закрыть окно крестиком. Если Windows предложит «Закрыть программу» или «Подождать» — при нагрузке на диск лучше подождать.
Когда окно не реагирует совсем:
- Нажмите
Ctrl+Shift+Esc— откроется Диспетчер задач. - На вкладке «Процессы» найдите «1С:Предприятие». Тонкий клиент — это процесс
1cv8c.exe, толстый клиент и Конфигуратор —1cv8.exe. - Выделите его и нажмите «Снять задачу».
- Запустите 1С заново. Если база не открывается или пишет о блокировке — сообщите администратору.
Несохранённые данные в открытых формах при этом пропадут. Записанные и проведённые документы останутся.
Просмотр активных пользователей в самой 1С
Увидеть, кто сейчас в базе, можно из любой типовой конфигурации на платформе 8.3. Включите команду «Все функции» в главном меню: Сервис → Параметры, затем откройте Все функции → Стандартные → Активные пользователи. В Конфигураторе тот же список — Администрирование → Активные пользователи.
В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть одноимённая обработка в разделе Администрирование. В клиент-серверном варианте из неё администратор может завершить чужой сеанс, если указаны параметры администрирования кластера. В файловом варианте сеанс, который завис «намертво», такая обработка обычно не закрывает: он не реагирует на просьбы завершиться.
Снять зависший процесс 1С через Диспетчер задач и терминальный сервер
Этот способ — главный для файловых баз. Сеанс файловой базы живёт ровно столько, сколько процесс 1С на компьютере пользователя. Убрали процесс — сеанс исчезает из списка.
На компьютере пользователя
Подключитесь к машине пользователя (RDP, AnyDesk, любое средство удалённой поддержки) и снимите процесс, как описано выше. Если процесс не снимается из Диспетчера задач, поможет командная строка от имени администратора:
taskkill /IM 1cv8c.exe /F
taskkill /IM 1cv8.exe /F
На терминальном сервере
На терминальном сервере одной командой нельзя снимать все процессы 1С: закроются все пользователи. Фильтруйте по имени пользователя:
query user
taskkill /FI "USERNAME eq ivanov" /IM 1cv8c.exe /F
query user покажет, кто подключён к серверу. Если зависла вся RDP-сессия пользователя, её можно завершить целиком по номеру из этого списка:
logoff 3
logoff закрывает у пользователя всё: 1С, Excel, почту. Несохранённые файлы пропадут. Предупредите человека заранее.
В Диспетчере задач сервера удобнее работать на вкладке «Пользователи»: разверните нужную учётную запись и снимите только её процесс 1С.
Завершение сеанса в клиент-серверной 1С через консоль кластера
В клиент-серверном варианте процесс на компьютере пользователя — лишь клиент. Сам сеанс живёт на сервере 1С, и снять его нужно там. Иначе сервер ещё какое-то время будет держать сеанс, лицензию и блокировки.
Через консоль администрирования серверов
- Запустите «Администрирование серверов 1С Предприятия». Версия консоли должна совпадать с версией сервера 1С.
- Разверните
Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер. - Откройте
Информационные базы → нужная база → Сеансы. - Найдите сеанс по пользователю, компьютеру и приложению (тонкий клиент, Конфигуратор, фоновое задание, веб-клиент).
- Правой кнопкой — «Удалить». Подтвердите.
Если сеанс не пропал сразу, не спешите повторять. Сервер дожидается окончания текущего вызова или отката транзакции. На большой транзакции в СУБД откат может идти минутами.
Если сеанс не удаляется
Загляните в раздел Соединения той же базы. Бывает, что сеанса уже нет, а соединение пользователя с рабочим процессом висит. Его тоже можно удалить из контекстного меню.
Последняя ступень — рабочий процесс. В разделе Рабочие процессы видно, какой rphost обслуживает базу и сколько на нём соединений.
Завершение рабочего процесса обрывает работу всех сеансов на нём, причём часто это пользователи разных баз. Делайте это в обед или после работы, предупредив людей. Если транзакции откатывались в СУБД, проверьте, что откат завершился.
Через rac из командной строки
Если консоль недоступна или нужно скриптом, используйте утилиту rac. Ей нужен запущенный сервер администрирования ras (по умолчанию порт 1545). Обе утилиты лежат в каталоге bin установленной платформы.
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<uuid-кластера>
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере задан администратор, добавьте его логин и пароль. Точный список параметров для вашей версии платформы покажет rac help session.
Если держит блокировка в СУБД
Иногда 1С сеанс уже не показывает, а запрос на сервере СУБД продолжает держать таблицы. Это видно средствами самой СУБД:
| СУБД | Где смотреть | Чем завершить |
|---|---|---|
| MS SQL Server | Монитор активности, sp_who2 | KILL <номер процесса> |
| PostgreSQL | представление pg_stat_activity | SELECT pg_terminate_backend(<pid>); |
Завершение на стороне СУБД — работа администратора баз данных. Сначала убедитесь, что это именно запрос 1С из нужной базы, а не задание резервного копирования.
Проверка базы chdbfl.exe после аварийного закрытия
Если сеанс файловой базы обрывали снятием процесса, особенно во время записи, база могла получить повреждения. Признаки: ошибки при открытии, «Файл базы данных поврежден», странные ошибки при проведении. Для файловых баз есть утилита проверки физической целостности chdbfl.exe.
- Убедитесь, что в базе никого нет, и сделайте копию каталога базы целиком.
- Откройте каталог
binплатформы, напримерC:\Program Files\1cv8\8.3.xx.xxxx\bin\. - Запустите
chdbfl.exe, укажите путь к файлу1Cv8.1CD. - Сначала запустите проверку без исправления. Если найдены ошибки — повторите с флажком исправления.
- После этого откройте базу в Конфигураторе и выполните
Администрирование → Тестирование и исправлениедля проверки логической целостности.
chdbfl.exe работает только с файловыми базами. Для клиент-серверных проверку делают средствами СУБД и тем же «Тестированием и исправлением» в Конфигураторе.
Если после снятия всех процессов файловая база всё равно пишет о блокировке, проверьте, не открыт ли её каталог у кого-то ещё: по сети, антивирусом, программой резервного копирования. Файл 1Cv8.1CL в каталоге базы удаляют только когда точно никто не подключён, и только после копии.
Скрипты и другие способы закрыть повисший сеанс
Ручная работа хороша, когда зависание бывает раз в месяц. Если оно случается каждый день, имеет смысл автоматизировать.
- 🛠 Пакетный файл для терминального сервера. Набор команд
taskkillс фильтром по пользователю, который запускает дежурный администратор. Удобно для первой линии поддержки. - 🛠 PowerShell.
Get-Process 1cv8*показывает процессы 1С с объёмом памяти и временем процессора. По этим данным видно, какой процесс «стоит». - 🛠 Скрипт на rac. Получает список сеансов, отбирает нужные по пользователю или базе и завершает их. Подходит для ночных регламентов перед обновлением.
- 🛠 Блокировка работы пользователей в типовых конфигурациях. Она просит сеансы завершиться и не пускает новые. Живые сеансы закрываются сами, зависшие придётся добить одним из способов выше. Администратор при этом заходит с кодом разрешения через параметр запуска
/UC. - 🛠 Сторонние утилиты администрирования кластера. Удобны, но работают через те же механизмы, что консоль и
rac. Скачивайте их только из проверенных источников: им нужен доступ к кластеру.
Сравнение способов:
| Способ | Когда применять | Что задевает |
|---|---|---|
| Снять процесс у пользователя | файловая база, завис один клиент | только этого пользователя |
taskkill с фильтром на терминальном сервере | несколько пользователей на одном сервере | процессы указанного пользователя |
Удалить сеанс в консоли или rac | клиент-серверная база | один сеанс |
| Удалить соединение | сеанс удалён, соединение висит | одно соединение |
Завершить rphost | ничто другое не помогло | все сеансы на процессе |
| Завершить запрос в СУБД | висит блокировка в базе данных | одну транзакцию, с откатом |
Профилактика: чтобы сеансы 1С не зависали снова
Зависания редко бывают случайными. Обычно за ними стоит что-то из этого списка.
- 🌐 Сеть. Файловую базу по Wi-Fi или VPN открывать нельзя: при обрыве сеанс повисает, а база рискует получить повреждения. Для удалённой работы используйте терминальный сервер или веб-публикацию.
- 💾 Нехватка памяти. На терминальном сервере каждому клиенту 1С нужно несколько сотен мегабайт. Если память закончилась, процессы начинают «тормозить» до полного зависания.
- 🛡 Антивирус. Проверка «на лету» каталога файловой базы и каталога кэша замедляет работу и вызывает блокировки. Добавьте их в исключения по согласованию со службой безопасности.
- 🧩 Внешние обработки и расширения. Самописная обработка с бесконечным циклом — частый виновник. Проверьте, что запускал пользователь перед зависанием.
- ⏱ Спящие сеансы. В Конфигураторе, в параметрах информационной базы, задают время засыпания пассивного сеанса и время завершения спящего. Так брошенные сеансы веб-клиента и тонкого клиента не держат лицензии бесконечно.
- ⚙ Проблемные процессы на сервере. В свойствах кластера есть настройки перезапуска рабочих процессов и принудительного завершения проблемных процессов. Включайте их с пониманием: перезапуск процесса обрывает его сеансы.
- 🔄 Актуальная платформа. Часть зависаний — ошибки конкретных сборок. Обновление платформы на сервере и клиентах до одной версии закрывает такие случаи.