База 1С не отвечает: аварийное завершение сеанса, снятие блокировок и запуск заново

· 9 мин

Содержание

Если зависла 1С, сначала выждите 5–10 минут и посмотрите в Диспетчере задач, нагружает ли процесс 1cv8c.exe процессор или диск. Есть нагрузка — программа работает, и её лучше не трогать. Нагрузки нет, окно «Не отвечает» — завершайте процесс, затем удаляйте зависший сеанс в консоли кластера (клиент-серверная база ) или проверяйте файл блокировки 1Cv8.1CL (файловая база).

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

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

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

Проверьте три признака:

  • 🔍 Нагрузка процесса. Откройте Диспетчер задач (Ctrl+Shift+Esc), вкладка «Подробности». Найдите 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор). Если процессор или диск у процесса заметно больше нуля и цифры меняются — идёт работа.
  • ⏳ Окно длительной операции. В интерфейсе «Такси» долгие действия показывают индикатор с процентом или надписью об ожидании. Пока индикатор живой — ждите.
  • 👥 Зависли все или только вы. Спросите коллег. Если у всех встала одна и та же база — проблема на сервере или в блокировке данных, а не на вашем компьютере.

Типичные тексты, которые подсказывают причину:

  • Конфликт блокировок при выполнении транзакции — вы ждали данных, которые держит другой пользователь. Это не зависание, а очередь, и она снимается вместе с «чужим» сеансом.
  • Ошибка совместного доступа к файлу — файловую базу держит другой процесс, часто уже закрытый у пользователя, но не завершённый.
  • Сеанс отсутствует или некорректен — сервер уже разорвал ваш сеанс, достаточно перезапустить клиент .
Что видноВероятная причинаЧто делать
Процесс грузит процессор, индикатор движетсяДлительная операцияЖдать
Нагрузки нет, окно «Не отвечает» больше 10 минутКлиент зависЗавершить процесс
Встали все пользователи одной базыБлокировка или проблема сервераКонсоль кластера, SQL
После закрытия база не открываетсяОстался «висячий» сеанс или файл блокировкиУдалить сеанс или проверить 1Cv8.1CL
Что у вас происходит?

Как закрыть зависшую 1С через Диспетчер задач Windows

Этот способ закрывает только клиентское приложение на вашем компьютере. Серверный сеанс он не трогает, поэтому в клиент-серверной базе нужен следующий раздел.

  1. Нажмите Ctrl+Shift+Esc.
  2. Перейдите на вкладку «Подробности».
  3. Найдите 1cv8c.exe или 1cv8.exe. Если окон 1С открыто несколько, ориентируйтесь на процесс с состоянием «Не отвечает» на вкладке «Процессы».
  4. Щёлкните правой кнопкой → «Снять задачу».
  5. Подождите 1–2 минуты и запустите 1С заново.

То же самое из командной строки — удобно, если Диспетчер задач сам тормозит:

:: Посмотреть, какие процессы 1С запущены
tasklist /FI "IMAGENAME eq 1cv8*"

:: Принудительно завершить тонкий клиент
taskkill /IM 1cv8c.exe /F

taskkill /IM закрывает все процессы с таким именем. Если у вас открыты две базы, закроются обе, и несохранённые данные пропадут во втором окне тоже. Чтобы завершить один процесс, используйте taskkill /PID <номер> /F, номер возьмите из tasklist.

Если 1С работает на терминальном сервере

Пользователь удалённого рабочего стола видит только свои процессы. Администратор на сервере открывает Диспетчер задач, вкладку «Пользователи», раскрывает нужного сотрудника и завершает его 1cv8c.exe. Чужие сеансы при этом не затрагиваются.

Закрывать процессы ragent.exe, rmngr.exe и rphost.exe здесь нельзя: это служба сервера 1С. Убив rphost.exe, вы оборвёте работу всех пользователей, которые обслуживаются этим рабочим процессом.

Сеансы клиент-серверной базы: консоль кластера и rac

После снятия задачи клиент-серверная база может ещё какое-то время считать вас подключённым. Если зависший сеанс держал блокировки, остальные пользователи продолжат стоять в очереди. Сеанс нужно удалить на сервере.

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

  1. Запустите консоль (оснастка ставится вместе с сервером 1С; если она не открывается, обычно помогает перерегистрация radmin.dll той же версии платформы).
  2. Раскройте: Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы → ваша база → Сеансы.
  3. Найдите сеанс по колонкам «Пользователь», «Компьютер» и «Начало работы».
  4. Правой кнопкой → «Удалить».

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

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

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

:: 1. Узнать идентификатор кластера
rac cluster list

:: 2. Узнать идентификатор базы
rac infobase summary list --cluster=<uuid_кластера>

:: 3. Список сеансов базы
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>

:: 4. Завершить конкретный сеанс
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>

Если на кластере задан администратор, добавьте параметры авторизации; их точные имена смотрите в rac help session.

Из конфигуратора

Администрирование → Активные пользователи в Конфигураторе показывает, кто сейчас в базе. Удобно для быстрой проверки перед обновлением, но для принудительного завершения сеанса в клиент-серверной базе надёжнее консоль кластера.

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

Файловая база 1С: файл блокировки 1Cv8.1CL и проверка данных

