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

· 9 мин

Содержание

Если программа зависла и не реагирует на мышь, порядок такой: сначала подождите 1–2 минуты (возможно, идёт тяжёлый запрос), затем закройте окно через Alt+F4, и только если не помогло — снимайте процесс 1cv8.exe или 1cv8c.exe в Диспетчере задач. В клиент-серверной базе обрывать сеанс лучше не на клиенте, а на сервере — через консоль администрирования или утилиту rac.

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

Какой способ закрытия выбрать

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

  • 🖥️ Файловая база (один файл 1Cv8.1CD, работает без сервера) — проблема только на вашем компьютере. Достаточно закрыть клиент.
  • 🗄️ Клиент-серверная база (SQL Server или PostgreSQL + сервер 1С) — зависший клиент можно снять локально, но «мёртвый» сеанс на сервере снимается через консоль администрирования.
  • 👥 Зависло у всех — скорее всего проблема на сервере 1С или в СУБД, тогда работаем со службами, а не с клиентами.
Что именно зависло?

Зависла программа или просто долго думает

Половину «зависаний» закрывать принудительно не нужно — программа жива, но занята тяжёлой операцией. Снимете процесс в этот момент — оборвёте работу зря, а иногда и получите повреждённый документ. Поэтому сначала отличите настоящее зависание от долгой обработки.

Признаки, что 1С ещё работает и её лучше не трогать:

  • 🟢 в заголовке окна или в статусной строке внизу идёт индикатор, меняются проценты или цифры;
  • 🟢 курсор «крутится», но окно не помечено как «Не отвечает»;
  • 🟢 вы только что запустили тяжёлый отчёт, закрытие месяца , групповое перепроведение или обмен — такие операции легко идут минутами.

Признаки настоящего зависания, когда закрывать оправданно:

  • 🔴 окно побелело, Windows пишет в заголовке (Не отвечает);
  • 🔴 ничего не меняется 3–5 минут и дольше, нагрузка на диск и процессор при этом нулевая;
  • 🔴 программа не реагирует ни на мышь, ни на Esc, ни на Alt+F4.

Прежде чем снимать процесс, откройте Диспетчер задач и посмотрите на столбцы ЦП и Диск у процесса 1С. Идёт активность — программа работает, подождите ещё. Ноль по всем столбцам несколько минут — зависание настоящее.

Если база клиент-серверная, учтите: «тормозить» может не ваш компьютер, а сервер под нагрузкой. Тогда снятие вашего клиента ничего не ускорит, а проблему надо решать на сервере.

Если 1С зависла: закрываем клиент на своём компьютере

Это самый частый случай — программа «белеет», курсор крутится, кнопки не нажимаются.

  1. Подождите. Зависание часто временное: формируется большой отчёт, идёт проведение документа, обновляется кэш. Дайте программе 1–2 минуты.
  2. Попробуйте закрыть штатно. Нажмите на крестик окна или Alt+F4. Иногда Windows через несколько секунд предложит «Завершить сейчас» — согласитесь.
  3. Снимите процесс. Откройте Диспетчер задач (Ctrl+Shift+Esc), вкладка Процессы. Найдите процесс 1С, нажмите Снять задачу.

Какой именно процесс искать:

ПроцессЧто это
1cv8c.exeтонкий клиент (самый частый вариант запуска)
1cv8.exeтолстый клиент и Конфигуратор
1cv8s.exeсервер в файловом варианте публикации

Снятие процесса обрывает текущую операцию. Несохранённые данные в открытой, но ещё не записанной форме документа пропадут. Проведённые и записанные документы останутся — транзакция либо завершилась, либо откатится целиком.

Если программа зависает на одном и том же действии, снимать процесс каждый раз бессмысленно — причина в данных или настройке. Запишите, на каком шаге это происходит, прежде чем закрывать.

Как завершить зависший сеанс на сервере 1С

