Что делать, если 1С повисла и не отвечает: от кнопки до консоли сервера

· 9 мин

Содержание

Если 1С зависла, сначала подождите 2-3 минуты: тяжёлый отчёт или проведение за период часто выглядят как зависание. Не помогло, откройте Ctrl+Shift+Esc, найдите процесс 1cv8.exe (или 1cv8c.exe для тонкого клиента ) и выберите «Снять задачу». Так вы закроете только свой клиент. Данные в базе при этом не пострадают, потеряется лишь то, что не было записано.

Это самая простая часть. Если же 1С висит у всех сразу, сеанс «призрак» не даёт обновить базу или блокирует выгрузку, снятием одной задачи не обойтись. Ниже порядок действий от безопасного к жёсткому: клиент, сервер, командная строка, база данных.

Не выключайте компьютер кнопкой питания и не убивайте процессы наугад. На сервере один неверный rphost оборвёт работу десятка людей.

Сначала выясните, что именно зависло

Одинаковый симптом (белое окно, «Не отвечает») бывает у четырёх разных проблем. Лечатся они по-разному.

Что видитеВероятная причинаКуда идти
Завис один компьютер, у коллег всё работаетКлиентское приложение, кеш, антивирусРаздел про Диспетчер задач
Висит у всех в одной базеБлокировка, тяжёлый запрос, сбой рабочего процессаКонсоль кластера или rac
Все базы на сервере недоступныУпал ragent или нехватка памятиСлужба сервера 1С, раздел про профилактику
Только одна операция (проведение, отчёт)Долгая транзакция в СУБДРаздел про блокировки

Быстрая проверка за минуту:

  1. Откройте базу на другом компьютере. Работает: проблема локальная.
  2. Посмотрите в Диспетчере задач загрузку процессора процессом 1cv8.exe. Если он жмёт 25% на четырёхъядерном (одно ядро в потолке), то 1С что-то считает. Если 0%, она ждёт ответа сервера или блокировки.
  3. Проверьте, не идёт ли в этот момент обновление, свёртка или загрузка большого файла.
Диагностика: выберите симптом

Как снять задачу в 1С через Диспетчер задач Windows

Это способ №1 для клиентской части. Он подходит и для файловой базы, и для клиент-серверной.

Через окно Диспетчера

  1. Нажмите Ctrl+Shift+Esc.
  2. На вкладке «Процессы» найдите «1С:Предприятие» или 1cv8.exe.
  3. Если процессов несколько, ориентируйтесь на столбец «ЦП» и «Память». Висящий обычно самый загруженный.
  4. Правая кнопка, «Снять задачу».
  5. Подождите 10-15 секунд: окно должно исчезнуть.

На терминальном сервере (RDP) процессов 1cv8.exe бывает десятки, по одному на пользователя. Перейдите на вкладку «Пользователи», раскройте нужного человека и снимайте задачу только у него. Иначе закроете чужие сеансы.

Через командную строку

Если Диспетчер задач сам тормозит, откройте cmd от имени администратора:

tasklist /fi "imagename eq 1cv8.exe"
taskkill /pid 5120 /f

5120 замените на PID из первой команды. Команда taskkill /im 1cv8.exe /f закроет все клиенты 1С на машине, поэтому на терминальном сервере её не используйте.

Если зависает регулярно на одном компьютере, после снятия задачи очистите кеш: закройте 1С и удалите содержимое папок %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Списки баз ibases.v8i лежат в %APPDATA%\1C\1CEStart, их не трогайте.

Что будет с несохранёнными данными

  • 📄 Проведённые документы остаются в базе.
  • ✏️ Открытый, но не записанный документ пропадёт.
  • 🔒 В клиент-серверной базе сеанс останется «висеть» в списке активных на 5-10 минут, пока сервер не поймёт, что клиента нет.

Если после снятия задачи вход в базу говорит про занятость, переходите к разделу про сеансы.

Если 1С зависла у всех: завершаем сеансы через консоль кластера

