1С не отвечает и не закрывается: что делать на компьютере и на сервере
Содержание
Чтобы закрыть зависшую
программу 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С на компьютере
Перед снятием задачи попробуйте мягкие варианты:
- Нажмите
Ctrl+Break. Платформа спросит, прервать ли выполнение. Срабатывает, если код обработки допускает прерывание. - Нажмите
Escнесколько раз — закроет зависшее модальное окно, если оно спряталось за основным. - Посмотрите на панель задач: иногда «зависание» — это окно вопроса, открытое на другом мониторе.
Если не помогло, завершите процесс:
Ctrl+Shift+Esc→ вкладка «Подробности».- Найдите
1cv8c.exeили1cv8.exe. Если процессов несколько, ориентируйтесь на столбец ЦП и имя пользователя. - Правой кнопкой → «Завершить дерево процессов».
Несохранённые изменения в открытых документах пропадут. Записанные и проведённые документы останутся в базе.
Через командную строку то же самое делается быстрее, особенно на терминальном сервере, где десятки сеансов:
:: завершить все тонкие клиенты текущего пользователя
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. Если после снятия блокировки вход всё равно запрещён, проверьте, не остался ли этот файл, и удалите его, когда в базе никого нет.
Чем отличаются блокировки, которые вы видите:
- 🔒 Блокировка объекта — документ открыт другим пользователем на редактирование. Снимается, когда тот закроет форму или когда завершится его сеанс.
- 🔒 Блокировка данных транзакции — запись, которую держит идущее проведение. Сама снимется по окончании транзакции или после завершения сеанса.
- 🔒 Блокировка начала сеансов — административный запрет входа, описанный выше.
Не завершайте сеанс, который прямо сейчас проводит документы или закрывает месяц, — транзакция откатится, и работу придётся начинать заново.
Фоновые и регламентные задания, которые «держат» базу
Если пользователи ни при чём, а база тормозит или не даёт обновиться, проверьте фоновые задания. Загрузка курсов валют, обмен с сайтом или с ЕГАИС, полнотекстовое индексирование, обновление классификатора — всё это работает без участия людей и может зависнуть.
В типовых конфигурациях на БСП список находится в Администрирование → Обслуживание → Регламентные и фоновые операции → Регламентные и фоновые задания. На вкладке фоновых заданий видны состояние, время начала и ошибка, если задание упало.
Что делать с зависшим заданием:
- Откройте его и посмотрите время начала. Задание обмена, которое выполняется 6 часов вместо обычных 5 минут, почти наверняка зависло.
- Отмените выполнение командой в форме списка (у активного задания она доступна).
- Если отмена не срабатывает, завершите сеанс задания. В списке активных пользователей и в консоли кластера он отображается с типом приложения «Фоновое задание».
- Откройте расписание этого задания и разнесите его по времени, чтобы оно не запускалось в часы пиковой работы.
В файловой базе регламентные задания выполняются только тогда, когда в базу зашёл хотя бы один пользователь, и запускает их клиентский сеанс. Поэтому «зависание» файловой базы в 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исправлены в новых сборках.
Частые вопросы
Сохранятся ли данные, если снять задачу 1С в Диспетчере задач?
Почему после снятия задачи пишет, что пользователь уже работает в базе?
Можно ли закрыть зависшую 1С у другого пользователя без доступа к его компьютеру?
Где посмотреть, что делала 1С перед зависанием?
Администрирование → Обслуживание → Журнал регистрации, отбор по пользователю и времени. Для серверных зависаний нужен технологический журнал, его настраивают файлом logcfg.xml.