Сеанс 1С висит и держит базу: снимаем его без вреда для данных

· 10 мин

Содержание

Закрыть зависший сеанс 1С можно тремя путями, и выбор зависит от того, где работает база. В файловом варианте снимают процесс 1cv8c.exe или 1cv8.exe на компьютере пользователя (или на терминальном сервере). В клиент-серверном — удаляют сеанс в консоли администрирования кластера или командой rac session terminate. Завершать рабочий процесс rphost целиком — крайняя мера, она обрывает работу всем, кто на нём сидит.

Пользователю без прав администратора доступен только первый шаг: закрыть своё окно или процесс. Администратору — всё остальное, включая проверку базы после аварийного завершения.

Завис сеанс или просто долго работает: как отличить

Часто «зависание» оказывается долгой операцией: закрытие месяца , перепроведение, обновление базы, большой отчёт. Если её прервать, транзакция откатится, и всё начнётся заново. Поэтому сначала диагностика.

Признаки, что сеанс действительно завис:

  • 🔴 окно 1С помечено Windows как «Не отвечает» дольше 10–15 минут, а нагрузка на процессор от 1cv8c.exe нулевая;
  • 🔴 пользователь давно закрыл программу, а в списке активных пользователей его сеанс остаётся;
  • 🔴 база не пускает в Конфигуратор или не даёт установить монопольный режим для обновления из-за «висящего» пользователя;
  • 🔴 другие пользователи ждут на одном и том же документе, а тот, кто его держит, ничего не делает.

Признаки долгой, но живой операции:

  • 🟢 процесс потребляет процессор или диск, счётчики в Диспетчере задач меняются;
  • 🟢 в консоли кластера у сеанса растёт время текущего вызова, а в СУБД видна активная работа;
  • 🟢 пользователь сам запустил тяжёлую обработку и знает об этом.

Перед тем как что-то завершать, спросите пользователя, что он делал. Ответ «запустил закрытие месяца 40 минут назад» экономит откат транзакции и повторный запуск.

Закрыть свой зависший сеанс: что может сделать пользователь

Если зависло ваше окно 1С, начните с мягкого варианта. Подождите пару минут, затем попробуйте закрыть окно крестиком. Если Windows предложит «Закрыть программу» или «Подождать» — при нагрузке на диск лучше подождать.

Когда окно не реагирует совсем:

  1. Нажмите Ctrl+Shift+Esc — откроется Диспетчер задач.
  2. На вкладке «Процессы» найдите «1С:Предприятие». Тонкий клиент — это процесс 1cv8c.exe, толстый клиент и Конфигуратор — 1cv8.exe.
  3. Выделите его и нажмите «Снять задачу».
  4. Запустите 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С.
  2. Разверните Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер.
  3. Откройте Информационные базы → нужная база → Сеансы.
  4. Найдите сеанс по пользователю, компьютеру и приложению (тонкий клиент, Конфигуратор, фоновое задание, веб-клиент).
  5. Правой кнопкой — «Удалить». Подтвердите.

Если сеанс не пропал сразу, не спешите повторять. Сервер дожидается окончания текущего вызова или отката транзакции. На большой транзакции в СУБД откат может идти минутами.

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

Загляните в раздел Соединения той же базы. Бывает, что сеанса уже нет, а соединение пользователя с рабочим процессом висит. Его тоже можно удалить из контекстного меню.

Последняя ступень — рабочий процесс. В разделе Рабочие процессы видно, какой 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_who2KILL <номер процесса>
PostgreSQLпредставление pg_stat_activitySELECT pg_terminate_backend(<pid>);

Завершение на стороне СУБД — работа администратора баз данных. Сначала убедитесь, что это именно запрос 1С из нужной базы, а не задание резервного копирования.

Проверка базы chdbfl.exe после аварийного закрытия

Если сеанс файловой базы обрывали снятием процесса, особенно во время записи, база могла получить повреждения. Признаки: ошибки при открытии, «Файл базы данных поврежден», странные ошибки при проведении. Для файловых баз есть утилита проверки физической целостности chdbfl.exe.

  1. Убедитесь, что в базе никого нет, и сделайте копию каталога базы целиком.
  2. Откройте каталог bin платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin\.
  3. Запустите chdbfl.exe, укажите путь к файлу 1Cv8.1CD.
  4. Сначала запустите проверку без исправления. Если найдены ошибки — повторите с флажком исправления.
  5. После этого откройте базу в Конфигураторе и выполните Администрирование → Тестирование и исправление для проверки логической целостности.

chdbfl.exe работает только с файловыми базами. Для клиент-серверных проверку делают средствами СУБД и тем же «Тестированием и исправлением» в Конфигураторе.

