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

· 10 мин

Содержание

Чтобы принудительно завершить зависший процесс 1С на своём компьютере, откройте Диспетчер задач (Ctrl+Shift+Esc), найдите на вкладке «Подробности» процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор) и нажмите «Снять задачу». Для клиент-серверной базы правильнее удалить зависший сеанс в консоли кластера или командой rac session terminate, не трогая сервер целиком.

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

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

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

Сначала подождите 2–3 минуты и посмотрите на нагрузку. Долгое проведение, закрытие месяца или обновление часто выглядят как зависание, хотя программа работает.

Признаки, что процесс живой и его лучше не трогать:

  • 🔄 в Диспетчере задач у процесса 1С меняется загрузка ЦП или растёт «Память»;
  • 📊 в окне видна полоса прогресса, пусть и медленная;
  • 🛠 в Конфигураторе идёт Обновление конфигурации базы данных или «Тестирование и исправление».

Не снимайте Конфигуратор во время обновления структуры базы или реструктуризации. Обрыв на этом этапе может оставить базу в несогласованном состоянии, и её придётся восстанавливать из копии.

Какие процессы относятся к 1С:

ПроцессГде работаетЧто это
1cv8c.exeкомпьютер пользователятонкий клиент
1cv8.exeкомпьютер пользователятолстый клиент или Конфигуратор
1cv8s.exe, 1cestart.exeкомпьютер пользователяокно запуска со списком баз
ragent.exeсервер 1Сагент сервера
rmngr.exeсервер 1Сменеджер кластера
rphost.exeсервер 1Срабочий процесс, в нём живут сеансы
ras.exeсервер 1Ссервер администрирования для rac
Где работает зависшая база?

Способ 1. Снять процесс 1С через Диспетчер задач Windows

Самый быстрый вариант для одного компьютера.

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

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

Если снятие задачи не срабатывает и процесс «висит» в списке, он ждёт ответа от сетевого диска или сервера. Обычно он исчезает сам через 1–2 минуты после разрыва соединения. Не перезагружайте сервер ради одного такого процесса.

Способ 2. Завершить процесс 1С из командной строки

Командная строка удобна, когда процессов много или нужно снять 1С сразу у нескольких пользователей терминального сервера. Запускайте cmd от имени администратора.

Посмотреть все процессы 1С:

tasklist /FI "IMAGENAME eq 1cv8*"

Принудительно завершить все тонкие клиенты на этом компьютере:

taskkill /F /IM 1cv8c.exe

Завершить конкретный процесс по номеру из столбца PID:

taskkill /F /PID 4812

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

taskkill /F /FI "USERNAME eq ivanova" /IM 1cv8c.exe

Тот же результат в PowerShell:

Get-Process 1cv8* | Format-Table Id, ProcessName, StartTime
Stop-Process -Id 4812 -Force

Ключ /F означает принудительное завершение, /T добавляет к нему дочерние процессы. Без /F Windows только попросит программу закрыться, а зависшая 1С эту просьбу проигнорирует.

Команда taskkill /F /IM 1cv8c.exe без фильтра по пользователю на терминальном сервере закроет 1С у всех, кто в ней работает.

Способ 3. Удалить зависший сеанс в консоли кластера серверов 1С

В клиент-серверной базе закрытие окна на компьютере пользователя не всегда освобождает сеанс: он остаётся на сервере, занимает лицензию и может держать блокировки. Его нужно удалить на стороне кластера.

Через оснастку «Администрирование серверов 1С Предприятия»

  1. Запустите оснастку из меню «Пуск» на сервере или на компьютере администратора.
  2. Раскройте Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → Локальный кластер → Информационные базы → нужная база → Сеансы.
  3. Найдите сеанс по столбцам «Пользователь», «Компьютер», «Приложение» и «Начало работы».
  4. Правый клик → «Удалить». Подтвердите.

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

Если оснастка не открывается или пишет об ошибке компонента, перерегистрируйте radmin.dll той же версии, что и сервер:

regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"

Номер версии в пути замените на свой — он должен совпадать с версией сервера 1С.

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

Утилита rac работает через службу ras (по умолчанию порт 1545). Если служба не запущена, rac не подключится.

rac cluster list
rac session list --cluster=<UUID кластера>
rac session terminate --cluster=<UUID кластера> --session=<UUID сеанса>

Если для кластера задан администратор, добавьте --cluster-user и --cluster-pwd. Полный список параметров выводит rac help session.

Когда завершать рабочий процесс rphost

Рабочий процесс rphost.exe можно выключить в консоли (узел «Рабочие процессы») или снять в Диспетчере задач сервера. Вместе с ним оборвутся все сеансы, которые в нём работали, — часто это десятки пользователей. Делайте это только вечером или после общего предупреждения.

Агент ragent.exe и менеджер rmngr.exe вручную не снимайте. Если сервер 1С перестал отвечать целиком, перезапустите службу «Агент сервера 1С:Предприятия 8.3» через services.msc — и тоже в нерабочее время.

Способ 4. Освободить файловую базу, которая «занята» после сбоя

В файловом варианте нет консоли кластера. База — это файл 1Cv8.1CD, и Windows держит его открытым, пока жив хотя бы один процесс, который к нему обращается. Отсюда сообщения о том, что база заблокирована или монопольный доступ невозможен.

