Зависла 1С: снимаем процесс, чистим сеанс и ищем причину
Содержание
Чтобы принудительно закрыть зависшую
1С, откройте диспетчер задач (Ctrl+Shift+Esc), на вкладке «Подробности» найдите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор) и нажмите «Снять задачу». Если диспетчер не помогает, та же операция делается командой taskkill /IM 1cv8c.exe /F.
Это закрывает окно программы на вашем компьютере. Но в клиент-серверной базе сеанс может остаться висеть на сервере и держать лицензию и блокировки. Поэтому полный порядок такой: снять процесс, убрать сеанс, проверить блокировки и выяснить по журналу, почему программа зависла. Всё ниже относится к платформе 1С:Предприятие 8.3 и одинаково для любых конфигураций: БП 3.0, ЗУП 3.1, УТ 11 и других.
Перед тем как снимать процесс: зависла или думает
Бухгалтер запустил оборотно-сальдовую ведомость за три года по всем субсчетам, окно побелело и пишет «Не отвечает». Через четыре минуты отчёт сформировался. Если бы процесс сняли на второй минуте, работу пришлось бы начинать заново.
Отличить «долго думает» от «зависла» можно за минуту:
- 🔍 Загрузка процессора. В диспетчере задач у процесса 1С идёт нагрузка на ЦП, растёт память — программа работает. Ноль процентов несколько минут подряд — скорее всего, ждёт чего-то и не дождётся.
- ⏳ Что делали перед зависанием. Закрытие месяца , перепроведение документов, большой отчёт, загрузка из банка — операции долгие сами по себе. Нажатие на справочник или открытие документа — нет.
- 🖥️ Сервер 1С. В клиент-серверной базе тормозить может сервер, а не ваш компьютер. Если у коллег 1С тоже стоит — снимать свой клиент бесполезно.
Никогда не снимайте Конфигуратор во время «Обновления конфигурации базы данных» (реструктуризации) и загрузки файла .dt. Прерванная реструктуризация может оставить базу в неработоспособном состоянии. Здесь ждут до конца, даже если это час.
Если зависание повторяется и его хотят разобрать программисты, перед снятием процесса щёлкните по нему правой кнопкой в диспетчере задач и выберите «Создать файл дампа». Файл покажет, на чём именно встала программа.
Что вы теряете при принудительном закрытии:
| Что | Что с ним будет |
|---|---|
| Несохранённый документ в открытой форме | Пропадёт, введённое придётся набрать заново |
| Документ, который проводился в момент зависания | Транзакция откатится, документ останется непроведённым |
| Уже записанные документы | Не пострадают |
| Сеанс на сервере | Может остаться «висеть», пока его не удалят |
Снятие задачи 1С через диспетчер задач Windows
Это самый быстрый способ и для пользователя, и для администратора терминального сервера.
- Нажмите
Ctrl+Shift+Esc. Если окно открылось в компактном виде, нажмите «Подробнее». - Перейдите на вкладку «Подробности». На вкладке «Процессы» 1С тоже видна, но там сложнее понять, какой именно процесс зависший.
- Отсортируйте список по столбцу «Имя» и найдите процессы 1С.
- Выделите нужный, нажмите «Снять задачу» и подтвердите.
Какие процессы 1С можно встретить на рабочей станции:
| Процесс | Что это |
|---|---|
1cv8c.exe | Тонкий клиент — обычный режим работы пользователя |
1cv8.exe | Толстый клиент или Конфигуратор |
1cestart.exe | Окно запуска со списком баз |
Если открыто несколько баз, процессов 1cv8c.exe будет несколько. Добавьте в диспетчере столбец «Командная строка» (правый клик по заголовку таблицы → «Выбрать столбцы»): в нём видно, к какой базе подключён каждый процесс. Так вы не закроете соседнюю базу, где всё в порядке.
На терминальном сервере администратор видит процессы всех пользователей. Нужный находите по столбцу «Имя пользователя».
Принудительное завершение 1С из командной строки и PowerShell
Командная строка выручает, когда диспетчер задач не открывается, когда процесс «не снимается» с первого раза и когда нужно закрыть 1С у конкретного пользователя на терминальном сервере.
CMD: tasklist и taskkill
Сначала посмотрите, что запущено:
tasklist /FI "IMAGENAME eq 1cv8*"
Закрыть все тонкие клиенты на этом компьютере:
taskkill /IM 1cv8c.exe /F
Закрыть один процесс по номеру (PID берётся из вывода tasklist):
taskkill /PID 5124 /F
Закрыть 1С только у одного пользователя на терминальном сервере:
taskkill /F /FI "USERNAME eq ivanova" /FI "IMAGENAME eq 1cv8c.exe"
Ключ /F означает «принудительно». Без него Windows вежливо попросит программу закрыться, а зависшая 1С эту просьбу не выполнит. Ключ /T дополнительно закрывает дочерние процессы.
taskkill /IM 1cv8c.exe /F, запущенная от администратора на терминальном сервере, закроет 1С у ВСЕХ пользователей. Все несохранённые документы пропадут. На общем сервере всегда добавляйте фильтр по пользователю или работайте по PID.
PowerShell
Посмотреть процессы 1С с владельцем и временем запуска:
Get-Process -Name 1cv8* -IncludeUserName | Select-Object Id, ProcessName, UserName, StartTime
Ключ -IncludeUserName работает только в PowerShell, запущенном от имени администратора.
Завершить конкретный процесс:
Stop-Process -Id 5124 -Force
Завершить все процессы тонкого клиента :
Get-Process -Name 1cv8c | Stop-Process -Force
Если процесс не завершается даже с /F и -Force, значит, он ждёт ответа от драйвера или сетевого диска (часто — файловой базы на недоступной сетевой папке). Помогает только восстановление сети либо выход пользователя из системы и повторный вход.
Удаление зависшего сеанса в консоли администрирования серверов 1С
В клиент-серверном режиме закрытие клиента не всегда завершает сеанс на сервере. Симптомы: пользователь не может войти повторно («превышено количество лицензий»), документ остаётся заблокированным, в списке активных пользователей висит человек, который давно ушёл домой.
Через консоль кластера
- Откройте «Администрирование серверов 1С Предприятия» (консоль MMC) на сервере или на компьютере администратора.
- Раскройте:
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - Найдите сеанс по пользователю, компьютеру и времени начала.
- Правый клик по сеансу → «Удалить».
Если консоль не открывается со словами, что оснастка не найдена или не может быть создана, перерегистрируйте библиотеку консоли от имени администратора. Путь зависит от версии платформы:
regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\radmin.dll"
Номер версии в пути замените на установленный у вас — он должен совпадать с версией сервера 1С.
Через утилиту rac
Если консоли MMC нет (например, сервер на Linux), используйте rac. Ей нужен запущенный сервер администрирования ras (по умолчанию порт 1545).
rac cluster list
rac session list --cluster=<uuid кластера>
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>
Если на кластере задан администратор, добавьте параметры авторизации; их точный вид смотрите в rac help session.
Удаление сеанса — то же принудительное закрытие, только со стороны сервера. Пользователь потеряет несохранённые данные. А вот перезапуск рабочего процесса rphost или службы «Агент сервера 1С:Предприятия» оборвёт сеансы всех, кто работает в базах этого сервера. Его делают только вне рабочего времени или после предупреждения всех пользователей.
В файловой базе
Сервера и сеансов в консоли нет. Сеанс живёт, пока жив процесс клиента на чьём-то компьютере. Если базу «держит» неизвестно кто, найдите в папке базы файл блокировки с расширением .1CL. Если Windows не даёт удалить этот файл, значит, процесс 1С с этой базой где-то работает: ищите его на компьютерах пользователей или на терминальном сервере. Если файл удаляется, а база всё равно не открывается, проблема не в сеансах.
Как снять блокировки данных после принудительного закрытия 1С
После аварийного закрытия коллеги иногда видят сообщения вида «Объект заблокирован» или ошибку конфликта блокировок при проведении. Причина одна: блокировку держит сеанс, который ещё не завершён.
Два вида блокировок, которые путают:
- 🔒 Блокировка объекта при редактировании. Пользователь открыл документ и начал менять — другие не могут его записать. Снимается сама, когда закрывается форма или завершается сеанс.
- ⛓️ Блокировки данных в транзакции. Ставятся на время записи и проведения. Снимаются при завершении или откате транзакции, в том числе при обрыве сеанса.
Отдельной кнопки «снять блокировку объекта» в режиме Предприятия нет. Блокировку снимает завершение сеанса, который её держит. Порядок:
- Найдите, кто держит. В БП 3.0, ЗУП 3.1 и УТ 11 откройте
Администрирование → Обслуживаниеи откройте список активных пользователей. В клиент-серверной базе то же видно в консоли кластера: узел «Блокировки» внутри информационной базы показывает, какой сеанс что держит. - Если сеанс принадлежит зависшему клиенту — завершите его. В списке активных пользователей есть команда завершения сеанса (нужны права администратора), в консоли кластера — «Удалить».
- Попросите пользователя повторить операцию.
Когда нужно выгнать из базы всех, например перед обновлением, используйте в том же разделе Обслуживание установку блокировки работы пользователей. Она запрещает новые входы и завершает текущие сеансы в заданное время, а пользователи заранее получают предупреждение.
1cv8c.exe в диспетчере задач. В клиент-серверной базе проверьте, что сеанс исчез из консоли кластера.rac session terminate.Журнал регистрации: почему 1С зависла
Если программу приходится закрывать принудительно чаще раза в неделю, причину стоит искать, а не терпеть.
Журнал открывается из пользовательского режима: Администрирование → Обслуживание → Журнал регистрации. В Конфигураторе: Администрирование → Журнал регистрации.
Что смотреть:
- Установите отбор по пользователю, у которого зависло, и по периоду: за 15–20 минут до сбоя.
- Найдите последнее событие перед зависанием. Обычно это начало какой-то операции: проведение документа, формирование отчёта, обмен данными.
- Проверьте, есть ли событие
Сеанс. Завершение. При нормальном выходе оно есть. При принудительном закрытии — сеанс просто обрывается, следующего события нет. - Поищите события с уровнем «Ошибка» в тот же отрезок времени у других пользователей. Если в один момент ошибка у пятерых — проблема общая: сервер, сеть, СУБД.
Как читать результат:
| Что видно в журнале | Вероятная причина |
|---|---|
| Зависание всегда на одном отчёте или обработке | Тяжёлый запрос: слишком большой период, нет отборов |
| Зависание на проведении одного вида документов | Конфликт блокировок с другим пользователем или регламентным заданием |
| Ошибки у многих пользователей в одно время | Сеть, сервер 1С, СУБД, нехватка места на диске |
| Сеанс завис сразу после входа | Повреждённый кэш или пользовательские настройки |
Если журнал не даёт ответа, программисту понадобится технологический журнал. Он включается файлом logcfg.xml в каталоге conf платформы и пишет подробности о запросах, блокировках и исключениях. Включайте его на короткое время: при подробном отборе он быстро занимает гигабайты.
Как сделать, чтобы 1С не зависала
Принудительное закрытие — лекарство. Профилактика дешевле.
Очистите кэш клиента. Самый частый источник зависаний при входе и открытии форм. Быстрый способ — запустить базу с параметром /ClearCache: в окне запуска выберите базу → «Изменить» → на последнем шаге в поле «Дополнительные параметры запуска» впишите /ClearCache. После одного входа параметр стоит убрать. Ручной способ — закрыть все 1С и удалить папки с длинными именами из букв и цифр в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.
Обновите платформу. Часть зависаний — ошибки конкретной сборки платформы, их исправляют в следующих. Номер версии клиента в клиент-серверной базе должен совпадать с версией сервера.
Добавьте исключения в антивирус. Антивирус, проверяющий каждое обращение к файлам базы и кэша, заметно тормозит 1С. Исключают папку файловой базы, каталоги кэша и процессы 1С. Делает это администратор, по правилам безопасности компании.
Регламентные операции. Для клиент-серверной базы на MS SQL или PostgreSQL — обновление статистики и обслуживание индексов по расписанию. Для файловой — тестирование и исправление базы. Сначала резервная копия, затем:
"C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe"
Утилита chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD. База на время проверки должна быть закрыта у всех.
Разнесите тяжёлые задачи. Закрытие месяца, перепроведение за год, большие обмены — вечером или в выходные. Отчёты за несколько лет формируйте с отборами.
Файловую базу не держите на медленном сетевом ресурсе. Если с ней работают больше 5–7 человек одновременно, зависания из-за ожидания блокировок станут нормой. Решение — терминальный сервер или переход на клиент-серверный вариант.