1С зависла и не отвечает: от быстрой проверки до разбора блокировок и СУБД
Содержание
Если висит программа 1С, первое, что делать, — не снимать процесс сразу, а понять, кто висит: один пользователь или все. Висит у одного — чаще виноваты кэш, профиль Windows или антивирус на его компьютере. Висят все разом — ищите причину на сервере: блокировку, долгий запрос к СУБД, перегруженный диск.
Частое заблуждение — «1С зависла, значит, сломалась база». Обычно база цела: программа ждёт освобождения данных, которые держит чужой документ, или ответа от сервера. Если подождать 1–2 минуты и посмотреть, что происходит, большинство «зависаний» объясняется без переустановки платформы.
Сначала пять минут наблюдения: что проверить до любых действий
Правильная диагностика начинается с вопросов. От ответов зависит, куда смотреть дальше.
- 👤 У кого висит? Только у вас — проблема локальная. У всех — серверная или сетевая.
- ⏳ Когда началось? Сразу после обновления конфигурации, платформы или Windows — подозревайте кэш и несовпадение версий.
- 📄 На какой операции? Проведение одного документа, закрытие месяца , формирование отчёта, запуск программы.
- 🔁 Повторяется ли? Один раз — могла быть разовая блокировка. Каждый день в одно время — регламентное задание или резервное копирование .
- 💾 Тип базы. Файловая (папка с файлом
1Cv8.1CD) или клиент-серверная (кластер 1С + MS SQL или PostgreSQL). Путь виден внизу окна запуска при выделении базы:File="…"илиSrvr="…";Ref="…".
Экстренные меры, пока разбираетесь
- Подождите 2–3 минуты. Долгое проведение или отчёт за год может честно считаться всё это время.
- Откройте диспетчер задач Windows (
Ctrl+Shift+Esc). Посмотрите процесс1cv8.exeили1cv8c.exe: если он грузит процессор — программа работает, если нагрузка ноль — она чего-то ждёт. - Спросите коллег, не запущено ли у кого-то закрытие месяца, перепроведение или загрузка обмена.
- Если ждать нельзя — завершите только свой процесс
1cv8c.exe(или1cv8.exe) в диспетчере задач.
При принудительном завершении теряются несохранённые данные в открытых формах. Документ, который вы в этот момент записывали, нужно будет открыть и проверить. Снимайте процесс только у себя, не у чужих пользователей без предупреждения.
Очистка кэша 1С и временных файлов
Повреждённый локальный кэш — самая частая причина зависаний у одного пользователя, особенно после обновления. Кэш хранит метаданные конфигурации и настройки форм. Если он не совпадает с базой, 1С может висеть на заставке или при открытии форм.
Быстрый способ: параметр /ClearCache
- В окне запуска выделите базу и нажмите Изменить.
- Пройдите до последней страницы мастера, где есть поле дополнительных параметров запуска.
- Впишите
/ClearCacheи сохраните. - Запустите базу. После успешного входа параметр лучше убрать: с ним каждый запуск будет медленнее.
Ручной способ: удалить папки кэша
Закройте все окна 1С на этом компьютере. Затем откройте через Win+R две папки:
%APPDATA%\1C\1cv8
%LOCALAPPDATA%\1C\1cv8
Внутри лежат папки с длинными именами вида a3f1c2e4-… — это кэши отдельных баз. Удалите эти папки с GUID-именами. Файлы списка баз (ibases.v8i) и папку 1cv8 целиком не трогайте, иначе пропадёт список баз в окне запуска.
Не знаете, какая папка от какой базы, — удаляйте все GUID-папки. Платформа пересоздаст их при следующем запуске, первый вход займёт чуть дольше.
Временные файлы Windows
Если на системном диске меньше 2–3 ГБ свободного места, 1С может подвисать при формировании отчётов и выгрузках: временные файлы пишутся в %TEMP%. Очистите эту папку при закрытой 1С и освободите место на диске.
Технологический журнал и журнал регистрации: где искать след зависания
Когда простые меры не помогли, нужно увидеть, что именно делает программа в момент зависания.
Журнал регистрации
Самый доступный источник. Откройте Конфигуратор → Администрирование → Журнал регистрации и отфильтруйте события по пользователю и времени, когда всё повисло. Ищите:
- ❌ ошибки с текстом
Конфликт блокировок при выполнении транзакции; - ⏱ записи с
Превышено максимальное время ожидания предоставления блокировки; - 🔄 запуск и завершение регламентных заданий рядом по времени;
- 📥 начало загрузки обмена данными.
Технологический журнал
Техжурнал пишет события платформы с длительностью, контекстом и текстом запроса. Он включается файлом logcfg.xml, который кладут в папку conf установленной платформы, например C:\Program Files\1cv8\conf\. На сервере — на компьютере с кластером, на клиенте — на компьютере пользователя.
Пример настройки для поиска блокировок и исключений:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\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— исключения платформы;history="24"— хранить логи 24 часа.
Техжурнал со свойством all быстро растёт: включайте его на время диагностики и на диске, где есть запас места. Папку location создайте заранее и дайте права пользователю, от которого работает служба сервера 1С.
После воспроизведения зависания откройте лог-файлы в папке техжурнала обычным текстовым редактором. В событии TTIMEOUT ищите свойство WaitConnections — номера соединений, которые держали блокировку. По ним в консоли кластера находите конкретного пользователя.
Блокировки и сеансы на сервере 1С
В клиент-серверной базе зависание «у всех» часто означает, что один длинный процесс держит данные, а остальные стоят в очереди.
Как посмотреть сеансы
- Откройте Администрирование серверов 1С Предприятия (консоль кластера).
- Раскройте кластер → Информационные базы → нужная база → Сеансы.
- Отсортируйте по колонкам времени вызова и потребления ресурсов. Длинный текущий вызов у одного сеанса — главный подозреваемый.
- В узле Блокировки той же базы видно, какое соединение что заблокировало.
То же из командной строки через rac: rac cluster list выдаст идентификатор кластера, rac session list покажет сеансы. Точный набор параметров для вашей версии смотрите в rac help.
Для файловой базы список подключённых пользователей открывается в Конфигуратор → Администрирование → Активные пользователи.
Что делать с «тяжёлым» сеансом
- 📞 Сначала свяжитесь с пользователем. Возможно, он закрывает месяц и до конца осталась минута.
- 🕒 Если операция зависла окончательно, завершите сеанс в консоли кластера.
- 📅 Тяжёлые операции (перепроведение, закрытие месяца, большие обмены) перенесите на вечер или в выходные.
Завершение сеанса обрывает работу пользователя: его незаписанные данные пропадут, транзакция откатится. Удаление сеанса — последний шаг, а не первый. Перезапуск службы сервера 1С оборвёт сеансы всех пользователей сразу — только в нерабочее время и с предупреждением.
Взаимоблокировки (deadlock)
Если в журнале регистрации регулярно встречаются взаимоблокировки, два документа одновременно захватывают одни и те же данные в разном порядке. Типичный случай — параллельное проведение реализаций по одному складу при оперативном списании себестоимости. Лечится организационно (разнести операции по времени) или доработкой конфигурации программистом.
Проверка СУБД: долгие запросы, статистика, ресурсы
Когда сеансов-виновников не видно, а всё медленно, смотрите базу данных.
MS SQL Server
Найти, кто кого блокирует прямо сейчас:
SELECT session_id, blocking_session_id, wait_type,
wait_time, status, command
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Если запрос возвращает строки, blocking_session_id — сеанс-источник. Сопоставить его с пользователем 1С помогает техжурнал или колонка соединения СУБД в консоли кластера.
Что ещё проверить:
- 📊 Статистику и индексы. Устаревшая статистика заставляет SQL выбирать медленные планы запросов. Настройте план обслуживания: обновление статистики ежедневно, перестроение индексов раз в неделю, ночью.
- 🧠 Память. Ограничьте
max server memory, чтобы SQL Server не забирал всю память у Windows и сервера 1С. - ⚙️ Параллелизм. Для баз 1С обычно ставят
max degree of parallelism = 1.
PostgreSQL
SELECT pid, state, wait_event_type, wait_event,
now() - query_start AS dlitelnost, left(query, 80)
FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY query_start;
Запросы с большой длительностью и wait_event_type = 'Lock' стоят в ожидании блокировки. Регулярно выполняйте VACUUM ANALYZE по базе (или проверьте, что работает autovacuum) — без этого таблицы раздуваются, а запросы замедляются.
Железо
Откройте Монитор ресурсов Windows на сервере. Если очередь диска постоянно высокая, а процессор свободен — узкое место в диске. Обычная ситуация для базы на HDD или на общем хранилище, где одновременно идёт резервное копирование.
Антивирус и сеть: когда 1С виснет «без причины»
Антивирус проверяет каждый файл, к которому обращается 1С. Для файловой базы это сотни обращений в секунду к 1Cv8.1CD, и программа начинает подвисать на ровном месте.
Что добавить в исключения антивируса
| Где | Что исключить |
|---|---|
| Компьютер пользователя | папки %APPDATA%\1C и %LOCALAPPDATA%\1C, процессы 1cv8.exe, 1cv8c.exe |
| Файловый сервер с базой | каталог файловой базы целиком |
| Сервер 1С | каталог кластера srvinfo, процессы ragent.exe, rmngr.exe, rphost.exe |
| Сервер СУБД | файлы данных и журналов базы (.mdf, .ldf или каталог данных PostgreSQL) |
Проверка простая: на время теста отключите защиту в реальном времени на одном компьютере. Если 1С перестала виснуть — дело в антивирусе, настройте исключения и включите защиту обратно.
Сеть и файловая база
- 🌐 Файловая база по сети работает медленно уже при 5–10 одновременных пользователях. Для большего числа нужен клиент-серверный вариант или веб-публикация.
- 📶 Wi-Fi и VPN с потерями пакетов дают зависания при открытии файловой базы. Проверьте
pingдо сервера с базой: стабильные 1–2 мс в локальной сети — норма, скачки до сотен мс — проблема. - 🔗 Указывайте путь к базе по имени сервера или IP (
\\server\bases\buh), а не через подключённый сетевой диск, который может отвалиться после перезагрузки.
Проверка целостности файловой базы
Если файловая база стала виснуть после аварийного выключения, проверьте её. Это делается в Конфигуратор → Администрирование → Тестирование и исправление или утилитой chdbfl.exe из папки bin платформы.
Тестирование и исправление требует монопольного доступа: все пользователи должны выйти. Перед исправлением сделайте копию папки базы — если что-то пойдёт не так, будет к чему вернуться.
Файл 1Cv8.1CL в каталоге базы — это файл блокировки. Удалять его можно только когда точно никто не работает
с базой и все процессы 1С на всех компьютерах закрыты, иначе есть риск повредить данные.
Если 1С зависает при запуске
Отдельный сценарий — программа не доходит до рабочего окна. Порядок проверки:
- Очистите кэш (см. выше) — помогает чаще всего.
- Сверьте версии: клиент должен быть той же версии, что и сервер 1С. Номер версии клиента виден в окне О программе, сервера — в консоли кластера.
- Запустите базу под другим пользователем Windows. Заработало — испорчен профиль, перенесите настройки или создайте профиль заново.
- Проверьте, открывается ли сетевой путь к файловой базе в проводнике.
- Отключите дополнительные внешние обработки и расширения, если зависание появилось после их установки: в Конфигуратор → Конфигурация → Расширения конфигурации можно снять флажок «Активно» у подозрительного расширения.
Частые вопросы
Сколько ждать, прежде чем снимать зависшую 1С?
1cv8c.exe нагружает процессор, подождите 5–10 минут: операция идёт. Если нагрузка ноль и окно не отвечает больше 2–3 минут — 1С ждёт блокировку или сеть, ожидание вряд ли поможет.