В клиент-серверной базе клиент на вашем компьютере — это только «витрина». Сам сеанс живёт на сервере в процессе rphost.exe. Бывает, что клиент вы сняли, а сеанс на сервере остался и держит блокировки — тогда у других пользователей «висит» запись или проведение.

В консоли администрирования есть два похожих списка — Сеансы и Соединения. Сеанс — это пользователь, зашедший в базу; соединение — техническая связь рабочего процесса с базой (их может быть несколько на один сеанс, плюс фоновые задания и обмены без пользователя). Для «висячего» пользователя обычно достаточно удалить сеанс.

Завершить сеанс можно двумя способами.

Через консоль администрирования серверов 1С. Это оснастка, которую ставят вместе с сервером.

  1. Откройте консоль (ярлык Администрирование серверов 1С Предприятия).
  2. Разверните: кластер → Сеансы (или Соединения).
  3. Найдите нужный сеанс по имени пользователя и компьютеру.
  4. Правой кнопкой → Удалить.

Через утилиту командной строки rac. Удобна, когда графической консоли нет, или нужно действовать по скрипту. Команды выполняются на сервере, где установлена 1С:

rem посмотреть список кластеров и взять его идентификатор
rac cluster list

rem список сеансов в кластере
rac session list --cluster=<идентификатор-кластера>

rem завершить конкретный сеанс
rac session terminate --cluster=<идентификатор-кластера> --session=<идентификатор-сеанса>

Идентификаторы (длинные строки в фигурных скобках) берутся из вывода предыдущих команд. Полный список параметров — в справке: rac help и rac session --help.

Завершение одного сеанса безопаснее остановки службы: вы «гасите» только проблемного пользователя, остальные продолжают работать. Начинайте с этого уровня, а не со служб.

Если сеанс не завершается командой (процесс rphost.exe подвис) — переходите к перезапуску службы сервера, но уже понимая, что оборвёте всех.

Как остановить и перезапустить службы 1С и СУБД

Это следующий уровень — когда на сервере встал весь рабочий процесс или не отвечает сама служба. Остановка службы обрывает сеансы ВСЕХ пользователей разом. Делайте это только после предупреждения и желательно вне рабочего времени.

Порядок правильной остановки — от 1С к базе данных:

  1. Предупредите пользователей, дайте им выйти.
  2. Остановите службу сервера 1С.
  3. При необходимости остановите службу СУБД.
  4. Запускайте в обратном порядке: сначала СУБД, потом сервер 1С.

Управлять службами удобнее через оснастку Службы (services.msc):

  • Агент сервера 1С:Предприятия — главный процесс сервера (ragent.exe); останавливается вместе с менеджером кластера (rmngr.exe) и рабочими процессами (rphost.exe).
  • Служба СУБД — например PostgreSQL или MS SQL Server; имя зависит от версии и экземпляра.

Те же действия из командной строки (от администратора):

rem имя службы 1С у вас может отличаться номером версии
net stop "1C:Enterprise 8.3 Server Agent"
net start "1C:Enterprise 8.3 Server Agent"

Точное имя службы смотрите в оснастке services.msc в свойствах службы (поле Имя службы) — оно зависит от версии платформы и способа установки. Не угадывайте его.

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

Отдельный случай — зависший рабочий процесс rphost.exe. Иногда один рабочий процесс «съедает» память и не отвечает, а остальные живы. Если в кластере несколько рабочих процессов, снятие одного rphost.exe оборвёт только часть сеансов, а не всех — менеджер кластера поднимет процесс заново. Но предсказать, кого именно затронет, сложно, поэтому и это делают с предупреждением.

Аварийное завершение на уровне СУБД

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

Что обычно помогает, по возрастанию риска:

  • 🔎 Найти блокирующий запрос. В MS SQL — через системные представления активности, в PostgreSQL — через представление активности сессий. Цель — понять, какой сеанс держит остальных.
  • ✂️ Снять конкретный сеанс СУБД, который блокирует другие (в SQL — по его идентификатору сессии). Это точечное действие, аналог завершения сеанса в 1С, но на уровне базы.
  • 🔁 Перезапустить службу СУБД целиком — обрывает все соединения, включая сервер 1С. Крайняя мера.

