Окно 1С не отвечает: от Ctrl+Break до завершения сеанса на сервере

· 9 мин

Содержание

Чтобы закрыть зависшее окно в 1С, сначала нажмите Ctrl+Break и подождите 10–20 секунд: так прерывается долгая операция без потери программы. Не помогло — завершите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор) в Диспетчере задач. В клиент-серверной базе после этого проверьте, не остался ли «висеть» сеанс в консоли кластера.

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

Сначала поймите, что именно зависло: окно, клиент или сервер

От ответа зависит, где «лечить». Убить процесс на компьютере пользователя бесполезно, если причина — блокировка на сервере: следующий запуск упрётся в то же самое.

ПризнакГде проблемаЧто делать первым
Окно не закрывается, но остальная 1С реагируетМодальное окно-диалог спряталосьНайти и закрыть диалог
Белое окно, «Не отвечает», 1cv8c.exe грузит процессорКлиент: долгий цикл или формирование отчётаCtrl+Break, затем Диспетчер задач
Окно висит, процессор клиента почти 0 %Клиент ждёт ответа сервераСмотреть сеанс в консоли кластера
Зависли сразу несколько пользователейБлокировка или перегрузка сервераКонсоль кластера, список блокировок
После перезапуска 1С снова зависает на том же местеКэш, ошибка в данных или незакрытый сеансОчистка кэша, проверка сеансов

Спрятанный диалог — самая частая «ложная» зависимость

Иногда 1С не зависла, а ждёт ответа в окне вопроса, которое ушло за главное окно или на отключённый второй монитор. Главное окно при этом не реагирует на клики.

  • 🔍 Нажмите Alt+Tab и поищите второе окно 1С.
  • ⌨️ Нажмите Esc — он закрывает активный диалог.
  • 🖥️ Если окно «уехало» за край экрана: выделите его через Alt+Tab, нажмите Alt+Пробел, выберите «Переместить» и двигайте стрелками.
  • 🪟 Сочетание Win+Стрелка прижимает активное окно к видимому краю экрана.

Если после закрытия диалога всё ожило — дальше читать не нужно. Это не зависание.

Шаг 1. Прервите долгую операцию, не закрывая программу

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

  1. Нажмите Ctrl+Break (на ноутбуках без клавиши Break — Ctrl+Fn+B или Ctrl+Fn+Pause, зависит от модели).
  2. Подождите 10–20 секунд. Если операция прервётся, появится сообщение о прерывании выполнения.
  3. Закройте форму обычным способом и сохраните, что можно.

Прерывание срабатывает не всегда. Если клиент ждёт ответа от сервера или СУБД (тяжёлый запрос, ожидание блокировки), окно может «очнуться» только когда сервер вернёт управление.

Прерванное групповое перепроведение не откатывает уже проведённые документы. Проверьте, на каком документе остановилась обработка, прежде чем запускать её снова.

Сколько ждать перед жёсткими мерами? Ориентир простой: посмотрите в Диспетчере задач на процесс 1С. Если он грузит процессор и потребление памяти меняется — работа идёт. Если всё застыло на 5–10 минут — пора переходить к следующему шагу.

Шаг 2. Закройте зависшую 1С через Диспетчер задач

Это стандартный способ закрыть зависшее окно, когда 1С не реагирует ни на что.

  1. Нажмите Ctrl+Shift+Esc — откроется Диспетчер задач.
  2. Перейдите на вкладку «Подробности».
  3. Найдите процесс нужного типа (таблица ниже). Если процессов несколько, ориентируйтесь на столбец «Состояние» («Не отвечает») или на загрузку ЦП.
  4. Щёлкните правой кнопкой → «Снять задачу».
ПроцессЧто это
1cv8c.exeТонкий клиент — основной режим работы пользователей
1cv8.exeТолстый клиент и Конфигуратор
1cv8s.exe, 1cestart.exeСтартер (окно выбора базы), обычно не виснет
вкладка браузераВеб-клиент: закройте вкладку или сам браузер