Найти, кто держит файл

Если база лежит в сетевой папке:

  1. На компьютере, где лежит папка базы, откройте compmgmt.msc.
  2. Перейдите в Общие папки → Открытые файлы.
  3. Найдите строки с путём к 1Cv8.1CD — в столбце «Доступ к файлу» видно, какой пользователь его держит.
  4. Сначала попросите этого человека закрыть 1С или снимите его процесс способом 1 или 2. Если процесса уже нет, а файл висит открытым, правый клик → «Закрыть открытый файл».

Если база на локальном диске, запустите resmon, вкладка «ЦП», поле «Связанные дескрипторы», и введите 1Cv8.1CD. Монитор ресурсов покажет процесс, который держит базу.

Служебные файлы в папке базы

В папке базы, кроме 1Cv8.1CD, лежат служебные файлы и папка журнала регистрации 1Cv8Log. Их удаление «на всякий случай» встречается в советах, но это последний шаг, а не первый.

Правила, если всё-таки дошли до этого:

  1. Убедитесь, что ни у кого нет процесса 1С с этой базой: проверьте «Открытые файлы» и Диспетчер задач.
  2. Скопируйте всю папку базы целиком в другое место.
  3. Удаляйте только временные файлы, оставшиеся после сбоя. 1Cv8.1CD и папку 1Cv8Log не трогайте никогда.

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

Как завершить работу всех пользователей штатно

Перед обновлением или регламентными работами снимать процессы по одному неудобно. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть штатный механизм.

  1. Откройте Администрирование → Обслуживание.
  2. В группе регламентных операций откройте «Блокировка работы пользователей».
  3. Установите время начала блокировки, сообщение для пользователей и код разрешения.
  4. Нажмите кнопку установки блокировки. Пользователи получат предупреждение и будут отключены в назначенное время.

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

Для пакетных скриптов тот же механизм вызывают параметром запуска:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F"D:\Base\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"КОД123"

Код /UC — это код разрешения, с которым администратор потом войдёт в заблокированную базу. Снимают блокировку параметром /C"РазрешитьРаботуПользователей".

В Конфигураторе меню Администрирование → Активные пользователи только показывает список. Завершить сеанс оттуда нельзя.

Ищем причину зависания в журнале регистрации

Если 1С зависает регулярно, снятие процесса лечит симптом. Причину ищут в журнале регистрации.

  1. Откройте Администрирование → Обслуживание → Журнал регистрации (в Конфигураторе — Администрирование → Журнал регистрации).
  2. Задайте отбор: период за час до зависания, нужный пользователь, важность «Ошибка».
  3. Посмотрите события «Сеанс. Завершение» и «Сеанс. Аутентификация» рядом с моментом сбоя.
  4. Отдельно отберите события «Данные» с этим пользователем: последняя операция перед обрывом часто указывает на документ или обработку, на которой всё встало.

Что обычно находится в журнале:

  • 🔒 ошибки блокировки данных — два пользователя пытались изменить одни и те же записи;
  • 🧾 ошибка в обработке или внешнем отчёте — повторяется у всех, кто её запускает;
  • 🌐 потеря соединения с сервером — проблема сети или сервера, а не базы;
  • ⏳ долгий запрос без ошибки — подозрение на тяжёлый отчёт за большой период.

Когда журнала мало, включают технологический журнал. Он настраивается файлом logcfg.xml в папке conf платформы (обычно C:\Program Files\1cv8\conf). Минимальная настройка для сбора исключений:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1C_techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

history="24" — хранить файлы 24 часа. Оставлять технологический журнал включённым надолго не стоит: на нагруженном сервере он быстро занимает гигабайты. Соберите данные за день-два и удалите файл logcfg.xml.

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

Профилактика дешевле, чем каждый раз снимать процессы.

МераЧто даётКак часто
Очистка кэша клиентаубирает сбои после обновлений и смены платформыпри странном поведении после обновления
Тестирование и исправление базычинит логические ошибки и индексыраз в квартал или после аварий
Обновление платформыисправления зависаний самой платформыпо мере выхода релизов, после проверки на копии
Перезапуск рабочих процессовосвобождает память rphostпо расписанию в свойствах кластера
Проверка места на дискахбез места на диске 1С встаёт при записипостоянно, мониторингом

Практические детали:

  • 🧹 Кэш. Добавьте в параметры запуска базы ключ /ClearCache на один запуск. Это проще и безопаснее, чем вручную чистить папки в %APPDATA%\1C\1cv8.
  • 🛠 Тестирование. В Конфигураторе: Администрирование → Тестирование и исправление. Для этой операции нужен монопольный доступ, все пользователи должны выйти. Перед запуском сделайте копию базы .
  • ♻️ Память сервера. В свойствах кластера задайте интервал перезапуска рабочих процессов — например, раз в сутки ночью. Тогда rphost не будет копить память неделями.
  • 💾 Файловая база в сети. Если с одной файловой базой по сети работают 5–10 человек и она постоянно зависает, это предел файлового варианта. Помогает перевод на клиент-серверный вариант или публикация на веб-сервере.
  • 🧾 Тяжёлые отчёты. Формируйте отчёты за год и закрытие месяца вне рабочего времени, когда в базе мало пользователей.
Регулярная профилактика зависаний 1С
Выполнено: 0 / 5

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

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