1С не отвечает и не закрывается: что делать на компьютере и на сервере

· 10 мин

Содержание

Чтобы закрыть зависшую программу 1С, сначала нажмите Ctrl+Break и подождите 1–2 минуты. Не помогло — откройте Диспетчер задач (Ctrl+Shift+Esc), найдите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор) и нажмите «Снять задачу». Если после перезапуска база не открывается или «висит» у всех, проблема уже не на компьютере, а в сеансах, блокировках или службе сервера.

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

Зависла или работает долго: как понять по Диспетчеру задач

Окно с надписью «Не отвечает» ещё не значит, что 1С зависла. Закрытие месяца , перепроведение за год или загрузка выписки на 5 000 строк легко занимают 10–30 минут, и всё это время интерфейс может не реагировать.

Откройте Диспетчер задач, вкладку «Подробности», и посмотрите на процесс 1С:

Что видитеЧто это значитЧто делать
ЦП 5–25%, память растёт или меняетсяИдёт расчётЖдать, не закрывать
Активность диска высокая, ЦП низкийЧтение файловой базы или кэшаЖдать 5–10 минут
ЦП 0%, память не меняется несколько минутПроцесс чего-то ждёт: блокировку, сеть, серверПроверять блокировки и сеансы
Память близка к 4 ГБ у 32-битного клиентаКлиенту не хватает адресного пространстваЗавершать процесс, ставить 64-битный клиент

💡 Ещё точнее поможет Монитор ресурсов (resmon в окне «Выполнить»). Щёлкните правой кнопкой по процессу 1С → «Анализ цепочки ожидания». Если процесс ждёт другой процесс или сетевое соединение, вы это увидите.

Какие процессы относятся к 1С:

  • 🖥️ 1cv8c.exe — тонкий клиент, обычная работа пользователя;
  • 🖥️ 1cv8.exe — толстый клиент или Конфигуратор;
  • 🚀 1cestart.exe — стартер, окно выбора базы;
  • 🗄️ ragent.exe, rmngr.exe, rphost.exe — процессы сервера 1С (только на сервере).

Если у пользователя ЦП в нуле, а на сервере rphost.exe загружен на 100%, клиент не завис. Он ждёт ответа от сервера, и закрытие окна ничего не ускорит.

Как принудительно завершить процесс 1С на компьютере

Перед снятием задачи попробуйте мягкие варианты:

  1. Нажмите Ctrl+Break. Платформа спросит, прервать ли выполнение. Срабатывает, если код обработки допускает прерывание.
  2. Нажмите Esc несколько раз — закроет зависшее модальное окно, если оно спряталось за основным.
  3. Посмотрите на панель задач: иногда «зависание» — это окно вопроса, открытое на другом мониторе.

Если не помогло, завершите процесс:

  1. Ctrl+Shift+Esc → вкладка «Подробности».
  2. Найдите 1cv8c.exe или 1cv8.exe. Если процессов несколько, ориентируйтесь на столбец ЦП и имя пользователя.
  3. Правой кнопкой → «Завершить дерево процессов».

Несохранённые изменения в открытых документах пропадут. Записанные и проведённые документы останутся в базе.

Через командную строку то же самое делается быстрее, особенно на терминальном сервере, где десятки сеансов:

:: завершить все тонкие клиенты текущего пользователя
taskkill /IM 1cv8c.exe /F

:: на терминальном сервере — только процессы конкретного пользователя
taskkill /F /FI "USERNAME eq ivanova" /IM 1cv8c.exe

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

Если 1С зависает сразу при запуске

Частая причина — повреждённый кэш клиента. Закройте все окна 1С и удалите содержимое папок:

  • %APPDATA%\1C\1cv8
  • %LOCALAPPDATA%\1C\1cv8

Удаляйте только подпапки с длинными именами вида a1b2c3d4-... (это кэш конкретных баз). Файлы ibases.v8i и 1cestart.cfg не трогайте: в них список баз.

Второй способ — добавить параметр запуска /ClearCache. Выделите базу в окне запуска → «Изменить» → последний шаг мастера, поле дополнительных параметров. После одного успешного входа параметр уберите, иначе каждый запуск будет долгим.

Файловая база после принудительного закрытия

Если пользователь работал в файловой базе и процесс убили во время записи, база может открыться с ошибкой. Не паникуйте и не копируйте поверх старый архив сразу. Сделайте копию папки с базой, а затем запустите утилиту chdbfl.exe из каталога bin установленной платформы — она проверяет и исправляет физическую структуру файла 1Cv8.1CD. Во время проверки в базе не должно быть ни одного пользователя.

