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

· 10 мин

Содержание

Если 1С зависла, не нажимайте крестик по десять раз. Сначала подождите две-три минуты: проведение большого документа или формирование отчёта выглядят как «белое окно», но на деле программа работает. Если окно не реагирует дольше, снимите задачу 1cv8.exe в диспетчере задач. Это перезагрузит 1С на вашем компьютере за полминуты. Для клиент-серверной базы бывает, что виснет не клиент, а сеанс на сервере: тогда его завершает администратор в консоли кластера.

Ниже порядок действий от безопасных к радикальным. Идите сверху вниз и останавливайтесь, как только программа ожила.

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

Прежде чем убивать процесс, поймите, что именно происходит. Закрыть работающую обработку в середине записи значит рискнуть данными.

Признаки того, что 1С работает, а не висит:

  • 🟢 курсор мыши в окне 1С крутится, но окно перерисовывается рывками;
  • 🟢 в диспетчере задач процесс 1cv8.exe грузит процессор или диск, значения меняются;
  • 🟢 вы запустили проведение за период, пересчёт себестоимости, закрытие месяца , обмен или загрузку файла;
  • 🟢 в заголовке окна нет надписи «(не отвечает)».

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

  • 🔴 в заголовке окна появилось «(не отвечает)», окно стало бледным;
  • 🔴 процесс 1cv8.exe не потребляет ни процессор, ни память уже минут десять;
  • 🔴 остальные пользователи той же базы работают нормально, а вы нет — виснет ваш сеанс;
  • 🔴 зависли все пользователи одновременно — проблема на сервере, в блокировках или в СУБД.

Откройте диспетчер задач сочетанием Ctrl+Shift+Esc, вкладка «Подробности», найдите 1cv8.exe (или 1cv8c.exe для тонкого клиента ). Если процессов несколько, у вас открыто несколько окон или баз. Уточнить, какое зависло, помогает столбец «Описание» или заголовок окна. Столбец «Командная строка» можно добавить через правый клик по заголовку таблицы.

Что именно у вас происходит?

Завершить зависшую 1С в Windows: три способа

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

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

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

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

На обычных рабочих местах хватает этого способа. Если процесс остался в состоянии «не отвечает» и не закрывается, переходите к командной строке.

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

Откройте командную строку от имени администратора и выполните:

taskkill /IM 1cv8.exe /F

Для тонкого клиента:

taskkill /IM 1cv8c.exe /F

Ключ /F завершает процесс принудительно. Эта команда закрывает все запущенные копии клиента на компьютере, то есть и те базы, в которых вы работаете без проблем. Если нужен один процесс, сначала посмотрите его номер (PID) в диспетчере задач и завершите так:

taskkill /PID 4812 /F

Подставьте свой PID вместо 4812.

Если вы подключены через терминальный сервер

На терминальном сервере зависание вашей сессии не лечится перезагрузкой своего компьютера: процесс 1С крутится на сервере. Откройте диспетчер задач внутри сеанса (там будут только ваши процессы), завершите 1cv8.exe. Если сессия целиком не отвечает, администратор сервера может завершить её в диспетчере задач на вкладке «Пользователи» (команда «Выйти»), не затрагивая остальных.

После завершения процесса запустите 1С заново. Если база просит восстановить сеанс или пишет, что работа завершена аварийно, это нормально: платформа сама почистит остатки.

Сеанс завис на сервере: завершаем его в консоли кластера

Клиентский процесс убит, а в списке активных пользователей ваше имя всё ещё висит? Или база не даёт обновиться, потому что «в ней работают пользователи»? Тогда нужно закрыть сеанс на стороне сервера. Это касается только клиент-серверного варианта работы.

Чаще всего используют оснастку «Администрирование серверов 1С Предприятия» (она ставится вместе с сервером, на Windows запускается из меню «Пуск»). Кластер администрирует тот, кому выданы права на сервер.

Порядок:

  1. Откройте консоль и подключитесь к нужному центральному серверу.
  2. Раскройте «Кластеры» → ваш кластер → «Информационные базы» → нужная база.
  3. Зайдите в раздел «Сеансы». Там список всех подключений: пользователь, приложение, компьютер, время начала, объём работы.
  4. Найдите зависший сеанс (по имени пользователя и компьютеру) и удалите его правой кнопкой мыши.

Для тех, кто работает из командной строки, подойдёт утилита администрирования rac. Например, список сеансов выводит команда:

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

Идентификатор кластера покажет команда rac cluster list. Остальные параметры и завершение сеанса смотрите в справке rac help — состав команд зависит от версии платформы.

Как отличить зависший сеанс от рабочего

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

Перед удалением сеанса позвоните его владельцу, если он на связи. Незаписанный документ пропадёт, а длинная транзакция откатится, на что тоже уйдёт время.

Иногда сеанс не удаляется с первого раза: он «ждёт» окончания серверного вызова. Подождите минуту-две и повторите. Если не уходит совсем, переходите к блокировкам.

Блокировки на уровне 1С: кто держит и что с ними делать

Сервер видит блокировки двух видов: на уровне 1С (управляемые, их ставит платформа) и на уровне СУБД. Вторые разберём ниже.

Если один сеанс завис в ожидании, а все остальные упёрлись в него, проверьте список блокировок. В консоли кластера у информационной базы есть раздел «Блокировки», куда попадают текущие захваты ресурсов и те, кто в очереди. Смотрите:

  • 🔒 Кто владеет блокировкой — сеанс, который её держит. Именно он обычно причина затора.
  • ⏳ Кто ждёт — сеансы с пометкой ожидания и временем в очереди.
  • 🔗 Что заблокировано — таблица или ресурс, по которому идёт конфликт.

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

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

