Зависла 1С: как снять процесс, сеанс и блокировку базы
Содержание
Чтобы принудительно завершить зависший процесс 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 |
1cv8c.exe или 1cv8.exe в Диспетчере задач. Если база после этого пишет, что занята, проверьте открытые файлы на компьютере, где лежит папка базы.taskkill с фильтром по имени пользователя.rac. Сервер и остальных пользователей не трогайте.rphost.exe с аномальной памятью или нагрузкой. Завершайте его только в нерабочее время или после предупреждения всех, кто в нём работает.Способ 1. Снять процесс 1С через Диспетчер задач Windows
Самый быстрый вариант для одного компьютера.
- Нажмите
Ctrl+Shift+Esc. - Перейдите на вкладку «Подробности» — там видны точные имена файлов, а не просто «1С:Предприятие».
- Отсортируйте по столбцу «Имя» и найдите
1cv8c.exeили1cv8.exe. - Если открыто несколько баз, ориентируйтесь на столбец «ИД процесса» и на загрузку: зависший обычно держит одно ядро или «Не отвечает» в столбце состояния.
- Правый клик → «Снять задачу» или «Завершить дерево процессов».
На терминальном сервере откройте вкладку «Пользователи», разверните нужного человека и снимите его процесс 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С Предприятия»
- Запустите оснастку из меню «Пуск» на сервере или на компьютере администратора.
- Раскройте
Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → Локальный кластер → Информационные базы → нужная база → Сеансы. - Найдите сеанс по столбцам «Пользователь», «Компьютер», «Приложение» и «Начало работы».
- Правый клик → «Удалить». Подтвердите.
Если сеансов много и непонятно, какой завис, смотрите на столбцы с нагрузкой и временем вызова: зависший сеанс обычно долго держит один вызов. Оснастка показывает и узел «Соединения» — после удаления сеанса проверьте, не осталось ли соединения того же компьютера.
Если оснастка не открывается или пишет об ошибке компонента, перерегистрируйте 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 держит его открытым, пока жив хотя бы один процесс, который к нему обращается. Отсюда сообщения о том, что база заблокирована или монопольный доступ невозможен.
Найти, кто держит файл
Если база лежит в сетевой папке:
- На компьютере, где лежит папка базы, откройте
compmgmt.msc. - Перейдите в
Общие папки → Открытые файлы. - Найдите строки с путём к
1Cv8.1CD— в столбце «Доступ к файлу» видно, какой пользователь его держит. - Сначала попросите этого человека закрыть 1С или снимите его процесс способом 1 или 2. Если процесса уже нет, а файл висит открытым, правый клик → «Закрыть открытый файл».
Если база на локальном диске, запустите resmon, вкладка «ЦП», поле «Связанные дескрипторы», и введите 1Cv8.1CD. Монитор ресурсов покажет процесс, который держит базу.
Служебные файлы в папке базы
В папке базы, кроме 1Cv8.1CD, лежат служебные файлы и папка журнала регистрации 1Cv8Log. Их удаление «на всякий случай» встречается в советах, но это последний шаг, а не первый.
Правила, если всё-таки дошли до этого:
- Убедитесь, что ни у кого нет процесса 1С с этой базой: проверьте «Открытые файлы» и Диспетчер задач.
- Скопируйте всю папку базы целиком в другое место.
- Удаляйте только временные файлы, оставшиеся после сбоя.
1Cv8.1CDи папку1Cv8Logне трогайте никогда.
Если база открыта хотя бы у одного пользователя, удаление служебных файлов не поможет: Windows не даст их удалить, а если даст — пострадают данные открытого сеанса.
Как завершить работу всех пользователей штатно
Перед обновлением или регламентными работами снимать процессы по одному неудобно. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть штатный механизм.
- Откройте
Администрирование → Обслуживание. - В группе регламентных операций откройте «Блокировка работы пользователей».
- Установите время начала блокировки, сообщение для пользователей и код разрешения.
- Нажмите кнопку установки блокировки. Пользователи получат предупреждение и будут отключены в назначенное время.
Там же ссылка «Активные пользователи» показывает, кто сейчас в базе. В клиент-серверном варианте из этого списка можно завершить выбранный сеанс, если программа знает параметры администратора кластера.
Для пакетных скриптов тот же механизм вызывают параметром запуска:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F"D:\Base\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"КОД123"
Код /UC — это код разрешения, с которым администратор потом войдёт в заблокированную базу. Снимают блокировку параметром /C"РазрешитьРаботуПользователей".
В Конфигураторе меню Администрирование → Активные пользователи только показывает список. Завершить сеанс оттуда нельзя.
Ищем причину зависания в журнале регистрации
Если 1С зависает регулярно, снятие процесса лечит симптом. Причину ищут в журнале регистрации.
- Откройте
Администрирование → Обслуживание → Журнал регистрации(в Конфигураторе —Администрирование → Журнал регистрации). - Задайте отбор: период за час до зависания, нужный пользователь, важность «Ошибка».
- Посмотрите события «Сеанс. Завершение» и «Сеанс. Аутентификация» рядом с моментом сбоя.
- Отдельно отберите события «Данные» с этим пользователем: последняя операция перед обрывом часто указывает на документ или обработку, на которой всё встало.
Что обычно находится в журнале:
- 🔒 ошибки блокировки данных — два пользователя пытались изменить одни и те же записи;
- 🧾 ошибка в обработке или внешнем отчёте — повторяется у всех, кто её запускает;
- 🌐 потеря соединения с сервером — проблема сети или сервера, а не базы;
- ⏳ долгий запрос без ошибки — подозрение на тяжёлый отчёт за большой период.
Когда журнала мало, включают технологический журнал. Он настраивается файлом 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 человек и она постоянно зависает, это предел файлового варианта. Помогает перевод на клиент-серверный вариант или публикация на веб-сервере.
- 🧾 Тяжёлые отчёты. Формируйте отчёты за год и закрытие месяца вне рабочего времени, когда в базе мало пользователей.