Принудительное завершение 1С: процессы клиента, сеансы на сервере, кэш и файл базы

· 10 мин

Содержание

Чтобы принудительно закрыть зависшую 1С, откройте Диспетчер задач (Ctrl+Shift+Esc), на вкладке «Подробности» найдите 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор) и нажмите «Снять задачу». Из командной строки то же самое делает taskkill /F /IM 1cv8c.exe. Для файловой базы этого обычно достаточно: процесс умирает, блокировка снимается.

В клиент-серверном варианте закрытое окно ещё не значит, что сеанс исчез. Он может висеть на сервере, держать лицензию и блокировки данных. Тогда сеанс удаляют в консоли администрирования кластера, а в крайнем случае завершают рабочий процесс rphost. Дальше — порядок действий от самого мягкого к самому жёсткому.

1. Прежде чем убивать процесс: подождите и попробуйте прервать операцию

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

Проверьте три вещи:

  • 🔍 Нагрузка на процессор и диск. Если 1cv8c.exe или rphost.exe грузит процессор или диск — программа работает, а не стоит.
  • ⏳ Что запускали последним. Обновление конфигурации, выгрузку базы и реструктуризацию прерывать нельзя: это верный путь к повреждённой базе.
  • ⌨️ Комбинация Ctrl+Break. Она прерывает выполнение встроенного языка: отчёт, обработку, долгий запрос. Платформа спросит, прервать ли выполнение. Это мягче, чем снимать задачу.

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

2. Как закрыть 1С принудительно через Диспетчер задач и taskkill

Этот способ работает на компьютере пользователя и на терминальном сервере. Процессы клиента:

ПроцессЧто это
1cv8c.exeтонкий клиент — обычная работа пользователей
1cv8.exeтолстый клиент и Конфигуратор
1cestart.exeокно выбора базы (стартер)

Пошагово:

  1. Нажмите Ctrl+Shift+Esc.
  2. Перейдите на вкладку «Подробности» — там видны имена исполняемых файлов, а не только заголовки окон.
  3. Добавьте столбец «Имя пользователя» (правый клик по заголовку таблицы → «Выбрать столбцы»). На терминальном сервере без него легко закрыть чужую 1С.
  4. Выделите нужный процесс и нажмите «Снять задачу».

Из командной строки, запущенной от имени администратора:

:: закрыть все тонкие клиенты текущего пользователя
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq %USERNAME%"

:: закрыть конкретный процесс по PID
taskkill /F /PID 12345

:: посмотреть, кто держит 1С на терминальном сервере
tasklist /V /FI "IMAGENAME eq 1cv8c.exe"

Без фильтра USERNAME команда taskkill /F /IM 1cv8c.exe на терминальном сервере закроет 1С у всех пользователей. Несохранённые документы у них пропадут.

После снятия задачи подождите 10–20 секунд и запустите базу снова. Если 1С пишет, что база занята или вход запрещён, переходите к следующим разделам.

3. Зависший сеанс в консоли администрирования серверов 1С

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

Как удалить сеанс:

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

Рядом есть узел «Блокировки». Из него видно, какой сеанс держит управляемую блокировку и на каком объекте. Удалить блокировку напрямую нельзя — она снимается вместе с сеансом-владельцем.

Удаление сеанса обрывает работу пользователя без сохранения. Транзакция, в которой он был, откатится. Предупредите человека, если он ещё за компьютером.

Если консоль не открывается

Типичная причина после обновления платформы — оснастка привязана к старой версии. Помогает перерегистрация библиотеки radmin.dll той версии, что установлена сейчас:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"

Номер версии подставьте свой — это имя папки в C:\Program Files\1cv8\.

То же из командной строки через rac

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

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

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

4. Когда сеанс не удаляется: завершение rphost и перезапуск службы

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

