Зависла 1С: как закрыть сеанс и не потерять базу
Содержание
Окно 1С побелело, надпись «Не отвечает», крестик не работает
. Выйти можно всегда: закройте процесс 1cv8.exe через Диспетчер задач, а если база серверная и сеанс «висит» у других, завершите его в консоли администрирования или командой rac.
Только сначала поймите, что именно зависло: ваш клиент или сервер. От этого зависит, что закрывать. Если убить не тот процесс, вылетят все пользователи базы.
Что зависло: ваш клиент или сервер 1С
Начните с простой проверки. Три минуты ожидания часто решают дело: проведение большого документа или закрытие месяца может «думать» долго, а окно при этом честно серое.
Признаки, по которым можно отличить случаи:
- 🖥️ Завис клиент. Окно серое, остальные программы работают, у соседей по базе всё в порядке. Процесс
1cv8.exeгрузит процессор или стоит без движения. - 🗄️ Завис сервер или сеанс на сервере. Тормозят или падают сразу несколько человек, у вас окно живое, но операция висит. Часто это блокировка или тяжёлый запрос.
- 🔒 Ждёт блокировки. Окно отвечает, но запись документа или проведение не завершаются, в сообщениях мелькает ошибка блокировки.
- 💾 Файловая база на общей папке. Тормозит у всех, а нагрузка на диск или сеть высокая.
| Что видите | Скорее всего | Куда идти |
|---|---|---|
| Серое окно только у вас | Завис клиент | Диспетчер задач |
| Операция висит, окно живое | Долгий запрос или блокировка | Подождать, потом сеансы в консоли |
| Тормозят все | Сервер, сеть, диск | Консоль администрирования |
| Закрыли 1С, но пользователь «числится» в базе | Остался сеанс на сервере | Завершить сеанс в консоли или rac |
1cv8.exe в Диспетчере задач.rac. Сам по себе он отвалится по таймауту, но не сразу.Завершение зависшего процесса 1С через Диспетчер задач
Это способ для клиентской части. Он убивает только вашу копию программы, остальных не трогает.
- Нажмите
Ctrl+Shift+Esc, откроется Диспетчер задач. Если интерфейс не отвечает, подождите: Windows сама его откроет. - Найдите процесс 1С:Предприятие (
1cv8.exe) или1cv8c.exe, если вы работаете через тонкий клиент. Конфигуратор — тоже1cv8.exe, он идёт отдельной строкой. - Если процессов несколько, откройте вкладку «Подробности» и посмотрите на использование памяти и время работы. Зависший обычно самый «тяжёлый».
- Выберите строку и нажмите «Снять задачу».
Тот же результат даёт командная строка:
taskkill /IM 1cv8c.exe /F
Команда закроет все тонкие клиенты на компьютере. На терминальном сервере так делать нельзя: вы выбьете коллег. Там завершайте процесс по PID своей сессии:
tasklist /FI "IMAGENAME eq 1cv8c.exe"
taskkill /PID 4812 /F
PID в примере условный, подставьте свой из вывода tasklist.
Принудительное закрытие обрывает работу без сохранения. Несохранённый документ, открытая форма и незаписанные изменения пропадут. Если в окне ещё что-то двигается, лучше подождать.
На терминальном сервере откройте в Диспетчере задач вкладку «Пользователи» и завершайте процессы только в своей сессии. Колонка с PID включается через контекстное меню заголовков.
Если процесс не снимается и пишет «Отказано в доступе», вы запустили Диспетчер без нужных прав или процесс принадлежит другой учётной записи. Запустите Диспетчер от администратора.
Как завершить сеанс 1С на сервере через консоль администрирования
После убийства клиента сеанс на кластере серверов 1С может остаться. Он занимает лицензию, держит блокировки и мешает обновлению или монопольному режиму. Его надо завершить.
Консоль администрирования серверов 1С входит в комплект поставки платформы, отдельно её ставят при установке серверных компонентов. Если консоль не запускается или не подключается к кластеру, обычно помогает перерегистрация библиотеки radmin.dll и проверка того, что служба агента сервера запущена.
Порядок действий:
- Запустите консоль и раскройте дерево: Центральные серверы 1С:Предприятия → ваш сервер → Кластеры → нужный кластер.
- Откройте узел Информационные базы, выберите свою базу и найдите в ней вложенный раздел Сеансы.
- В списке найдите сеанс по имени пользователя и по времени начала. Рядом видны приложение (например, тонкий клиент), компьютер и потребление ресурсов.
- Щёлкните по сеансу правой кнопкой и выберите «Удалить». Сеанс завершится, лицензия освободится.
Что смотреть в списке, чтобы не убить лишнего:
- 👤 Пользователь и компьютер. Не завершайте сеанс, не убедившись, что он ваш.
- ⏱️ Время последней активности. Сеанс без активности много минут и есть зависший.
- 📊 Вызовы и память. Сеанс с огромным числом вызовов может просто выполнять тяжёлую операцию.
- 🔑 Лицензия. Если сеанс держит лицензию, а пользователя уже нет, это первый кандидат на удаление.
Если пользователь ещё работает, его документ потеряется. Лучше позвонить и предупредить. Завершать чужие сеансы стоит вне часов закрытия периода, иначе человек потеряет часы работы.
Отдельная тема — сеансы фоновых и регламентных заданий. Они тоже видны в списке. Если такой сеанс завис, база будет «занята», а пользователи ничего не увидят. Перед удалением посмотрите, что за задание и сколько оно уже идёт.
Завершение сеансов командой rac без графической консоли
Когда консоль недоступна или нужно скриптовать, используется утилита rac из каталога сервера 1С. Она подключается к службе администрирования ras. Если не запущен ras, rac ответит ошибкой соединения.
Запустите ras на сервере, например так:
ras cluster --port=1545
Дальше в другом окне:
rac cluster list
rac session --cluster=<идентификатор кластера> list
rac session --cluster=<идентификатор кластера> terminate --session=<идентификатор сеанса>
Идентификаторы — это длинные UUID, их выводит первая и вторая команды. Параметры кластера, пользователей и вывода см. в справке rac help.
Практический приём: чтобы не искать нужный сеанс глазами, вывод rac session list фильтруют по имени пользователя. В Windows для этого подходит findstr, в Linux — grep.
rac не спрашивает подтверждения. Команда terminate обрывает сеанс сразу, поэтому перепроверьте идентификатор, а в скриптах не используйте массовое завершение без фильтра.
Что делать, если зависает рабочий процесс сервера
Иногда сеанс не завершается: его вызов застрял внутри рабочего процесса rphost. В консоли в узле «Рабочие процессы» видно PID каждого процесса и сколько он занимает памяти.
Как работает связка процессов:
ragent— агент сервера. Принимает подключения и стартует остальное.rmngr— менеджер кластера. Распределяет сеансы по рабочим процессам.rphost— рабочий процесс. В нём исполняется код 1С.
Если завис один rphost, завершите именно его. Узнайте PID из консоли и закройте процесс:
taskkill /PID 9120 /F
PID условный. Сервер сам поднимет новый рабочий процесс.
Все сеансы, которые обслуживал этот rphost, оборвутся. Люди увидят ошибку и потеряют несохранённое. Делайте это в тихое время или после предупреждения.
Завершать rmngr или останавливать службу агента сервера нужно только в крайнем случае: вылетят все пользователи всех баз кластера, сеансы не сохранятся, а перезапуск занимает минуты. Перед этим убедитесь, что в рабочих базах никто не проводит документы, и предупредите всех.
Если после перезапуска служба не стартует, проверьте, не остался ли заблокирован каталог кластера и не запущен ли старый процесс ragent (в списке процессов он виден отдельной строкой). Каталог кластера и его файлы вручную не удаляйте: там хранятся настройки кластера и список баз.
Очистка кэша 1С после зависания
После аварийного закрытия кэш клиента нередко остаётся «грязным»: форма открывается с ошибкой или программа снова зависает на старте. Тогда его сбрасывают.
Закройте все окна 1С, затем:
- Нажмите
Win+R, введите%APPDATA%\1C\1cv8и откройте папку. - Там лежат папки с именами вида
a1b2c3d4-...(UUID базы) и файлibases.v8i. Папки с UUID можно удалять. Файлibases.v8iне трогайте: это список ваших баз. - Повторите то же для
%LOCALAPPDATA%\1C\1cv8. - Запустите 1С. Кэш пересоздастся, первый запуск будет медленнее.
Перед удалением можно просто переименовать папки: если не помогло, вернёте как было.
Есть и запуск с очисткой кэша прямо из командной строки:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" ENTERPRISE /IBName "Название базы" /ClearCache
Путь и название базы подставьте свои. Ключ /ClearCache очищает кэш клиента для этой базы при запуске.
Кэш на сервере сам по себе чистить редко приходится. Каталоги сервера (reg_1541 и подобные) руками не удаляйте: это данные кластера, а не мусор.
Файловая база: когда после зависания не пускает
В файловом варианте нет сервера и консоли, но своя специфика есть. После зависания клиента иногда база не открывается или пишет, что занята.
Что проверить:
- 👥 Откройте Конфигуратор и посмотрите «Администрирование → Активные пользователи». Завершить чужой сеанс оттуда нельзя, но видно, кто числится в базе.
- 🧹 Если процесса
1cv8.exeнигде нет, а база «занята», закройте все копии программы на компьютерах, откуда с ней работали, и подождите минуту-две. - 📂 Файл
1Cv8.1CDи каталог базы нельзя копировать или открывать в других программах, пока она используется.
Файл блокировки 1Cv8.cdn и другие служебные файлы руками не удаляйте, если не уверены, что никто не работает: можно получить повреждение данных. Лучше сделать копию папки базы и проверить её через «Администрирование → Тестирование и исправление» в Конфигураторе. Эта операция требует, чтобы в базе никого не было.
Файловая база после частых «убиваний» процесса страдает: могут появиться битые индексы. Если зависания повторяются, сделайте копию и запустите тестирование.
Почему 1С зависает и как это предотвратить
Одноразовая реанимация не лечит причину. Вот что чаще всего стоит за повторяющимся зависанием:
- 🐌 Долгие запросы и отчёты за большой период. Сужайте отбор, формируйте по частям, настройте отчёт на фоновое выполнение.
- 🔒 Конкурирующие блокировки. Два пользователя проводят документы по одним и тем же данным. Помогает разнести операции по времени.
- 💽 Диск и сеть. Для файловой базы — медленная сетевая папка, антивирус, проверяющий каждый файл базы. Добавьте каталог базы в исключения антивируса.
- 🧠 Нехватка памяти. На сервере
rphostразрастается. Посмотрите рекомендации по числу рабочих процессов и ограничению памяти в настройках кластера. - 🔧 Устаревшая платформа. Часть зависаний исправляется обновлением платформы. Сверьтесь с описанием изменений в вашей версии.
- 🔌 Внешние обработки и расширения. Если зависает после установки нового расширения, отключите его и проверьте.
Таймауты задаются в настройках кластера и информационной базы. Вот что настраивают на практике:
| Параметр | Зачем нужен |
|---|---|
| Время простоя сеанса | Через сколько секунд сервер сам завершает бездействующий сеанс |
| Допустимое время вызова | Прерывает слишком долгий серверный вызов |
| Время ожидания блокировки | Сколько сеанс ждёт, прежде чем получить ошибку |
| Перезапуск рабочих процессов | Периодически обновляет rphost, чтобы не копилась память |
Точные названия полей в консоли зависят от версии платформы, но искать их надо в свойствах кластера и в свойствах рабочего сервера.
Ещё один совет: приучите пользователей не нажимать «Провести» повторно, когда ничего не происходит. Каждое нажатие порождает новый вызов, и очередь только растёт.