Завершение зависших сеансов и снятие блокировок из 1С

Бывает так: процесс у пользователя давно закрыт, а в базе висит его сеанс. Новый вход блокируется, документы «заняты», обновление не начинается. Сеанс нужно закрыть изнутри базы.

Откройте список активных пользователей. В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) он есть в разделе Администрирование. Универсальный путь через главное меню: Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его в Сервис и настройки → Параметры → Отображать команду «Все функции».

В списке видно, кто работает, с какого компьютера и с какого времени. В клиент-серверной базе отсюда можно завершить чужой сеанс, если у вас есть права администратора.

Когда нужно выгнать всех, используйте блокировку начала сеансов. В типовых конфигурациях это команда «Блокировка работы пользователей» в разделе Администрирование, в группе команд по обслуживанию. Укажите время начала, сообщение для пользователей и код разрешения — с ним вы сами сможете зайти, добавив в параметры запуска /UC<код>.

В файловой базе блокировка сеансов создаёт в каталоге базы файл 1Cv8.cdn. Если после снятия блокировки вход всё равно запрещён, проверьте, не остался ли этот файл, и удалите его, когда в базе никого нет.

Чем отличаются блокировки, которые вы видите:

  • 🔒 Блокировка объекта — документ открыт другим пользователем на редактирование. Снимается, когда тот закроет форму или когда завершится его сеанс.
  • 🔒 Блокировка данных транзакции — запись, которую держит идущее проведение. Сама снимется по окончании транзакции или после завершения сеанса.
  • 🔒 Блокировка начала сеансов — административный запрет входа, описанный выше.

Не завершайте сеанс, который прямо сейчас проводит документы или закрывает месяц, — транзакция откатится, и работу придётся начинать заново.

Фоновые и регламентные задания, которые «держат» базу

Если пользователи ни при чём, а база тормозит или не даёт обновиться, проверьте фоновые задания. Загрузка курсов валют, обмен с сайтом или с ЕГАИС, полнотекстовое индексирование, обновление классификатора — всё это работает без участия людей и может зависнуть.

В типовых конфигурациях на БСП список находится в Администрирование → Обслуживание → Регламентные и фоновые операции → Регламентные и фоновые задания. На вкладке фоновых заданий видны состояние, время начала и ошибка, если задание упало.

Что делать с зависшим заданием:

  1. Откройте его и посмотрите время начала. Задание обмена, которое выполняется 6 часов вместо обычных 5 минут, почти наверняка зависло.
  2. Отмените выполнение командой в форме списка (у активного задания она доступна).
  3. Если отмена не срабатывает, завершите сеанс задания. В списке активных пользователей и в консоли кластера он отображается с типом приложения «Фоновое задание».
  4. Откройте расписание этого задания и разнесите его по времени, чтобы оно не запускалось в часы пиковой работы.

В файловой базе регламентные задания выполняются только тогда, когда в базу зашёл хотя бы один пользователь, и запускает их клиентский сеанс. Поэтому «зависание» файловой базы в 9 утра нередко совпадает с запуском накопившихся регламентных заданий у первого вошедшего.

Блокировки на уровне СУБД: MS SQL и PostgreSQL

Когда сервер 1С работает с MS SQL Server или PostgreSQL, длинная транзакция может держать блокировку уже в самой СУБД. Признак: у всех пользователей запросы к одним и тем же данным стоят, ЦП на сервере низкий.

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

MS SQL Server

Найдите, кто кого блокирует:

SELECT r.session_id,
       r.blocking_session_id,
       r.wait_type,
       r.wait_time / 1000 AS wait_sec,
       s.host_name,
       s.program_name,
       DB_NAME(r.database_id) AS db_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 — номер соединения-виновника. Если цепочка длинная, ищите соединение, которое блокирует других, но само никого не ждёт. Его можно завершить:

KILL 57;  -- номер из blocking_session_id

То же самое без запросов показывает «Монитор активности» в SQL Server Management Studio: столбец «Заблокировано кем».

PostgreSQL

-- кто заблокирован и кем
SELECT pid,
       pg_blocking_pids(pid) AS blocked_by,
       now() - xact_start AS tx_age,
       state,
       left(query, 80) AS query
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;

-- сначала мягко: отменить текущий запрос
SELECT pg_cancel_backend(12345);

-- если не помогло: закрыть соединение
SELECT pg_terminate_backend(12345);

Учтите: управляемые блокировки самой 1С в СУБД не видны. Их держит менеджер кластера 1С. Список таких блокировок смотрите в консоли администрирования кластера, в ветке информационной базы «Блокировки», или командой rac lock list (параметры кластера и базы — в rac help lock).