Всё, что не записано в открытых формах, пропадёт. Документ, который вы правили, останется в последнем записанном состоянии.

Через командную строку: когда Диспетчер задач тоже тормозит

Откройте командную строку и посмотрите список процессов 1С:

tasklist /FI "IMAGENAME eq 1cv8c.exe"

Закрыть конкретный процесс по его номеру (PID из первой команды):

taskkill /PID 12345 /F

На терминальном сервере закрывайте процессы только нужного пользователя, иначе вылетят все:

taskkill /FI "USERNAME eq ivanova" /IM 1cv8c.exe /F

Команда taskkill /IM 1cv8c.exe /F без фильтра по пользователю, запущенная администратором на терминальном сервере, закроет 1С у всех сотрудников. Несохранённые данные пропадут у каждого.

Особенность файловой базы

В файловом варианте после аварийного закрытия в каталоге базы может остаться файл блокировки 1Cv8.1CL. Обычно платформа сама разбирается с ним при следующем входе.

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

Шаг 3. Завершите зависший сеанс в консоли администрирования кластера

В клиент-серверной базе убийство процесса на компьютере пользователя не останавливает работу на сервере сразу. Сеанс может остаться: продолжать тяжёлый запрос, держать блокировки и занимать лицензию.

Как найти и закрыть такой сеанс:

  1. Откройте «Администрирование серверов 1С Предприятия» на сервере или на компьютере с установленной консолью. Консоль подключается к агенту сервера (по умолчанию порт 1540).
  2. Раскройте: центральный сервер → «Кластеры» → нужный кластер → «Информационные базы» → ваша база → «Сеансы».
  3. Найдите сеанс по имени пользователя и компьютеру.
  4. Оцените колонки с текущим временем вызова и блокировками: долгий текущий вызов говорит о том, что сеанс ещё что-то выполняет на сервере.
  5. Правой кнопкой по сеансу → «Удалить». Подтвердите.

Удаление сеанса откатывает его незавершённую транзакцию. Если пользователь в этот момент проводил документ, документ не будет проведён. Предупредите сотрудника, прежде чем закрывать его сеанс.

Если консоль просит логин и пароль, значит в кластере заданы администраторы. Их выдаёт тот, кто настраивал сервер.

Без консоли: список активных пользователей из самой 1С

В типовых конфигурациях на БСП есть обработка «Активные пользователи». Её проще всего открыть через Все функции → Обработки (команда «Все функции» включается в параметрах приложения пунктом «Отображать команду “Все функции”»).

Обработка показывает, кто и с какого компьютера подключён. В клиент-серверном варианте из неё можно завершить сеанс, если указать данные администратора кластера. В Конфигураторе тот же список доступен через Администрирование → Активные пользователи, но только для просмотра.

Шаг 4. Утилита rac: управление сеансами из командной строки

Командная строка удобна, когда консоль не открывается, нужно закрыть много сеансов или вы работаете по удалённому доступу без графики. Утилита rac работает через службу сервера администрирования RAS (по умолчанию порт 1545). Служба RAS должна быть запущена на сервере.

Узнайте идентификатор кластера:

rac localhost:1545 cluster list

Посмотрите сеансы кластера (подставьте UUID кластера из предыдущего вывода):

rac localhost:1545 session list --cluster=<uuid-кластера>

Если в кластере заданы администраторы, добавьте к командам --cluster-user=<имя> и --cluster-pwd=<пароль>.

Закройте нужный сеанс:

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

Посмотреть текущие блокировки:

rac localhost:1545 lock list --cluster=<uuid-кластера>

Вывод session list длинный. Ищите сеанс по полям user-name и host, а UUID копируйте из поля session. Полный набор параметров по каждой команде показывает rac help session.

Исполняемый файл rac.exe лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin. Номер версии подставьте свой.

Почему лицензия «занята» после закрытия окна

Когда процесс клиента убит, сервер не сразу понимает, что пользователь ушёл. Сеанс переходит в спящее состояние и завершается по таймауту. Таймауты задаются в свойствах информационной базы в консоли кластера: время засыпания пассивного сеанса и время завершения спящего сеанса.

