База 1С не отвечает: аварийное завершение сеанса, снятие блокировок и запуск заново
Содержание
Если зависла 1С, сначала выждите 5–10 минут и посмотрите в Диспетчере задач, нагружает ли процесс 1cv8c.exe процессор или диск. Есть нагрузка — программа работает, и её лучше не трогать. Нагрузки нет, окно «Не отвечает» — завершайте процесс, затем удаляйте зависший сеанс в консоли кластера (клиент-серверная база
) или проверяйте файл блокировки 1Cv8.1CL (файловая база).
Без потерь в этом сценарии означает простую вещь: проведённые и записанные документы останутся на месте. Всё, что выполнялось в незавершённой транзакции, платформа откатит. Пропадёт только то, что вы не успели записать: открытая форма документа, несохранённый отчёт, недогруженный обмен.
Сначала диагностика: зависла база 1С или просто долго думает
Половина «зависаний» — это длинные операции: закрытие месяца , перепроведение за квартал, загрузка банковской выписки на тысячу строк, обновление конфигурации . Прерывать их на середине бессмысленно: потом всё равно придётся запускать заново.
Проверьте три признака:
- 🔍 Нагрузка процесса. Откройте Диспетчер задач (
Ctrl+Shift+Esc), вкладка «Подробности». Найдите1cv8c.exe(тонкий клиент) или1cv8.exe(толстый клиент и Конфигуратор). Если процессор или диск у процесса заметно больше нуля и цифры меняются — идёт работа. - ⏳ Окно длительной операции. В интерфейсе «Такси» долгие действия показывают индикатор с процентом или надписью об ожидании. Пока индикатор живой — ждите.
- 👥 Зависли все или только вы. Спросите коллег. Если у всех встала одна и та же база — проблема на сервере или в блокировке данных, а не на вашем компьютере.
Типичные тексты, которые подсказывают причину:
Конфликт блокировок при выполнении транзакции— вы ждали данных, которые держит другой пользователь. Это не зависание, а очередь, и она снимается вместе с «чужим» сеансом.Ошибка совместного доступа к файлу— файловую базу держит другой процесс, часто уже закрытый у пользователя, но не завершённый.Сеанс отсутствует или некорректен— сервер уже разорвал ваш сеанс, достаточно перезапустить клиент .
| Что видно | Вероятная причина | Что делать |
|---|---|---|
| Процесс грузит процессор, индикатор движется | Длительная операция | Ждать |
| Нагрузки нет, окно «Не отвечает» больше 10 минут | Клиент завис | Завершить процесс |
| Встали все пользователи одной базы | Блокировка или проблема сервера | Консоль кластера, SQL |
| После закрытия база не открывается | Остался «висячий» сеанс или файл блокировки | Удалить сеанс или проверить 1Cv8.1CL |
Как закрыть зависшую 1С через Диспетчер задач Windows
Этот способ закрывает только клиентское приложение на вашем компьютере. Серверный сеанс он не трогает, поэтому в клиент-серверной базе нужен следующий раздел.
- Нажмите
Ctrl+Shift+Esc. - Перейдите на вкладку «Подробности».
- Найдите
1cv8c.exeили1cv8.exe. Если окон 1С открыто несколько, ориентируйтесь на процесс с состоянием «Не отвечает» на вкладке «Процессы». - Щёлкните правой кнопкой → «Снять задачу».
- Подождите 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С; если она не открывается, обычно помогает перерегистрация
radmin.dllтой же версии платформы). - Раскройте:
Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы → ваша база → Сеансы. - Найдите сеанс по колонкам «Пользователь», «Компьютер» и «Начало работы».
- Правой кнопкой → «Удалить».
💡 Определить виновника помогает соседний узел «Блокировки» той же базы: там видно, какой сеанс удерживает блокировки и на каких объектах. Удаляйте сеанс, который держит блокировки, а не того, кто их ждёт.
Из командной строки через 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. Платформа создаёт его, когда база открыта, и использует для совместного доступа. После аварийного закрытия он иногда остаётся, и программа считает базу занятой.
Порядок действий:
- Убедитесь, что в базе действительно никто не работает. Обойдите или опросите всех, кто подключается к этому каталогу, включая терминальный сервер.
- На каждом таком компьютере проверьте Диспетчер задач: не остался ли процесс
1cv8c.exeили1cv8.exe. - Если база лежит в сетевой папке, на компьютере-хранилище откройте «Управление компьютером» → «Общие папки» → «Открытые файлы». Там видно, кто держит
1Cv8.1CDили1Cv8.1CL, и файл можно закрыть. - Удалите
1Cv8.1CL. Если Windows пишет, что файл занят, значит, процесс где-то ещё живой: вернитесь к шагам 2–3. - Запустите базу.
Сделайте копию каталога базы до любых действий с файлами. Скопируйте папку целиком, пока база закрыта.
Проверка после аварийного закрытия
Если зависание закончилось снятием процесса во время записи, проверьте целостность базы.
- 🛠️ Тестирование и исправление. В Конфигураторе:
Администрирование → Тестирование и исправление. Режим требует монопольного доступа: все пользователи должны выйти. Начните с проверки логической целостности без реструктуризации. - 🧰 Утилита 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С:Предприятия 8.3» в
services.msc. - При повторяющихся сбоях после остановки службы очистите сеансовые данные: в каталоге
srvinfo\reg_1541удалите папкиsnccntx*. Файлы реестра кластера1CV8Clst.lstне трогайте. - Запустите службу и проверьте вход в базу.
Пересоздавать кластер или удалять базу из кластера ради зависания не нужно: это ломает настройки и не лечит причину.
Как предотвратить зависания: таймауты и настройки
Аварийное закрытие лечит симптом. Чтобы ситуация не повторялась каждую неделю, настройте автоматику.
Параметры информационной базы
В Конфигураторе клиент-серверной базы откройте Администрирование → Параметры информационной базы:
| Параметр | Что делает | Ориентир |
|---|---|---|
| Время ожидания блокировки данных | Сколько секунд транзакция ждёт чужую блокировку, прежде чем выдать ошибку | По умолчанию 20 с, обычно не меняют |
| Время засыпания пассивного сеанса | Через сколько секунд сеанс без связи с клиентом «засыпает» и освобождает лицензию | 300–600 с |
| Время завершения спящего сеанса | Через сколько секунд спящий сеанс удаляется сам | 3600 с и больше |
Последние два параметра решают проблему «закрыл 1С крестиком, а сеанс висит до утра».
Настройки кластера и рабочего сервера
- 🔁 Перезапуск рабочих процессов. В свойствах кластера задаются интервал перезапуска и допустимый объём памяти рабочих процессов. Процесс, перешедший порог, кластер плавно заменит новым.
- 🕐 Регламентные задания. Тяжёлые задания (обмены, загрузку курсов, полнотекстовый индекс) переносите на ночь. Временно их отключает флажок «Блокировка регламентных заданий» в свойствах базы в консоли.
- 💾 Резервное копирование. Копирование базы средствами СУБД днём, в разгар работы, — частая причина массовых «зависаний». Расписание держите ночью.
Для файловой базы
- Держите базу на локальном диске или быстром сетевом хранилище, а не на сетевом ресурсе через VPN.
- Добавьте каталог базы в исключения антивируса: проверка
1Cv8.1CDна лету замедляет каждую запись. - Когда пользователей больше 5–7, файловая база начинает регулярно упираться в блокировки. Это сигнал переходить на клиент-серверный вариант.
Частые вопросы о зависшей базе 1С
Пропадут ли документы, если снять задачу 1С в Диспетчере задач?
Почему после перезапуска пишет, что лицензии закончились?
Можно ли удалять файл 1Cv8.1CD, если база не открывается?
1Cv8.1CD — это сама база со всеми данными. Удалять можно только файл блокировки 1Cv8.1CL и только когда в базе никого нет.Помогает ли запуск с ключом /ClearCache?
/ClearCache в строке запуска сбрасывает клиентский кэш. От блокировок данных и зависшего сервера он не спасает.