1С зависла и не отвечает: от быстрой проверки до разбора блокировок и СУБД

· 10 мин

Содержание

Если висит программа 1С, первое, что делать, — не снимать процесс сразу, а понять, кто висит: один пользователь или все. Висит у одного — чаще виноваты кэш, профиль Windows или антивирус на его компьютере. Висят все разом — ищите причину на сервере: блокировку, долгий запрос к СУБД, перегруженный диск.

Частое заблуждение — «1С зависла, значит, сломалась база». Обычно база цела: программа ждёт освобождения данных, которые держит чужой документ, или ответа от сервера. Если подождать 1–2 минуты и посмотреть, что происходит, большинство «зависаний» объясняется без переустановки платформы.

Сначала пять минут наблюдения: что проверить до любых действий

Правильная диагностика начинается с вопросов. От ответов зависит, куда смотреть дальше.

  • 👤 У кого висит? Только у вас — проблема локальная. У всех — серверная или сетевая.
  • ⏳ Когда началось? Сразу после обновления конфигурации, платформы или Windows — подозревайте кэш и несовпадение версий.
  • 📄 На какой операции? Проведение одного документа, закрытие месяца , формирование отчёта, запуск программы.
  • 🔁 Повторяется ли? Один раз — могла быть разовая блокировка. Каждый день в одно время — регламентное задание или резервное копирование .
  • 💾 Тип базы. Файловая (папка с файлом 1Cv8.1CD) или клиент-серверная (кластер 1С + MS SQL или PostgreSQL). Путь виден внизу окна запуска при выделении базы: File="…" или Srvr="…";Ref="…".

Экстренные меры, пока разбираетесь

  1. Подождите 2–3 минуты. Долгое проведение или отчёт за год может честно считаться всё это время.
  2. Откройте диспетчер задач Windows (Ctrl+Shift+Esc). Посмотрите процесс 1cv8.exe или 1cv8c.exe: если он грузит процессор — программа работает, если нагрузка ноль — она чего-то ждёт.
  3. Спросите коллег, не запущено ли у кого-то закрытие месяца, перепроведение или загрузка обмена.
  4. Если ждать нельзя — завершите только свой процесс 1cv8c.exe (или 1cv8.exe) в диспетчере задач.

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

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

Очистка кэша 1С и временных файлов

Повреждённый локальный кэш — самая частая причина зависаний у одного пользователя, особенно после обновления. Кэш хранит метаданные конфигурации и настройки форм. Если он не совпадает с базой, 1С может висеть на заставке или при открытии форм.

Быстрый способ: параметр /ClearCache

  1. В окне запуска выделите базу и нажмите Изменить.
  2. Пройдите до последней страницы мастера, где есть поле дополнительных параметров запуска.
  3. Впишите /ClearCache и сохраните.
  4. Запустите базу. После успешного входа параметр лучше убрать: с ним каждый запуск будет медленнее.

Ручной способ: удалить папки кэша

Закройте все окна 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. Откройте Администрирование серверов 1С Предприятия (консоль кластера).
  2. Раскройте кластер → Информационные базы → нужная база → Сеансы.
  3. Отсортируйте по колонкам времени вызова и потребления ресурсов. Длинный текущий вызов у одного сеанса — главный подозреваемый.
  4. В узле Блокировки той же базы видно, какое соединение что заблокировало.

То же из командной строки через 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. Очистите кэш (см. выше) — помогает чаще всего.
  2. Сверьте версии: клиент должен быть той же версии, что и сервер 1С. Номер версии клиента виден в окне О программе, сервера — в консоли кластера.
  3. Запустите базу под другим пользователем Windows. Заработало — испорчен профиль, перенесите настройки или создайте профиль заново.
  4. Проверьте, открывается ли сетевой путь к файловой базе в проводнике.
  5. Отключите дополнительные внешние обработки и расширения, если зависание появилось после их установки: в Конфигуратор → Конфигурация → Расширения конфигурации можно снять флажок «Активно» у подозрительного расширения.

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

Сколько ждать, прежде чем снимать зависшую 1С?
Если процесс 1cv8c.exe нагружает процессор, подождите 5–10 минут: операция идёт. Если нагрузка ноль и окно не отвечает больше 2–3 минут — 1С ждёт блокировку или сеть, ожидание вряд ли поможет.
Поможет ли переустановка платформы?
Редко. Платформу переустанавливают, если зависание появилось сразу после её обновления или повреждены файлы программы. В остальных случаях причина в кэше, блокировках или окружении.
Почему 1С зависает при закрытии?
При выходе программа сохраняет настройки пользователя и завершает фоновые операции. Если сеть до сервера медленная или профиль на сетевом диске, выход затягивается. Очистка кэша и проверка сети обычно решают вопрос.
Опасно ли снимать процесс 1С через диспетчер задач?
Для клиент-серверной базы данные защищены: незавершённая транзакция откатится. Для файловой базы есть небольшой риск повреждения, если процесс снят в момент записи. После этого стоит проверить последний документ.
Почему тормозит только один отчёт, а остальное работает?
Отчёт строится за слишком большой период или без отборов, и запрос перебирает много данных. Сузьте период и добавьте отбор по организации или складу.