Зависла 1С: как снять задачу и не потерять данные

· 9 мин

Содержание

Сначала попробуйте мягкие способы: подождать пару минут, нажать Ctrl+Break, закрыть окно через Alt+F4. Не помогло, а окно «Не отвечает» — снимайте процесс 1cv8.exe в диспетчере задач (Ctrl+Shift+Esc). В клиент-серверной базе зависший сеанс завершают в консоли кластера серверов, а не на компьютере пользователя.

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

Если у пользователя была открыта длинная операция записи (проведение пачки документов, закрытие месяца), принудительное снятие может оставить документы непроведёнными. Сначала убедитесь, что это действительно зависание, а не тяжёлая операция.

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

Прежде чем убивать процесс, определите, что происходит. 1С часто «белеет» на 1–3 минуты при честной работе: закрытие периода , обновление итогов, запрос по большому регистру.

Признаки того, что процесс жив:

  • 🟢 в диспетчере задач 1cv8.exe грузит процессор или диск (хотя бы 5–10% и меняется);
  • 🟢 растёт потребление памяти процессом;
  • 🟢 на сервере в консоли кластера у сеанса растёт «Вызовов» и «Время вызова»;
  • 🟢 курсор — песочные часы, но окно перерисовывается при перетаскивании.

Признаки настоящего зависания:

  • 🔴 окно «Не отвечает», загрузка процесса 0% уже несколько минут;
  • 🔴 в клиент-серверной базе «Текущий вызов» один и тот же 10+ минут при нулевой нагрузке;
  • 🔴 сеанс висит в списке, хотя пользователь давно закрыл программу.
Что у вас происходит?

Снять задачу в 1С комбинацией клавиш

Универсальной «горячей клавиши, убивающей 1С», нет. Но есть три сочетания, которые работают по нарастающей.

СочетаниеЧто делаетКогда
Ctrl+BreakПрерывает выполняющийся серверный или клиентский код 1СДолгий отчёт, обработка, цикл
Alt+F4Просит окно закрытьсяОкно подаёт признаки жизни
Ctrl+Shift+EscОткрывает диспетчер задач WindowsОкно «Не отвечает»

Порядок такой:

  1. Нажмите Ctrl+Break и подождите 30–60 секунд. Платформа покажет вопрос о прерывании или сама вернёт управление.
  2. Если реакции нет, нажмите Alt+F4 на зависшем окне.
  3. Если оно не закрылось, откройте диспетчер задач через Ctrl+Shift+Esc.

Клавиша Break на ноутбуках часто спрятана под Fn: попробуйте Fn+Pause или Ctrl+Fn+B. Сочетание зависит от модели.

Как в 1С снять задачу в файловой базе

Файловая база не имеет сервера. Клиентский процесс 1cv8.exe (или 1cv8c.exe для тонкого клиента ) сам читает и пишет файлы базы. Зависание — это проблема конкретного компьютера или блокировки файла.

Через диспетчер задач

  1. Ctrl+Shift+Esc → вкладка «Процессы» или «Подробности».
  2. Найдите 1cv8.exe. Если открыто несколько баз, процессов будет несколько. Ориентируйтесь на время запуска и потребление памяти.
  3. Правая кнопка → «Снять задачу» (в «Подробностях» — «Завершить дерево процессов»).

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

Подходит, если диспетчер сам тормозит или нужно снять процесс удалённо.

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

Снять все клиенты 1С на машине сразу (осторожно, закроются все базы):

taskkill /im 1cv8.exe /f
taskkill /im 1cv8c.exe /f

Для удалённой машины добавьте ключи /s имя_компьютера /u пользователь. На терминальном сервере сначала посмотрите, чей процесс: tasklist /v покажет владельца в столбце «Имя пользователя».

Если мешает файл блокировки

После аварийного закрытия в каталоге базы может остаться служебный файл 1Cv8.cdn, и база считается занятой. Сначала убедитесь, что на всех машинах процессов 1cv8.exe с этой базой нет. Только потом удаляйте файл блокировки.