Процессы сервера 1С:

  • 🧩 ragent.exe — агент сервера, принимает подключения (порт 1540);
  • 🗂 rmngr.exe — менеджер кластера (порт 1541);
  • ⚙️ rphost.exe — рабочие процессы, в них выполняется код пользователей.

Порядок действий:

  1. В консоли откройте узел «Рабочие процессы». У каждого процесса виден PID и нагрузка.
  2. Определите процесс, в котором висит проблемный сеанс: у сеанса в списке есть колонка с рабочим процессом.
  3. Завершите его: taskkill /F /PID <PID rphost>.
  4. Агент сам запустит новый rphost через несколько секунд.

Вместе с rphost оборвутся все сеансы, которые в нём работали, а не только зависший. Один рабочий процесс обслуживает многих пользователей. Делайте это после предупреждения в общий чат или в нерабочее время.

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

Блокировки на стороне СУБД

Если 1С ждёт ответа от MS SQL, в консоли кластера всё выглядит спокойно, а пользователи висят. Проверьте блокировки в самой СУБД:

EXEC sp_who2;
-- столбец BlkBy показывает, каким SPID заблокирован процесс

Цепочка блокировок обычно начинается с одного сеанса 1С с открытой транзакцией. Найдите его по хосту и программе и удалите в консоли кластера. Команду KILL в SQL используйте только если сеанс 1С уже удалён, а соединение в СУБД осталось.

5. Файловая база: лишний файл блокировки и проверка chdbfl

У файловой базы нет сервера и консоли. Пока кто-то работает в базе, в её каталоге лежит файл 1Cv8.1CL. После аварийного завершения он иногда остаётся, и 1С считает, что база занята.

Что делать:

  1. Убедитесь, что никто не работает с базой. На сетевой папке проверьте открытые файлы: compmgmt.msc → Общие папки → Открытые файлы на компьютере, где лежит база.
  2. Закройте там все открытые 1Cv8.1CD, если сеансов на самом деле нет.
  3. Удалите 1Cv8.1CL из каталога базы.
  4. Запустите 1С.

Файл 1Cv8.1CL удаляйте только когда в базе точно никого нет. Иначе два пользователя будут писать в файл без согласования, и база пострадает.

chdbfl.exe — если база перестала открываться

Жёсткое завершение посреди записи может повредить файл 1Cv8.1CD. Признаки: ошибки при открытии, «Файл базы данных поврежден», падение на определённых документах. Для этого в каталоге bin платформы есть утилита chdbfl.exe.

  1. Скопируйте каталог базы целиком в другое место — это резервная копия.
  2. Закройте все сеансы.
  3. Запустите C:\Program Files\1cv8\8.3.xx.xxxx\bin\chdbfl.exe.
  4. Укажите путь к 1Cv8.1CD, сначала выполните проверку без галочки «Исправлять обнаруженные ошибки».
  5. Если ошибки найдены — повторите с галочкой.

chdbfl проверяет физическую целостность файла, а не логику данных. Сеансы и блокировки она не «сбрасывает». После неё стоит запустить в Конфигураторе Администрирование → Тестирование и исправление — это режим, которому нужен монопольный доступ.

6. Очистка кэша 1С, если после принудительного закрытия база не стартует

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

Через параметр запуска

  1. В окне выбора базы выделите её и нажмите «Изменить».
  2. Дойдите до последней страницы, в поле «Дополнительные параметры запуска» впишите /ClearCache.
  3. Запустите базу один раз, затем параметр уберите.

Вручную

Закройте 1С полностью и удалите содержимое каталогов кэша:

:: папки с длинными GUID-именами внутри — это кэш баз
rd /S /Q "%APPDATA%\1C\1cv8"
rd /S /Q "%LOCALAPPDATA%\1C\1cv8"

Список баз хранится отдельно — в %APPDATA%\1C\1CEStarts\ibases.v8i, команды выше его не трогают. Пользовательские настройки форм в клиент-серверной базе лежат в самой базе и тоже сохранятся.

Серверный кэш