Завершение сеансов и перезапуск службы сервера 1С

Если зависших сеансов много или консоль кластера сама не отвечает, переходите к серверу. Начните с точечного завершения сеансов, а перезапуск службы оставьте на крайний случай.

Консоль кластера и rac

В консоли администрирования серверов 1С раскройте Кластер → Информационные базы → <база> → Сеансы. Отсортируйте список по времени начала, проверьте пользователя и тип приложения, найдите сеанс-виновник и удалите его из контекстного меню.

Тот же порядок через утилиту rac (нужен запущенный ras):

rac cluster list
rac session list --cluster=<uuid-кластера>
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Перезапуск службы

Остановка службы обрывает все сеансы всех баз на этом сервере. Делайте это вне рабочего времени или после блокировки входа и предупреждения пользователей.

Windows — имя службы зависит от версии и разрядности, поэтому сначала найдите его:

sc query state= all | findstr /I "1C"
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

После остановки убедитесь, что в Диспетчере задач не осталось rphost.exe, rmngr.exe и ragent.exe. Повисший rphost.exe завершите вручную, иначе служба не стартует.

Linux — найдите юнит и перезапустите его:

systemctl list-units --all | grep -i 1c
sudo systemctl restart <имя-юнита>

Очистка сеансовых данных сервера

Приём, который часто выручает, когда после перезапуска сеансы снова «призрачные»: очистка кэша сеансовых данных. Остановите службу, зайдите в каталог кластера (по умолчанию srvinfo\reg_1541) и удалите папки snccntx*. Затем запустите службу. Файлы 1CV8Clst.lst и папки с базами не трогайте — в них реестр кластера и сами информационные базы.

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

Как сделать, чтобы 1С зависала реже

Принудительное закрытие — это лечение симптома. Если зависания повторяются чаще раза в неделю, ищите причину:

  • 🧹 Антивирус. Добавьте в исключения каталог файловой базы, папки кэша %APPDATA%\1C и %LOCALAPPDATA%\1C, на сервере — каталог srvinfo и файлы данных СУБД. Проверка каждого обращения к 1Cv8.1CD даёт подвисания на ровном месте.
  • 💾 64-битный клиент. У 32-битного клиента потолок памяти около 4 ГБ, тяжёлые отчёты в него упираются.
  • 🌐 Файловая база по сети. Работа через общую папку на 5–10 пользователях заметно медленнее и чувствительнее к обрывам Wi-Fi. При росте числа пользователей переходите на клиент-серверный вариант или публикацию на веб-сервере.
  • ⏰ Расписание. Обмены, индексирование и резервное копирование ставьте на ночь, а не на 9:00 и 13:00.
  • 🛠️ Обслуживание. Раз в месяц — проверка файловой базы через chdbfl.exe или тестирование в Конфигураторе. Для SQL — обновление статистик и перестроение индексов по регламенту.
  • 🔄 Платформа. Держите версию платформы не ниже рекомендованной для вашего релиза конфигурации: многие утечки памяти rphost.exe исправлены в новых сборках.
Минимум после каждого принудительного закрытия
Выполнено: 0 / 4

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

Сохранятся ли данные, если снять задачу 1С в Диспетчере задач?
Всё записанное и проведённое останется. Пропадут только изменения в открытых и ещё не записанных формах. Незавершённая транзакция проведения откатится целиком.
Почему после снятия задачи пишет, что пользователь уже работает в базе?
Сеанс в базе ещё не закрылся. В клиент-серверной базе он отвалится по таймауту или его можно завершить в консоли кластера. В файловой — дождитесь пару минут или закройте все процессы 1С на этом компьютере.
Можно ли закрыть зависшую 1С у другого пользователя без доступа к его компьютеру?
Да. Администратор базы может завершить его сеанс в списке активных пользователей (клиент-серверный режим) или в консоли кластера. На терминальном сервере подойдёт taskkill с фильтром по имени пользователя.
Где посмотреть, что делала 1С перед зависанием?
В журнале регистрации: Администрирование → Обслуживание → Журнал регистрации, отбор по пользователю и времени. Для серверных зависаний нужен технологический журнал, его настраивают файлом logcfg.xml.
Что безопаснее: KILL в SQL или завершение сеанса в консоли 1С?
Завершение в консоли кластера. Платформа корректно закроет сеанс и освободит свои блокировки. KILL в СУБД — для случаев, когда сеанс 1С уже завершён, а соединение в базе данных осталось.