Зависла 1С: как закрыть сеанс и не потерять базу

· 9 мин

Содержание

Окно 1С побелело, надпись «Не отвечает», крестик не работает . Выйти можно всегда: закройте процесс 1cv8.exe через Диспетчер задач, а если база серверная и сеанс «висит» у других, завершите его в консоли администрирования или командой rac.

Только сначала поймите, что именно зависло: ваш клиент или сервер. От этого зависит, что закрывать. Если убить не тот процесс, вылетят все пользователи базы.

Что зависло: ваш клиент или сервер 1С

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

Признаки, по которым можно отличить случаи:

  • 🖥️ Завис клиент. Окно серое, остальные программы работают, у соседей по базе всё в порядке. Процесс 1cv8.exe грузит процессор или стоит без движения.
  • 🗄️ Завис сервер или сеанс на сервере. Тормозят или падают сразу несколько человек, у вас окно живое, но операция висит. Часто это блокировка или тяжёлый запрос.
  • 🔒 Ждёт блокировки. Окно отвечает, но запись документа или проведение не завершаются, в сообщениях мелькает ошибка блокировки.
  • 💾 Файловая база на общей папке. Тормозит у всех, а нагрузка на диск или сеть высокая.
Что видитеСкорее всегоКуда идти
Серое окно только у васЗавис клиентДиспетчер задач
Операция висит, окно живоеДолгий запрос или блокировкаПодождать, потом сеансы в консоли
Тормозят всеСервер, сеть, дискКонсоль администрирования
Закрыли 1С, но пользователь «числится» в базеОстался сеанс на сервереЗавершить сеанс в консоли или rac
Диагностика: выберите симптом

Завершение зависшего процесса 1С через Диспетчер задач

Это способ для клиентской части. Он убивает только вашу копию программы, остальных не трогает.

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

Тот же результат даёт командная строка:

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. Запустите консоль и раскройте дерево: Центральные серверы 1С:Предприятия → ваш сервер → Кластеры → нужный кластер.
  2. Откройте узел Информационные базы, выберите свою базу и найдите в ней вложенный раздел Сеансы.
  3. В списке найдите сеанс по имени пользователя и по времени начала. Рядом видны приложение (например, тонкий клиент), компьютер и потребление ресурсов.
  4. Щёлкните по сеансу правой кнопкой и выберите «Удалить». Сеанс завершится, лицензия освободится.

Что смотреть в списке, чтобы не убить лишнего:

  • 👤 Пользователь и компьютер. Не завершайте сеанс, не убедившись, что он ваш.
  • ⏱️ Время последней активности. Сеанс без активности много минут и есть зависший.
  • 📊 Вызовы и память. Сеанс с огромным числом вызовов может просто выполнять тяжёлую операцию.
  • 🔑 Лицензия. Если сеанс держит лицензию, а пользователя уже нет, это первый кандидат на удаление.

Если пользователь ещё работает, его документ потеряется. Лучше позвонить и предупредить. Завершать чужие сеансы стоит вне часов закрытия периода, иначе человек потеряет часы работы.

Отдельная тема — сеансы фоновых и регламентных заданий. Они тоже видны в списке. Если такой сеанс завис, база будет «занята», а пользователи ничего не увидят. Перед удалением посмотрите, что за задание и сколько оно уже идёт.

Завершение сеансов командой 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С, затем:

  1. Нажмите Win+R, введите %APPDATA%\1C\1cv8 и откройте папку.
  2. Там лежат папки с именами вида a1b2c3d4-... (UUID базы) и файл ibases.v8i. Папки с UUID можно удалять. Файл ibases.v8i не трогайте: это список ваших баз.
  3. Повторите то же для %LOCALAPPDATA%\1C\1cv8.
  4. Запустите 1С. Кэш пересоздастся, первый запуск будет медленнее.

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

Есть и запуск с очисткой кэша прямо из командной строки:

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" ENTERPRISE /IBName "Название базы" /ClearCache

Путь и название базы подставьте свои. Ключ /ClearCache очищает кэш клиента для этой базы при запуске.