Перед любыми действиями с каталогом базы сделайте копию папки целиком. Файл 1CD ни в коем случае не редактируйте и не «чистите» руками.

Завершить сеанс в клиент-серверной базе

На сервере пользовательский клиент — лишь окно. Настоящая работа идёт в процессе rphost. Если снять 1cv8.exe на компьютере, сеанс на сервере может висеть ещё до таймаута. Поэтому правильный путь — завершить сеанс на стороне кластера.

Консоль администрирования серверов

  1. Откройте оснастку «Администрирование серверов 1С:Предприятия».
  2. Раскройте «Центральные серверы» → нужный кластер → «Информационные базы».
  3. Выберите базу и откройте «Сеансы».
  4. Найдите сеанс по пользователю и времени последней активности.
  5. Правая кнопка → «Удалить» (в разных версиях консоли пункт называется по-разному, ищите завершение сеанса).

Столбцы, которые помогают понять, кого завершать:

  • 👤 «Пользователь» и «Компьютер» — чей сеанс;
  • ⏱ «Время последней активности» — давно ли что-то делал;
  • 🔧 «Текущий вызов» — что выполняет прямо сейчас;
  • 📊 «Вызовов всего» и «Время вызовов» — активность за всё время сеанса.

Если нужно сначала разобраться со всеми соединениями (сервис, регламентные задания), загляните в список «Соединения» того же узла.

Из самой базы

Если вы ещё можете войти, откройте список активных пользователей: в Конфигураторе Администрирование → Активные пользователи, в обычном режиме — через «Все функции» и поиск по слову «Активные» (путь зависит от конфигурации). Выберите зависший сеанс и завершите его.

Через утилиту rac

Когда консоль недоступна или нужно автоматизировать, используйте командную утилиту rac из каталога платформы.

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

Идентификаторы в выводе — длинные GUID. Копируйте их полностью.

Если сервер зависает целиком

Бывает, что один «тяжёлый» вызов блокирует остальных. Тогда в консоли проверьте, не висит ли блокировка у другого сеанса, и сравните с блокировками в СУБД. Перезапускать службу агента сервера нужно только в крайнем случае, и только после предупреждения всех пользователей. Рабочие процессы rphost перезапустит сам кластер, а ragent и rmngr без нужды не трогайте.

На Linux аналог диспетчера задач — kill. Сначала мягкий сигнал, потом жёсткий:

ps aux | grep rphost
kill 12345
kill -9 12345

Если файловая база повреждена: утилита chdbfl

Иногда причина зависания — не процесс, а сама база: оборвалась запись, отключилось питание, база на сетевой папке потеряла связь. После снятия задачи 1С не открывается или снова виснет на старте. Для файлового варианта есть проверка chdbfl.exe в каталоге bin установленной платформы.

Порядок действий:

  1. Убедитесь, что к базе никто не подключён.
  2. Скопируйте файл 1Cv8.1CD в безопасное место.
  3. Запустите chdbfl.exe, укажите файл базы.
  4. Сначала запустите проверку без галочки исправления и посмотрите отчёт.
  5. Если ошибки найдены, повторите с флагом исправления.
  6. Откройте базу и проверьте ключевые документы и остатки.

Более надёжный путь — выгрузка/загрузка базы через Конфигуратор (Администрирование → Выгрузить информационную базу) и тестирование и исправление (Администрирование → Тестирование и исправление).

chdbfl не лечит клиент-серверные базы. Там структуру проверяют средствами СУБД и тестированием и исправлением через Конфигуратор.

Что искать в журналах, когда зависания повторяются

Одно зависание — случайность. Если оно приходит каждый день, ищите причину в логах.

Журнал регистрации