Клиент снят, а в базе по-прежнему «призрак». Или сотрудник ушёл, не закрыв 1С, а вам нужно срочно обновить конфигурацию . Здесь нужна консоль администрирования серверов 1С.

Найти нужный сеанс

  1. Запустите «Администрирование серверов 1С Предприятия» (оснастка в составе платформы, ярлык в меню «Пуск» или файл из каталога common платформы).
  2. Раскройте «Центральные серверы 1С:Предприятия», нужный сервер, затем «Кластеры» и «Сеансы».
  3. Отфильтруйте список по информационной базе. В колонках видны пользователь, компьютер, приложение и время последней активности.
  4. Подозрительный сеанс: давно нет активности, а «Вызовов» или «Времени вызова» набегает много.

Завершить сеанс

  1. Правая кнопка по сеансу.
  2. «Удалить» (в части версий «Завершить сеанс»).
  3. Подтвердите.

Запретить новые входы на время работ можно в свойствах информационной базы: установите блокировку начала сеансов и пишите причину в сообщении. Так сотрудники не зайдут обратно, пока вы чините базу.

Пошаговый помощник
Проверьте, что сеанс действительно ваш
В консоли сверьте имя пользователя и компьютер. Спросите человека: он закрыл программу или она висит.

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

Рабочие процессы rphost: когда нужен крайний шаг

Сервер 1С состоит из нескольких процессов:

  • ragent: агент сервера, главный;
  • rmngr: менеджер кластера, распределяет нагрузку;
  • rphost: рабочие процессы, в них выполняются сеансы пользователей.

Если сеанс не завершается через консоль, виноват чаще всего зависший rphost. Его можно снять в Диспетчере задач на сервере.

Как найти нужный:

  1. В консоли откройте «Рабочие процессы» и посмотрите PID и порт нагруженного процесса.
  2. В Диспетчере задач на вкладке «Подробности» найдите rphost.exe с этим PID.
  3. «Снять задачу».

Все сеансы на этом процессе оборвутся, а кластер сам запустит новый rphost. Пользователи увидят «Соединение с сервером потеряно» и войдут заново.

Службу ragent целиком (перезапуск службы «Агент сервера 1С:Предприятия 8.3») перезапускайте только вне рабочего времени. Это положит все базы кластера.

Утилита rac: завершить сеанс из командной строки

Консоль не открывается по RDP, сервер под Linux, нужна автоматизация? Работаем через rac. Она лежит в каталоге bin платформы рядом с 1cv8.exe.

Для работы нужен сервер администрирования ras. Запустите его на сервере:

ras cluster --port=1545

Дальше действуйте по шагам.

  1. Узнайте идентификатор кластера:
rac cluster list
  1. Посмотрите список сеансов (подставьте свой cluster):
rac session list --cluster=<id_кластера>
  1. Найдите нужный сеанс по полю user-name или app-id, возьмите его session.
  2. Завершите:
rac session terminate --cluster=<id_кластера> --session=<id_сеанса>

Если кластер защищён паролем, добавьте --cluster-user и --cluster-pwd. Идентификаторы это длинные GUID, копируйте их из вывода, а не набирайте руками.

Чтобы быстро найти сеансы одной информационной базы, сначала получите её идентификатор:

rac infobase summary list --cluster=<id_кластера>

А затем фильтруйте вывод сеансов по infobase. Для массового закрытия напишите короткий скрипт, но не запускайте его на боевой базе без пробного прогона session list.

Блокировки на уровне СУБД: когда висит одна операция

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

Признаки:

  • ⏳ в консоли у сеанса растёт «Время текущего вызова»;
  • 🔗 в журнале ошибок появляются «Превышено максимальное время ожидания блокировки» или «Конфликт блокировок при выполнении транзакции»;
  • 🐌 нагрузка на процессор сервера СУБД небольшая.

Что сделать сначала

  1. В консоли кластера посмотрите вкладку «Блокировки» (если доступна в вашей версии) и найдите, кто блокирует.
  2. Завершите сеанс-блокировщик через консоль или rac, как описано выше. Это штатный путь, СУБД откатит транзакцию сама.
  3. Если сеанса уже нет, а блокировка осталась, переходите к СУБД.

