Программа 1С перестала отвечать: прерываем операцию, снимаем зависший сеанс и блокировки
Содержание
Если 1С зависла на долгой операции, сначала нажмите Ctrl+Break: платформа предложит прервать выполнение, и транзакция откатится без потерь. Не помогло за 5–10 минут — снимите процесс 1cv8.exe или 1cv8c.exe в диспетчере задач (файловая база) либо удалите сеанс в консоли администрирования сервера (клиент-серверная). Если зависли сразу несколько пользователей, ищите блокировку: её держит чей-то сеанс или соединение с СУБД.
Действуйте от безопасного к жёсткому. Отменить уже записанное действие кнопкой «Назад» в 1С нельзя: прерывается только то, что ещё выполняется. Всё, что успело записаться, отменяется штатно — отменой проведения или пометкой на удаление.
С чего начать, если 1С зависла
Первые две минуты решают, придётся ли потом восстанавливать базу. Не щёлкайте по окну десятки раз и не перезагружайте компьютер сразу.
Убедитесь, что программа действительно висит
Откройте диспетчер задач (Ctrl+Shift+Esc) и найдите процесс клиента:
- 🖥️
1cv8.exe— толстый клиент и Конфигуратор; - 💻
1cv8c.exe— тонкий клиент; - 📊 загрузка процессора и диска выше нуля — программа работает, просто долго.
Если процесс грузит процессор или диск, это не зависание, а долгая операция: закрытие месяца
, перепроведение, выгрузка .dt, обновление конфигурации
. Её лучше дождаться. Если счётчики стоят на нуле несколько минут, а окно помечено «Не отвечает», — переходите к прерыванию.
Прервите операцию штатно
- Нажмите
Ctrl+Break(на ноутбуках без клавиши Break —Ctrl+Fn+BилиCtrl+Pause, зависит от модели). - На вопрос о прерывании ответьте «Да».
- Подождите: откат большой транзакции занимает столько же времени, сколько она выполнялась.
Сочетание срабатывает, когда код выполняется на клиенте или обработка проверяет прерывание пользователем. Долгий вызов сервера прерывается не всегда — тогда переходите к снятию процесса или сеанса.
В открытом поле ввода Ctrl+Z отменяет ввод текста. Для документа это не работает: проведённый документ отменяют командой «Отмена проведения» в форме или списке, лишний элемент — пометкой на удаление.
Решите, что делать с данными
Прерванная или оборванная транзакция в 1С откатывается целиком. Документ, который проводился в момент зависания, останется в состоянии до начала проведения. Проверьте его после восстановления работы и проведите заново.
Как снять зависшую 1С в файловом режиме
В файловой базе нет консоли сеансов: каждый пользователь открывает файл 1Cv8.1CD напрямую. Снять зависание — значит закрыть процесс, который держит файл.
Снятие процесса на своём компьютере
- В диспетчере задач выделите
1cv8.exeили1cv8c.exe. - Нажмите «Снять задачу».
- Запустите 1С заново и проверьте последний документ.
Снятие процесса во время записи — единственный сценарий, при котором файловая база может повредиться. Если зависла запись, а не отчёт, сначала сделайте копию папки базы — при закрытой программе у всех пользователей.
Если база лежит на сетевой папке
Бывает, процесс уже снят, а база не открывается: ошибка про то, что файл занят, или монопольный режим недоступен. Файловый сервер ещё держит файл открытым от имени «мёртвого» подключения.
На компьютере, где лежит база:
- Нажмите
Win+R, введитеcompmgmt.msc. - Откройте
Служебные программы → Общие папки → Открытые файлы. - Найдите
1Cv8.1CDи закройте его для нужного пользователя.
То же из командной строки администратора:
openfiles /query /fo table | findstr /i 1Cv8.1CD
Закрытие файла обрывает работу этого пользователя в базе. Убедитесь, что закрываете именно зависшее подключение, а не коллегу, который сейчас проводит документы.
Проверка базы после аварийного закрытия
Если после снятия процесса база ругается на ошибки или открывается с предупреждением, проверьте её:
- 🔧 Конфигуратор →
Администрирование → Тестирование и исправление— логическая проверка. Нужен монопольный доступ: все пользователи должны выйти. - 🧰 утилита
chdbfl.exeиз каталогаbinплатформы — физическая проверка файла1Cv8.1CDпри закрытой базе.
Перед любым исправлением сделайте копию папки базы. Режим исправления может удалить битые ссылки — потом их уже не вернуть.
Зависшие сеансы на сервере 1С:Предприятия
В клиент-серверной базе закрыть окно на своём компьютере недостаточно. Сеанс на сервере может остаться и продолжить держать блокировки.
Через консоль администрирования серверов
- Откройте «Администрирование серверов 1С Предприятия».
- Разверните
Кластер → Информационные базы → <база> → Сеансы. - Отсортируйте по колонке пользователя или времени начала. Найдите зависший сеанс.
- Правой кнопкой → «Удалить».
Если удалённый сеанс сразу появляется снова или не уходит, посмотрите ветку «Соединения» той же базы и разорвите соединение зависшего клиента.
Через утилиту rac
Если консоли нет под рукой, то же делается командной строкой. Нужна запущенная служба ras (по умолчанию порт 1545):
rac cluster list
rac session list --cluster=<id_кластера>
rac session terminate --cluster=<id_кластера> --session=<id_сеанса>
Остальные параметры смотрите в справке rac help session.
Если не уходит весь рабочий процесс
Когда зависают все пользователи одного рабочего сервера, а процесс rphost.exe занял память или процессор, его можно завершить через консоль (Кластер → Рабочие процессы) или диспетчер задач.
Завершение rphost обрывает все сеансы, которые на нём работают, не только зависший. Перезапуск службы «Агент сервера 1С:Предприятия 8.3» обрывает вообще всех. Делайте это после предупреждения пользователей или вне рабочего времени.
Если в базу никого не пускает
Сообщение Начало сеанса с информационной базой запрещено — это не зависание, а включённая блокировка. Её снимают:
- в консоли: свойства информационной базы → снять флажок «Блокировка начала сеансов включена»;
- в типовых конфигурациях — в разделе
Администрирование → Обслуживание, пункт блокировки работы пользователей. Его ставят перед обновлением и иногда забывают выключить.
Блокировки в СУБД: кто держит данные
Классический симптом: у одного пользователя «висит» проведение, у остальных через 20 секунд вылетает ошибка Конфликт блокировок при выполнении транзакции: Превышено максимальное время ожидания предоставления блокировки. Виновник — транзакция, которая держит записи и не завершается.
Сначала ищите её в консоли сервера 1С: сеанс с самым долгим временем вызова или большим числом блокировок. Если 1С не показывает виновника, смотрите на уровне СУБД.
MS SQL Server
-- кто кого блокирует
SELECT session_id, blocking_session_id, wait_type, wait_time,
DB_NAME(database_id) AS db, command
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
-- быстрый обзор: колонка BlkBy
EXEC sp_who2;
В колонке blocking_session_id — номер сеанса-виновника. Его хост и программу видно в sp_who2. Завершают командой KILL <номер>.
PostgreSQL
SELECT pid, pg_blocking_pids(pid) AS blocked_by, state,
now() - xact_start AS duration, left(query, 80) AS query
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;
-- сначала мягко отменить запрос
SELECT pg_cancel_backend(<pid>);
-- если не помогло - разорвать соединение
SELECT pg_terminate_backend(<pid>);
Разрыв соединения в СУБД откатывает транзакцию, а сеанс 1С этого пользователя получит ошибку. Не завершайте соединения, у которых в колонке программы указан агент резервного копирования или задание обслуживания, — сорвёте бэкап.
| Способ | Когда применять | Что потеряется |
|---|---|---|
Ctrl+Break | операция на клиенте, окно отвечает на клавиши | только прерванная операция |
Снять 1cv8.exe / 1cv8c.exe | файловая база, окно «Не отвечает» | несохранённые данные пользователя |
Удалить сеанс в консоли или rac | серверная база, сеанс держит блокировку | транзакция одного пользователя |
KILL / pg_terminate_backend | виновника не видно в 1С | транзакция одного соединения |
Завершить rphost, перезапустить агент | завис весь рабочий процесс | работа всех пользователей процесса или сервера |
Журналы: почему 1С зависла
Сняли зависание — разберитесь, откуда оно. Иначе завтра повторится в то же время.
Журнал регистрации
Открывается в пользовательском режиме через Администрирование → Обслуживание или в Конфигураторе: Администрирование → Журнал регистрации.
Что искать:
- 🕒 события за 10–15 минут до зависания — кто что проводил или выгружал;
- ❌ события с уровнем «Ошибка» — аварийные завершения сеансов, ошибки транзакций;
- 🔁 регламентные задания, которые стартовали в момент зависания: обмен, загрузка курсов, обновление полнотекстового индекса.
Технологический журнал
Журнал регистрации не показывает, на каком запросе стояла база. Для этого включают технологический журнал: файл logcfg.xml в каталоге conf платформы (например, C:\Program Files\1cv8\conf\). Платформа подхватывает его без перезапуска.
Минимальная настройка для поиска блокировок:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\1C_TechLog" history="24">
<event><eq property="name" value="TLOCK"/></event>
<event><eq property="name" value="TTIMEOUT"/></event>
<event><eq property="name" value="TDEADLOCK"/></event>
<event><eq property="name" value="EXCP"/></event>
<property name="all"/>
</log>
</config>
TLOCK— установка управляемых блокировок;TTIMEOUT— превышение времени ожидания: в событии видно, чей сеанс мешал;TDEADLOCK— взаимоблокировка двух транзакций;EXCP— исключения, в том числе аварийные завершения процессов.
Технологический журнал быстро растёт: на загруженном сервере — гигабайты за час. Пишите его на отдельный диск, у пользователя службы 1С должны быть права на запись в папку. После диагностики удалите logcfg.xml или уберите из него события.
Как не допустить повторного зависания 1С
Таймауты и параметры базы
- ⏱️ Время ожидания блокировки данных. В Конфигураторе:
Администрирование → Параметры информационной базы. По умолчанию 20 секунд. Увеличивать его — не лечение: пользователи просто дольше ждут перед ошибкой. Меняют только когда тяжёлые операции законно идут дольше. - 🧹 Проблемные процессы. В свойствах кластера есть флажок принудительного завершения проблемных процессов и лимит памяти рабочих процессов. Сервер сам перезапустит процесс, который «распух», вместо того чтобы висеть всем.
- 🌙 Регламентные задания. Тяжёлые задания — обновление полнотекстового индекса, обмены, пересчёт итогов — переносите на ночь.
Обслуживание и окружение
- 🗄️ на MS SQL и PostgreSQL — регулярное обновление статистики и обслуживание индексов: устаревшая статистика даёт медленные планы запросов, а с ними долгие транзакции;
- 🛡️ исключения в антивирусе для папки файловой базы, каталога кэша клиента и каталога
srvinfoсервера; - 💾 в файловом режиме — не больше 3–5 одновременных активных пользователей; если больше — переходите на клиент-серверный вариант;
- 🔄 при странных зависаниях клиента — запуск с ключом
/ClearCacheили очистка кэша в окне запуска.
Порядок работы пользователей
Закрытие месяца, групповое перепроведение и выгрузку .dt запускайте в нерабочее время. Если это невозможно, хотя бы предупредите коллег: пока идёт перепроведение за квартал, проводить документы того же периода бесполезно — они встанут в очередь блокировок.
Частые вопросы о зависании 1С
Можно ли отменить последнее действие в 1С, как в Word?
Ctrl+Z или закрытие формы без сохранения. Записанный документ отменяют проведением назад («Отмена проведения»), элемент справочника — пометкой на удаление. Если в базе включено версионирование объектов, прежнюю версию можно посмотреть и восстановить из истории изменений.