Конкретные команды зависят от того, MS SQL у вас или PostgreSQL, и от версии. Если вы не администратор СУБД — не выполняйте снятие сессий и перезапуск службы базы данных вслепую, обратитесь к тому, кто отвечает за сервер. Неверно оборванная транзакция на уровне СУБД — прямой путь к повреждённой базе.

Что сделать после аварийного закрытия

После того как процесс сняли или службу перезапустили, база могла остаться в «несогласованном» состоянии. Не начинайте работу сразу — сначала проверьте целостность.

Файловая база. При следующем запуске 1С часто сама предлагает проверить базу — соглашайтесь. Если нет или ошибки остались, закройте все сеансы и прогоните утилиту chdbfl.exe (лежит в каталоге bin платформы):

  1. Запустите chdbfl.exe.
  2. Укажите путь к файлу 1Cv8.1CD.
  3. Поставьте галку Исправлять обнаруженные ошибки.
  4. Нажмите выполнение проверки.

Перед проверкой с исправлением сделайте копию файла базы — просто скопируйте 1Cv8.1CD в другую папку. Если проверка пойдёт не так, вы вернётесь к исходному состоянию.

Утилита chdbfl.exe проверяет физическую целостность файла: находит «обрывы» в страницах базы и битые ссылки. Это не то же самое, что логическая проверка данных, но после аварийного снятия процесса чаще нужна именно она.

Клиент-серверная база. Запустите Конфигуратор в монопольном режиме (чтобы никто не был в базе) и выполните Администрирование → Тестирование и исправление. В окне есть набор проверок — для разбора последствий сбоя обычно включают реиндексацию таблиц и проверку логической целостности. Монопольный доступ нужен именно для такой проверки структуры, на обычную работу он не требуется. На большой базе проверка идёт долго, поэтому планируйте её вне рабочего времени.

Короткий порядок восстановления после сбоя:

После аварийного закрытия 1С
Выполнено: 0 / 5

Отдельно проверьте документы, с которыми работали в момент зависания. Обычно 1С откатывает незавершённую транзакцию целиком, то есть документ либо проведён полностью, либо не проведён вовсе. Но если сомневаетесь — откройте документ, посмотрите движения и при необходимости перепроведите.

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

Потеряю ли я данные, если сниму процесс 1С в Диспетчере задач?
Пропадёт только то, что вы ввели в форму, но ещё не записали. Записанные и проведённые документы 1С защищает транзакцией: она либо завершилась, либо откатится целиком, «половинок» в базе не остаётся.
Чем снятие сеанса на сервере отличается от остановки службы?
Завершение сеанса гасит одного пользователя, остальные работают дальше. Остановка службы сервера 1С обрывает сразу всех. Поэтому сначала пробуют снять сеанс и только потом трогают службу.
1С зависает каждый раз на одном и том же действии — что делать?
Снимать процесс бесполезно, причина в данных или настройке. Запишите точный шаг, при котором всё встаёт, проверьте, повторяется ли на другом компьютере и под другим пользователем, и разбирайтесь с конкретной операцией, а не с зависанием вообще.
Нужна ли резервная копия перед проверкой базы?
Перед проверкой с исправлением ошибок — да. Для файловой базы достаточно скопировать файл 1Cv8.1CD в другую папку, для серверной — сделать резервную копию средствами СУБД. Если проверка что-то испортит, вы вернётесь к исходнику.
Можно ли просто выключить сервер по питанию, если ничего не помогает?
Это крайняя мера и риск повредить базу: оборвутся транзакции в СУБД. Сначала попробуйте по порядку — снять сеанс, перезапустить службу 1С, затем службу СУБД. К жёсткой перезагрузке прибегайте, только когда сервер не отвечает вообще.