Зависла 1С: снимаем процесс, чистим сеанс и ищем причину

· 10 мин

Содержание

Чтобы принудительно закрыть зависшую 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

Это самый быстрый способ и для пользователя, и для администратора терминального сервера.

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

Какие процессы 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. Откройте «Администрирование серверов 1С Предприятия» (консоль MMC) на сервере или на компьютере администратора.
  2. Раскройте: Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы.
  3. Найдите сеанс по пользователю, компьютеру и времени начала.
  4. Правый клик по сеансу → «Удалить».

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

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С

После аварийного закрытия коллеги иногда видят сообщения вида «Объект заблокирован» или ошибку конфликта блокировок при проведении. Причина одна: блокировку держит сеанс, который ещё не завершён.

Два вида блокировок, которые путают:

  • 🔒 Блокировка объекта при редактировании. Пользователь открыл документ и начал менять — другие не могут его записать. Снимается сама, когда закрывается форма или завершается сеанс.
  • ⛓️ Блокировки данных в транзакции. Ставятся на время записи и проведения. Снимаются при завершении или откате транзакции, в том числе при обрыве сеанса.

Отдельной кнопки «снять блокировку объекта» в режиме Предприятия нет. Блокировку снимает завершение сеанса, который её держит. Порядок:

  1. Найдите, кто держит. В БП 3.0, ЗУП 3.1 и УТ 11 откройте Администрирование → Обслуживание и откройте список активных пользователей. В клиент-серверной базе то же видно в консоли кластера: узел «Блокировки» внутри информационной базы показывает, какой сеанс что держит.
  2. Если сеанс принадлежит зависшему клиенту — завершите его. В списке активных пользователей есть команда завершения сеанса (нужны права администратора), в консоли кластера — «Удалить».
  3. Попросите пользователя повторить операцию.

Когда нужно выгнать из базы всех, например перед обновлением, используйте в том же разделе Обслуживание установку блокировки работы пользователей. Она запрещает новые входы и завершает текущие сеансы в заданное время, а пользователи заранее получают предупреждение.

Что у вас сейчас?

Журнал регистрации: почему 1С зависла

Если программу приходится закрывать принудительно чаще раза в неделю, причину стоит искать, а не терпеть.

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

Что смотреть:

  1. Установите отбор по пользователю, у которого зависло, и по периоду: за 15–20 минут до сбоя.
  2. Найдите последнее событие перед зависанием. Обычно это начало какой-то операции: проведение документа, формирование отчёта, обмен данными.
  3. Проверьте, есть ли событие Сеанс. Завершение. При нормальном выходе оно есть. При принудительном закрытии — сеанс просто обрывается, следующего события нет.
  4. Поищите события с уровнем «Ошибка» в тот же отрезок времени у других пользователей. Если в один момент ошибка у пятерых — проблема общая: сервер, сеть, СУБД.

Как читать результат:

Что видно в журналеВероятная причина
Зависание всегда на одном отчёте или обработкеТяжёлый запрос: слишком большой период, нет отборов
Зависание на проведении одного вида документовКонфликт блокировок с другим пользователем или регламентным заданием
Ошибки у многих пользователей в одно времяСеть, сервер 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 человек одновременно, зависания из-за ожидания блокировок станут нормой. Решение — терминальный сервер или переход на клиент-серверный вариант.

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

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

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