Прямое вмешательство в СУБД

Это последняя мера. В PostgreSQL найдите долгие запросы:

SELECT pid, usename, state, now() - query_start AS duration, left(query, 80)
FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY duration DESC;

Завершить конкретное подключение:

SELECT pg_terminate_backend(12345);

В MS SQL Server смотрите sp_who2 и KILL <spid>. Номера процессов берите из вывода, не из этой статьи.

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

Администратору СУБД проще: он видит цепочку «кто кого ждёт» и снимет верхнее звено.

Что сделать, чтобы 1С не зависала снова

Единичный сбой лечится снятием задачи. Если это повторяется, ищите причину.

Настройки сервера

ПараметрЗачемОриентир
Перезапуск рабочих процессовОсвобождает память, накопленную рабочим процессомРаз в 24 часа, ночью
Допустимый объём памяти процессаНе даёт rphost съесть всёОколо 80% от доступной на сервере
Интервал перезапускаСглаживает утечкиПодберите по журналу, обычно 3600-86400 секунд
Отключение неактивных сеансовУбирает «забытые» окнаЧерез 20-30 минут простоя

Параметры лежат в свойствах кластера и рабочего сервера в консоли. Точные названия различаются по версиям платформы, ищите по слову «перезапуск» и «память».

Что проверить на самой машине

  • 💾 Свободное место на системном диске: меньше 10% начинаются тормоза.
  • 🛡 Исключения антивируса для каталога базы и папок платформы.
  • 🔁 Версия платформы: актуальная минорная версия 8.3 закрывает известные зависания, обновляйтесь после проверки на тестовой копии.
  • 🧹 Раз в квартал сжимайте или перестраивайте индексы СУБД и очищайте кеш клиентов.
Профилактика зависаний
Выполнено: 0 / 5

Типичные ошибки при закрытии зависшей 1С

Ошибка 1: снимать 1cv8.exe на терминальном сервере командой /im. Закроются сеансы всех сотрудников.

Ошибка 2: перезапускать службу агента сервера в разгар рабочего дня, когда достаточно закрыть один сеанс.

Ошибка 3: убивать rphost без проверки PID. Вместе с зависшим сеансом вылетит соседний, где бухгалтер проводит документы.

Ошибка 4: дожидаться «чуда» больше 10 минут. Долгий вызов, накапливающий блокировки, мешает остальным.

Ошибка 5: лечить повторяющееся зависание только снятием задачи. Если оно случается раз в неделю, посмотрите журнал регистрации и технологический журнал: причина всегда есть.

Перед чисткой кеша или завершением процессов сервера сделайте выгрузку или копию базы по регламенту компании. Это страховка от самой редкой, но самой дорогой ситуации.

Как вы обычно закрываете зависшую 1С?

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

Как снять задачу в 1С 8.3, если программа зависла?
Нажмите Ctrl+Shift+Esc, на вкладке «Процессы» выберите 1cv8.exe и нажмите «Снять задачу». В клиент-серверном варианте сеанс на сервере может остаться ещё на несколько минут.
Можно ли потерять данные при принудительном закрытии?
Проведённые и записанные документы не теряются. Пропадёт только то, что вы набрали и не записали, и операция, которую прервали.
Как закрыть 1С, если она висит у сотрудника, а он ушёл домой?
Откройте консоль кластера, найдите сеанс по пользователю и компьютеру, удалите его. Либо завершите сеанс через rac session terminate.
Чем отличается снятие `1cv8.exe` от снятия `rphost`?
1cv8.exe это клиент на компьютере пользователя. rphost рабочий процесс сервера, он обслуживает сразу несколько сеансов, и его снятие оборвёт их все.
Почему 1С зависает при каждом формировании отчёта?
Чаще всего отчёт читает слишком много данных или неэффективно построен. Сузьте период, добавьте отбор и посмотрите статистику запросов в технологическом журнале.
Нужен ли `ras`, если консоль уже работает?
Нет. Консоль подключается сама. ras требуется только для работы утилиты rac.