Открывается из Конфигуратора (Администрирование → Журнал регистрации) или из пользовательского режима. Что смотреть:

  • события «Ошибка» и «Предупреждение» за 5–10 минут до зависания;
  • события блокировок и тайм-аутов;
  • какой пользователь и какое приложение выполнялось (фоновое задание, клиент, веб-сервис).

Отбор по времени и уровню значительно сокращает список.

Технологический журнал

Он нужен, если журнал регистрации молчит. Настраивается файлом logcfg.xml в каталоге conf платформы. Для поиска зависаний обычно включают сбор событий с длительностью, например CALL, SDBL, DBMSSQL, TLOCK, TTIMEOUT, DEADLOCK. Ограничивайте сбор по длительности и времени хранения. Иначе журнал за день займёт десятки гигабайт и сам нагрузит диск.

Типичные находки:

СобытиеЧто показывает
TLOCK, TTIMEOUT, TDEADLOCKКонфликт управляемых блокировок
DBMSSQL с большой длительностьюМедленный запрос к СУБД
CALL с большой длительностьюТяжёлый серверный вызов
EXCPИсключения платформы

Почему 1С зависает: частые причины

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

Профилактика: как реже снимать задачи

Большая часть зависаний лечится регулярной профилактикой. Не нужно делать всё сразу, начните с первых трёх пунктов.

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

Что стоит добавить к чек-листу:

  • 🛠 для файловой базы 20+ пользователей пора переходить на клиент-сервер;
  • 🗄 для сервера: достаточно оперативной памяти, диски на SSD, tempdb и журнал транзакций на быстрых носителях;
  • 🔁 для долгих процессов: выносите в фоновые задания и запускайте ночью;
  • 🧹 периодически чистите кэш клиента и временные файлы.

Что делать, если не помогло

Если задача снята, а проблема возвращается, идите дальше по цепочке.

  1. Запустите базу под другим пользователем и на другом компьютере. Так вы поймёте, дело в клиенте или в базе.
  2. Запустите с параметром /ClearCache, затем пересоздайте список баз в стартовом окне.
  3. Выполните тестирование и исправление информационной базы (без реструктуризации сначала).
  4. Сравните версию платформы на клиенте и на сервере: расхождение даёт странные зависания.
  5. Обратитесь к специалисту по обслуживанию с логами: журнал регистрации и технологический журнал за период сбоя.
Пошаговый помощник
Шаг 1. Дайте процессу время
Подождите 2–3 минуты, нажмите Ctrl+Break. Если окно ожило, зависания не было.
Проверьте себя
Что завершать первым, если зависший сеанс в клиент-серверной базе остался в списке, а пользователь ушёл?
Для какой базы подходит утилита `chdbfl`?
Что нужно сделать перед исправлением файловой базы?

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

Потеряю ли я данные, если сниму задачу 1С?
Несохранённые изменения в открытых формах пропадут. Уже проведённые и записанные документы останутся. Риск повреждения у файловой базы выше, чем у клиент-серверной.
Можно ли снять задачу у другого пользователя, не заходя к нему?
Да, в клиент-серверной базе — через консоль кластера или rac. В файловой можно удалённо снять процесс командой taskkill с ключом /s.
Почему после снятия задачи пользователь не может войти в базу?
Сеанс мог остаться на сервере. Завершите его в консоли кластера или подождите таймаута. Для файловой базы проверьте, не остался ли файл блокировки.
Чем `1cv8.exe` отличается от `1cv8c.exe`?
Первый — толстый клиент и Конфигуратор, второй — тонкий клиент. Задачу снимайте у того процесса, который реально висит.
Нужно ли перезагружать сервер, если зависла 1С?
Как правило, нет. Хватает завершения сеанса или перезапуска рабочего процесса. Перезагрузка нужна, только если зависла сама операционная система или СУБД.
Как защититься от «вечных» сеансов?
Задайте в консоли кластера время завершения неактивных сеансов и ограничьте продолжительность вызова. Эти параметры есть в свойствах кластера и информационной базы.