Если зависания повторяются у всех пользователей одной клиент-серверной базы, чистят кэш сеансовых данных сервера:

  1. Предупредите пользователей и остановите службу агента сервера 1С.
  2. Откройте C:\Program Files\1cv8\srvinfo\reg_1541\ (путь для установки службы по умолчанию).
  3. Удалите папки snccntx*.
  4. Запустите службу.

Остальное содержимое srvinfo (файлы реестра кластера 1CV8Clst.lst, каталоги баз) не трогайте: без него кластер забудет зарегистрированные базы.

Диагностика: выберите симптом

7. Почему зависает 1С: диагностика через технологический журнал

Если зависания повторяются, снимать задачу каждый раз — не решение. Нужно понять, что именно ждёт программа. Для этого включают технологический журнал (ТЖ).

Настройки ТЖ лежат в файле logcfg.xml в каталоге conf платформы, например C:\Program Files\1cv8\conf\logcfg.xml. На сервере файл кладут на рабочий сервер. Платформа перечитывает его без перезапуска, через минуту.

Пример для поиска причин зависаний:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_TJ\locks" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="TTIMEOUT"/>
    </event>
    <event>
      <eq property="name" value="TDEADLOCK"/>
    </event>
    <event>
      <eq property="name" value="TLOCK"/>
    </event>
    <property name="all"/>
  </log>
</config>

Что искать в логах:

СобытиеЧто означает
EXCPисключения платформы — аварии и ошибки
TTIMEOUTсеанс не дождался блокировки и вышел по таймауту
TDEADLOCKвзаимоблокировка: два сеанса ждут друг друга
TLOCKустановка управляемых блокировок — кто и что заблокировал

В записи TTIMEOUT указан сеанс-виновник — тот, чью блокировку не дождались. По нему видно пользователя и контекст: какой документ или обработка держит данные. history="24" хранит журнал 24 часа.

ТЖ с property name="all" быстро растёт — гигабайты за день на нагруженном сервере. Кладите его на диск с запасом места и выключайте после сбора данных: удалите или переименуйте logcfg.xml.

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

Часть зависаний лечится настройками, а не снятием задачи.

Таймаут блокировки данных. В Конфигураторе: Администрирование → Параметры информационной базы → Время ожидания блокировки данных. По умолчанию 20 секунд. Сеанс, который ждёт дольше, получит ошибку и отпустит пользователя вместо вечного ожидания. Увеличивать это значение, чтобы «не было ошибок», — плохая идея: пользователи начнут висеть дольше.

Перезапуск рабочих процессов. В свойствах кластера в консоли администрирования есть «Интервал перезапуска» (в секундах). Значение 86400 перезапускает рабочие процессы раз в сутки — так снимается накопленная утечка памяти. Там же «Допустимый объём памяти рабочих процессов» и «Интервал превышения допустимого объёма памяти»: при превышении процесс перезапускается мягко, сеансы переходят в новый.

Блокировка входа на время обслуживания. Перед регламентными работами включайте блокировку начала сеансов. В типовых конфигурациях на БСП это обработка «Блокировка работы пользователей» в разделе Администрирование. Для клиент-серверной базы то же есть в свойствах базы в консоли кластера: «Блокировка начала сеансов включена» и код разрешения. Администратор входит с параметром /UC<код>.

Ещё несколько привычек, которые реально снижают число зависаний:

  • 🕘 Тяжёлые операции (закрытие месяца, перепроведение, выгрузки) — вечером или в выходные.
  • 🔁 Регламентные задания обменов разносите по времени, чтобы они не шли параллельно с массовой работой.
  • 📴 На терминальном сервере настройте завершение отключённых сеансов Windows: брошенные «на ночь» окна 1С держат лицензии и блокировки.
  • 💾 Файловую базу держите на локальном SSD сервера, а не на сетевой папке NAS: сетевые задержки — частый источник «замираний».
Перед тем как снять задачу у пользователя
Выполнено: 0 / 5

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

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