Кэш на сервере сам по себе чистить редко приходится. Каталоги сервера (reg_1541 и подобные) руками не удаляйте: это данные кластера, а не мусор.

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

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

Что проверить:

  • 👥 Откройте Конфигуратор и посмотрите «Администрирование → Активные пользователи». Завершить чужой сеанс оттуда нельзя, но видно, кто числится в базе.
  • 🧹 Если процесса 1cv8.exe нигде нет, а база «занята», закройте все копии программы на компьютерах, откуда с ней работали, и подождите минуту-две.
  • 📂 Файл 1Cv8.1CD и каталог базы нельзя копировать или открывать в других программах, пока она используется.

Файл блокировки 1Cv8.cdn и другие служебные файлы руками не удаляйте, если не уверены, что никто не работает: можно получить повреждение данных. Лучше сделать копию папки базы и проверить её через «Администрирование → Тестирование и исправление» в Конфигураторе. Эта операция требует, чтобы в базе никого не было.

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

Почему 1С зависает и как это предотвратить

Одноразовая реанимация не лечит причину. Вот что чаще всего стоит за повторяющимся зависанием:

  • 🐌 Долгие запросы и отчёты за большой период. Сужайте отбор, формируйте по частям, настройте отчёт на фоновое выполнение.
  • 🔒 Конкурирующие блокировки. Два пользователя проводят документы по одним и тем же данным. Помогает разнести операции по времени.
  • 💽 Диск и сеть. Для файловой базы — медленная сетевая папка, антивирус, проверяющий каждый файл базы. Добавьте каталог базы в исключения антивируса.
  • 🧠 Нехватка памяти. На сервере rphost разрастается. Посмотрите рекомендации по числу рабочих процессов и ограничению памяти в настройках кластера.
  • 🔧 Устаревшая платформа. Часть зависаний исправляется обновлением платформы. Сверьтесь с описанием изменений в вашей версии.
  • 🔌 Внешние обработки и расширения. Если зависает после установки нового расширения, отключите его и проверьте.

Таймауты задаются в настройках кластера и информационной базы. Вот что настраивают на практике:

ПараметрЗачем нужен
Время простоя сеансаЧерез сколько секунд сервер сам завершает бездействующий сеанс
Допустимое время вызоваПрерывает слишком долгий серверный вызов
Время ожидания блокировкиСколько сеанс ждёт, прежде чем получить ошибку
Перезапуск рабочих процессовПериодически обновляет rphost, чтобы не копилась память

Точные названия полей в консоли зависят от версии платформы, но искать их надо в свойствах кластера и в свойствах рабочего сервера.

Ещё один совет: приучите пользователей не нажимать «Провести» повторно, когда ничего не происходит. Каждое нажатие порождает новый вызов, и очередь только растёт.

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

Можно ли просто выключить компьютер, если 1С зависла?
Можно, но это худший вариант. Для файловой базы выше риск повреждения, на сервере сеанс останется висеть до таймаута. Сначала снимите процесс.
Пропадёт ли несохранённый документ после снятия задачи?
Да, всё, что не записано, потеряется. Иногда помогает автосохранение формы, если оно включено в настройках, но рассчитывать на него не стоит.
Сколько ждать, прежде чем убивать процесс?
Для проведения или отчёта по большому периоду — 5-10 минут, если нагрузка на процессор не падает до нуля. Если окно не реагирует и ничего не считается, ждать нечего.
Как понять, что я завершил именно свой сеанс на сервере?
Сверьте имя пользователя, имя компьютера и время начала в списке сеансов. Если пользователь пришёл под общей учётной записью, ориентируйтесь на компьютер.
Зачем нужно завершать сеанс, если процесс клиента уже закрыт?
Сервер не сразу узнаёт, что клиента нет. Такой сеанс занимает лицензию и блокирует монопольные операции, например обновление структуры базы.
Нужно ли перезагружать сервер после зависания?
Обычно нет. Хватает завершения сеанса или одного рабочего процесса. Перезапуск службы нужен, только когда не помогло остальное.