В каталоге файловой базы рядом с основным файлом 1Cv8.1CD лежит 1Cv8.1CL. Платформа создаёт его, когда база открыта, и использует для совместного доступа. После аварийного закрытия он иногда остаётся, и программа считает базу занятой.

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

  1. Убедитесь, что в базе действительно никто не работает. Обойдите или опросите всех, кто подключается к этому каталогу, включая терминальный сервер.
  2. На каждом таком компьютере проверьте Диспетчер задач: не остался ли процесс 1cv8c.exe или 1cv8.exe.
  3. Если база лежит в сетевой папке, на компьютере-хранилище откройте «Управление компьютером» → «Общие папки» → «Открытые файлы». Там видно, кто держит 1Cv8.1CD или 1Cv8.1CL, и файл можно закрыть.
  4. Удалите 1Cv8.1CL. Если Windows пишет, что файл занят, значит, процесс где-то ещё живой: вернитесь к шагам 2–3.
  5. Запустите базу.

Сделайте копию каталога базы до любых действий с файлами. Скопируйте папку целиком, пока база закрыта.

Проверка после аварийного закрытия

Если зависание закончилось снятием процесса во время записи, проверьте целостность базы.

  • 🛠️ Тестирование и исправление. В Конфигураторе: Администрирование → Тестирование и исправление. Режим требует монопольного доступа: все пользователи должны выйти. Начните с проверки логической целостности без реструктуризации.
  • 🧰 Утилита chdbfl.exe. Лежит в каталоге bin платформы и проверяет физическую целостность файла 1Cv8.1CD без запуска Конфигуратора. Укажите путь к файлу базы, сначала запустите проверку без галочки исправления.

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

Блокировка на уровне SQL-сервера

Бывает, что сеанс в консоли кластера удалён, а запрос на сервере СУБД продолжает выполняться и держать таблицы. Или зависание вызвал тяжёлый запрос, который не виден из 1С как ошибка. Тогда смотрят на стороне СУБД.

Microsoft SQL Server

Откройте SQL Server Management Studio, подключитесь к серверу и выполните запрос:

SELECT r.session_id,
       r.blocking_session_id,
       r.wait_type,
       r.wait_time,
       DB_NAME(r.database_id) AS db_name,
       s.host_name,
       s.program_name
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id
WHERE r.blocking_session_id <> 0;

Колонка blocking_session_id показывает, кто держит блокировку. Цепочку смотрите до конца: виновник — тот, у кого самого blocking_session_id = 0, но он есть в этой колонке у других. Ту же картину даёт «Монитор активности» в SSMS.

Завершить соединение:

KILL 57;  -- номер session_id виновника

PostgreSQL

-- Кто кого блокирует
SELECT pid, usename, client_addr, state, now() - query_start AS dlit,
       pg_blocking_pids(pid) AS blocked_by
FROM pg_stat_activity
WHERE datname = 'имя_базы';

-- Сначала пробуем отменить запрос
SELECT pg_cancel_backend(12345);

-- Если не помогло — завершить соединение
SELECT pg_terminate_backend(12345);

Завершение соединения на уровне СУБД откатывает транзакцию. Если запрос писал большой объём данных, откат может идти столько же, сколько шла запись, и всё это время таблицы будут заняты. Выбирайте нерабочее время, если операция не срочная, и не завершайте процессы самого сервера СУБД.

Если не помогло: перезапуск службы сервера 1С

Крайняя мера, когда консоль не отвечает, сеансы не удаляются, а rphost.exe растёт в памяти.

  1. Предупредите всех: перезапуск оборвёт работу каждого пользователя на этом сервере.
  2. Остановите службу «Агент сервера 1С:Предприятия 8.3» в services.msc.
  3. При повторяющихся сбоях после остановки службы очистите сеансовые данные: в каталоге srvinfo\reg_1541 удалите папки snccntx*. Файлы реестра кластера 1CV8Clst.lst не трогайте.
  4. Запустите службу и проверьте вход в базу.

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

Как предотвратить зависания: таймауты и настройки

Аварийное закрытие лечит симптом. Чтобы ситуация не повторялась каждую неделю, настройте автоматику.

Параметры информационной базы

В Конфигураторе клиент-серверной базы откройте Администрирование → Параметры информационной базы:

ПараметрЧто делаетОриентир
Время ожидания блокировки данныхСколько секунд транзакция ждёт чужую блокировку, прежде чем выдать ошибкуПо умолчанию 20 с, обычно не меняют
Время засыпания пассивного сеансаЧерез сколько секунд сеанс без связи с клиентом «засыпает» и освобождает лицензию300–600 с
Время завершения спящего сеансаЧерез сколько секунд спящий сеанс удаляется сам3600 с и больше

Последние два параметра решают проблему «закрыл 1С крестиком, а сеанс висит до утра».

Настройки кластера и рабочего сервера

  • 🔁 Перезапуск рабочих процессов. В свойствах кластера задаются интервал перезапуска и допустимый объём памяти рабочих процессов. Процесс, перешедший порог, кластер плавно заменит новым.
  • 🕐 Регламентные задания. Тяжёлые задания (обмены, загрузку курсов, полнотекстовый индекс) переносите на ночь. Временно их отключает флажок «Блокировка регламентных заданий» в свойствах базы в консоли.
  • 💾 Резервное копирование. Копирование базы средствами СУБД днём, в разгар работы, — частая причина массовых «зависаний». Расписание держите ночью.

Для файловой базы

  • Держите базу на локальном диске или быстром сетевом хранилище, а не на сетевом ресурсе через VPN.
  • Добавьте каталог базы в исключения антивируса: проверка 1Cv8.1CD на лету замедляет каждую запись.
  • Когда пользователей больше 5–7, файловая база начинает регулярно упираться в блокировки. Это сигнал переходить на клиент-серверный вариант.

Частые вопросы о зависшей базе 1С

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