Если лицензий мало и ждать некогда — удалите спящий сеанс вручную через консоль или rac, как описано выше.

Блокировки и поиск причины зависания

Закрыть окно — половина дела. Если причина осталась, зависание повторится завтра в то же время.

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

Как увидеть, кто кого блокирует

  1. В консоли кластера откройте узел «Блокировки» у информационной базы.
  2. Сопоставьте объекты блокировок с сеансами: в списке видно, какой сеанс держит блокировку.
  3. Сеанс-«виновник» обычно один и висит дольше всех. Закрывайте его, а не тех, кто ждёт.

При конфликте управляемых блокировок второй пользователь не висит бесконечно. Через время ожидания (по умолчанию около 20 секунд) он получает ошибку о превышении времени ожидания блокировки. Если окно висит минутами без ошибки, причина скорее в тяжёлом запросе или нагрузке, а не в блокировке.

Технологический журнал

Для повторяющихся зависаний нужны факты. Технологический журнал включается файлом logcfg.xml в каталоге conf платформы. В нём фиксируются долгие запросы (события DBMSSQL, SDBL), ожидания блокировок (TLOCK) и взаимоблокировки (TDEADLOCK).

Подробный журнал быстро съедает место на диске и нагружает сервер. Включайте его на время диагностики, с отбором по длительности событий и ограничением срока хранения, и выключайте после.

Профилактика: как сделать, чтобы окна 1С не зависали

Большинство «вечных» зависаний устраняется не героическим снятием задач, а несколькими настройками.

Очистка кэша клиента

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

Ручная очистка — при закрытой 1С удалите содержимое папок с кэшем пользователя:

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

Удаляйте только папки с длинными именами-идентификаторами внутри. Файлы списка баз (ibases.v8i и соседние) не трогайте, иначе придётся заново добавлять базы.

Что ещё помогает

  • 🔄 Держите версию платформы на клиентах и сервере одинаковой: номер платформы клиента должен совпадать с номером на сервере.
  • 🧹 Регулярно выполняйте регламентные задания СУБД: обновление статистики и обслуживание индексов. Устаревшая статистика — частая причина «вдруг» замедлившихся запросов.
  • 🕐 Тяжёлые операции (закрытие месяца, перепроведение за год, выгрузки) запускайте вне пиковых часов.
  • 💾 На клиенте нужен запас памяти. Тонкий клиент с десятком открытых отчётов на компьютере с 4 ГБ — кандидат на зависания.
  • 🛡️ Добавьте каталоги баз и кэша 1С в исключения антивируса по согласованию со службой безопасности. Сканирование файлов базы на лету заметно тормозит файловый вариант.
  • 📏 В свойствах рабочего сервера ограничьте безопасный расход памяти за один вызов, чтобы один «тяжёлый» пользователь не клал рабочий процесс для всех.
Перед тем как закрывать зависшую 1С
Выполнено: 0 / 5

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

Можно ли закрыть 1С у другого пользователя, не подходя к его компьютеру?
В клиент-серверной базе — да: удалите его сеанс в консоли кластера или через rac session terminate. В файловой базе можно завершить процесс на терминальном сервере, если все работают там.
Почему после снятия задачи 1С пишет, что лицензии закончились?
Сеанс убитого клиента ещё «спит» на сервере и держит лицензию. Удалите его в консоли кластера или дождитесь, пока он завершится по таймауту из свойств базы.
Потеряются ли данные базы, если завершить процесс 1С?
Записанные документы сохранятся. Пропадут несохранённые изменения в открытых формах, а незавершённая транзакция откатится.
Конфигуратор завис при обновлении — тоже снимать задачу?
Только в крайнем случае и после долгого ожидания без активности процессора и диска. Прерванное обновление структуры базы может потребовать восстановления из резервной копии.
Зависает только веб-клиент, а тонкий работает. Почему?
Чаще всего дело в браузере: расширения, переполненный кэш, блокировка всплывающих окон. Закройте вкладку, очистите кэш браузера или попробуйте другой браузер.