Блокировки в SQL Server: найти и снять

Когда консоль кластера пуста, а работа стоит, причина часто в СУБД. 1С на SQL Server хранит данные в таблицах, и если одна транзакция держит блокировку, остальные ждут ответа. Для этого нужен доступ к SQL Server Management Studio и права администратора СУБД.

Быстрая проверка, кто кого блокирует:

EXEC sp_who2;

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

DBCC INPUTBUFFER (57);

Вместо 57 подставьте номер сеанса из sp_who2. Так видно последний запрос, который он отправил.

Решение о завершении принимайте после проверки. Завершить сеанс СУБД можно командой:

KILL 57;

KILL откатывает незавершённую транзакцию. Если транзакция была большая (например, закрытие месяца), откат может идти столько же, сколько шла работа. Не запускайте KILL повторно «для надёжности»: это не ускорит откат. Статус отката покажет KILL 57 WITH STATUSONLY.

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

Если блокировки возникают регулярно, дело не в зависании, а в архитектуре: длинные транзакции в обработках, неудачная настройка режима управляемых блокировок, нехватка памяти у SQL Server. Это уже тема для разбора технического журнала, и перезагрузкой её не решить.

Перезапуск службы сервера 1С: когда ничего другое не помогло

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

Для Windows:

  1. Откройте оснастку «Службы» (services.msc).
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии будет разрядность и версия платформы).
  3. Нажмите «Перезапустить» или последовательно «Остановить» и «Запустить».

Через командную строку (имя службы подставьте своё, его видно в свойствах службы):

net stop "Имя службы"
net start "Имя службы"

Для Linux служба обычно называется srv1cv83 (бывает с версией платформы в имени):

sudo systemctl restart srv1cv83

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

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

Перезагрузка самого сервера (всей операционной системы) нужна ещё реже: когда не отвечает уже сама ОС или СУБД. Порядок такой: предупредить пользователей, остановить службу 1С, остановить SQL Server, затем перезагружать.

Файловая база: что делать, если «висит» без сервера

В файловой базе (каталог с файлом 1Cv8.1CD) сервера нет, и зависать может только клиент. Все советы выше про консоль кластера и СУБД к ней не относятся.

Что проверить:

  • 📁 Нет ли у базы второго зависшего процесса 1cv8.exe на компьютере другого пользователя, который держит файл.
  • 🌐 Лежит ли база на сетевом диске. Обрыв связи с файловым сервером выглядит как зависание всех клиентов сразу.
  • 💾 Свободно ли место на диске: когда его не остаётся, запись может «замирать».
  • 🛡️ Не сканирует ли антивирус файл базы при каждом обращении. Добавьте каталог базы в исключения.

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

Как сделать, чтобы 1С реже зависала

Зависание, которое повторяется раз в неделю, нужно лечить причиной. Что проверить в первую очередь:

ПричинаКак проявляетсяЧто сделать
Нехватка оперативной памяти на клиентеТормозит всё, не только 1СЗакрыть лишнее, добавить память
Антивирус сканирует каталог базыЛаги при записи, особенно в файловойИсключить каталог базы и каталог кэша
Раздутый кэш клиентаДолгий запуск, странные ошибки интерфейсаОчистить кэш при закрытой 1С
Долгие фоновые заданияВечером база «не отвечает»Перенести регламентные задания на ночь
Нет обслуживания СУБДПланы запросов деградируютОбновлять статистику и переиндексировать
Устаревшая платформаИзвестные ошибки зависанийОбновить до рекомендованного релиза

Очистка кэша клиента: закройте 1С полностью и удалите содержимое каталога кэша пользователя (он лежит в профиле, обычно в AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8). Платформа создаст кэш заново. Либо запустите 1С с ключом /ClearCache в командной строке запуска. Перед этим предупредите пользователя: придётся заново выбрать список баз, если он хранится в тех же настройках.

Если зависания повторяются, проверьте по списку
Выполнено: 0 / 5

Если зависание воспроизводится в одном и том же месте (одна и та же кнопка, один и тот же отчёт), запишите шаги и время. Администратору это поможет найти запрос в технологическом журнале, а вам избавит от лишних перезапусков.

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

Потеряются ли данные, если снять задачу 1cv8.exe?
Уже записанные документы останутся в базе. Пропадёт то, что вы не успели записать в открытой форме. Незавершённая транзакция на сервере откатится сама.
Нужно ли перезагружать компьютер, если 1С зависла?
Нет. Достаточно завершить процесс 1cv8.exe или 1cv8c.exe и запустить программу заново. Перезагрузка компьютера нужна, только когда не отвечает сама Windows.
Почему после закрытия 1С пользователь остаётся в списке активных?
Серверный сеанс живёт отдельно от клиентского окна и закрывается не сразу. Подождите несколько минут, затем администратор может завершить его вручную в консоли кластера.
Можно ли перезапустить 1С Предприятие на сервере в рабочее время?
Технически можно, но все пользователи кластера потеряют сеансы и несохранённые данные. Делайте это в нерабочее время или после предупреждения.
Что делать, если консоль кластера сама не открывается?
Проверьте, запущена ли служба агента сервера 1С и доступен ли сервер по сети. Если служба остановлена, запустите её; если запущена, но консоль не подключается, посмотрите, что порты кластера не закрыты брандмауэром.