Если после снятия всех процессов файловая база всё равно пишет о блокировке, проверьте, не открыт ли её каталог у кого-то ещё: по сети, антивирусом, программой резервного копирования. Файл 1Cv8.1CL в каталоге базы удаляют только когда точно никто не подключён, и только после копии.

Скрипты и другие способы закрыть повисший сеанс

Ручная работа хороша, когда зависание бывает раз в месяц. Если оно случается каждый день, имеет смысл автоматизировать.

  • 🛠 Пакетный файл для терминального сервера. Набор команд taskkill с фильтром по пользователю, который запускает дежурный администратор. Удобно для первой линии поддержки.
  • 🛠 PowerShell. Get-Process 1cv8* показывает процессы 1С с объёмом памяти и временем процессора. По этим данным видно, какой процесс «стоит».
  • 🛠 Скрипт на rac. Получает список сеансов, отбирает нужные по пользователю или базе и завершает их. Подходит для ночных регламентов перед обновлением.
  • 🛠 Блокировка работы пользователей в типовых конфигурациях. Она просит сеансы завершиться и не пускает новые. Живые сеансы закрываются сами, зависшие придётся добить одним из способов выше. Администратор при этом заходит с кодом разрешения через параметр запуска /UC.
  • 🛠 Сторонние утилиты администрирования кластера. Удобны, но работают через те же механизмы, что консоль и rac. Скачивайте их только из проверенных источников: им нужен доступ к кластеру.

Сравнение способов:

СпособКогда применятьЧто задевает
Снять процесс у пользователяфайловая база, завис один клиенттолько этого пользователя
taskkill с фильтром на терминальном серверенесколько пользователей на одном серверепроцессы указанного пользователя
Удалить сеанс в консоли или racклиент-серверная базаодин сеанс
Удалить соединениесеанс удалён, соединение виситодно соединение
Завершить rphostничто другое не помогловсе сеансы на процессе
Завершить запрос в СУБДвисит блокировка в базе данныходну транзакцию, с откатом

Профилактика: чтобы сеансы 1С не зависали снова

Зависания редко бывают случайными. Обычно за ними стоит что-то из этого списка.

  • 🌐 Сеть. Файловую базу по Wi-Fi или VPN открывать нельзя: при обрыве сеанс повисает, а база рискует получить повреждения. Для удалённой работы используйте терминальный сервер или веб-публикацию.
  • 💾 Нехватка памяти. На терминальном сервере каждому клиенту 1С нужно несколько сотен мегабайт. Если память закончилась, процессы начинают «тормозить» до полного зависания.
  • 🛡 Антивирус. Проверка «на лету» каталога файловой базы и каталога кэша замедляет работу и вызывает блокировки. Добавьте их в исключения по согласованию со службой безопасности.
  • 🧩 Внешние обработки и расширения. Самописная обработка с бесконечным циклом — частый виновник. Проверьте, что запускал пользователь перед зависанием.
  • ⏱ Спящие сеансы. В Конфигураторе, в параметрах информационной базы, задают время засыпания пассивного сеанса и время завершения спящего. Так брошенные сеансы веб-клиента и тонкого клиента не держат лицензии бесконечно.
  • ⚙ Проблемные процессы на сервере. В свойствах кластера есть настройки перезапуска рабочих процессов и принудительного завершения проблемных процессов. Включайте их с пониманием: перезапуск процесса обрывает его сеансы.
  • 🔄 Актуальная платформа. Часть зависаний — ошибки конкретных сборок. Обновление платформы на сервере и клиентах до одной версии закрывает такие случаи.
Перед закрытием чужого сеанса
Выполнено: 0 / 5

Ошибки при закрытии сеансов и что с ними делать

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

Частые вопросы о зависших сеансах

Освобождается ли лицензия после закрытия зависшего сеанса?
Да. Лицензия освобождается вместе с сеансом. Если сеанс просто брошен и не удалён, лицензия занята, пока он не завершится сам или его не удалят.
Можно ли закрыть сеанс другого пользователя из самой 1С?
В клиент-серверном варианте — да, из обработки активных пользователей в типовых конфигурациях, если указаны параметры администрирования кластера. В файловом варианте зависший сеанс надёжно закрывается только снятием процесса.
Что будет с документом, который пользователь не успел записать?
Изменения в незаписанной форме теряются. Если сеанс оборвался во время записи, транзакция откатится, и документ останется в прежнем состоянии.
Почему у одного пользователя несколько сеансов?
Каждое окно клиента, Конфигуратор и фоновые задания — отдельные сеансы. Зависший может быть только один из них, поэтому смотрите на приложение и время начала.
Опасно ли завершать фоновое задание?
Задание прервётся, его транзакция откатится. Регламентное задание запустится по расписанию снова. Длительное задание вроде обновления данных лучше дождаться.