Зависла 1С или держит базу: как завершить сеансы и процессы без потери данных

· 10 мин

Содержание

Принудительно отключить 1С можно на трёх уровнях: снять процесс клиента (1cv8.exe или 1cv8c.exe) в Диспетчере задач или командой taskkill, завершить сеанс пользователя в консоли кластера или утилитой rac, а в крайнем случае остановить службу сервера 1С. Выбирайте самый мягкий уровень, который решает задачу: если мешает один пользователь, сервер останавливать не нужно.

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

Когда без принудительного отключения не обойтись

Сначала стоит понять, что именно вы отключаете: окно у одного человека, сеанс на сервере или всю информационную базу. От этого зависит способ.

Типичные ситуации:

  • 🧊 Окно 1С зависло — не отвечает на клики, крестик не работает , «Не отвечает» в заголовке дольше 5–10 минут.
  • 🔒 Нужен монопольный доступ — для обновления конфигурации с изменением структуры, загрузки .dt, тестирования и исправления. Конфигуратор пишет, что база занята другими пользователями.
  • 🎫 Не хватает лицензий — сотрудник давно ушёл, а его сеанс висит и занимает лицензию.
  • 🐢 Тяжёлый отчёт или обработка нагрузили сервер, и остальные пользователи стоят.
  • 🌙 Плановые работы ночью — резервное копирование средствами СУБД, перезагрузка сервера, установка новой платформы.

Любое принудительное завершение обрывает работу пользователя. Всё, что он не записал, пропадёт. Если есть хоть минута — предупредите людей в чате или через блокировку сеансов с сообщением (описано ниже).

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

Способ 1. Снять зависший процесс 1С в Диспетчере задач

Подходит, когда зависло окно на вашем компьютере или на терминальном сервере, где у вас есть права администратора.

  1. Нажмите Ctrl+Shift+Esc — откроется Диспетчер задач.
  2. Перейдите на вкладку Подробности (в Windows 10/11 и Windows Server 2016+).
  3. Найдите процесс клиента 1С. Названия:
    • 1cv8c.exe — тонкий клиент;
    • 1cv8.exe — толстый клиент и Конфигуратор;
    • 1cestart.exe — стартер, окно выбора базы.
  4. Если открыто несколько окон 1С, ориентируйтесь на столбец «Имя пользователя» и на загрузку ЦП: зависший процесс часто грузит одно ядро на 100% или, наоборот, не меняет потребление памяти.
  5. Выделите процесс и нажмите Снять задачу.

На терминальном сервере Диспетчер задач показывает процессы всех пользователей на вкладке Пользователи. Разверните нужного человека и снимите только его 1cv8c.exe.

💡 Если не понимаете, какое окно какое, включите в Диспетчере задач столбец «Командная строка». В ней видно, к какой базе подключён процесс: путь к каталогу File="..." или строка Srvr=...;Ref=....

Способ 2. Отключить 1С из командной строки

Командная строка удобна, когда процессов много, Диспетчер задач сам тормозит или нужно отключить 1С у конкретного пользователя терминального сервера по расписанию.

Windows: taskkill

Откройте командную строку от имени администратора. Сначала посмотрите, что запущено:

tasklist /FI "IMAGENAME eq 1cv8c.exe"
tasklist /FI "IMAGENAME eq 1cv8.exe"

Завершить все тонкие клиенты на компьютере:

taskkill /IM 1cv8c.exe /F

Завершить 1С только у одного пользователя терминального сервера:

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

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

taskkill /PID 5124 /F

Ключ /F — принудительное завершение. Без него Windows отправит процессу запрос на закрытие, и подвисшая 1С может его проигнорировать. Попробуйте сначала без /F, если окно ещё реагирует.

Linux: kill и pkill

На Linux клиент 1С тоже называется 1cv8 или 1cv8c. Найдите процесс и завершите его сначала мягко, потом жёстко:

ps aux | grep 1cv8
kill -15 12345      # мягкий сигнал, процесс может корректно закрыться
kill -9 12345       # если через 30 секунд процесс жив

Снять все клиенты 1С своего пользователя:

pkill -u $USER 1cv8c

Команду pkill 1cv8 на сервере 1С от имени root не запускайте вслепую: под шаблон могут попасть служебные процессы. Сначала посмотрите список через ps.

Способ 3. Завершить сеансы на сервере: консоль кластера и rac

В клиент-серверном варианте снятие процесса на компьютере пользователя не всегда освобождает сеанс на сервере сразу. Сеанс может ещё какое-то время висеть в списке и занимать лицензию. Надёжнее завершить его на сервере.

  1. Запустите «Администрирование серверов 1С Предприятия» (консоль кластера) на сервере или на компьютере, где установлены средства администрирования.
  2. Раскройте дерево: Центральные серверы 1С:Предприятия → имя сервера → Кластеры → Локальный кластер → Информационные базы → нужная база → Сеансы.
  3. Справа появится список сеансов: пользователь, компьютер, приложение (тонкий клиент, Конфигуратор, фоновое задание), время начала.
  4. Выделите нужные сеансы — можно несколько через Ctrl или Shift.
  5. Правой кнопкой — Удалить. Подтвердите.

Пользователь увидит сообщение о том, что сеанс завершён администратором, и окно 1С закроется или предложит перезапуск.

Чтобы пользователи не зашли снова

Если вы освобождаете базу под обновление, удалённые сеансы через минуту появятся снова. Включите блокировку:

  1. В консоли откройте свойства информационной базы (правой кнопкой по базе → Свойства).
  2. Поставьте флаг «Блокировка начала сеансов включена».
  3. Задайте время начала и окончания блокировки, текст сообщения и код разрешения.
  4. Если нужно, включите и «Блокировку регламентных заданий», чтобы фоновые задания не перехватили базу.

Чтобы самому войти в заблокированную базу, добавьте к строке запуска параметр /UC с кодом разрешения, например /UC 12345.

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

То же из командной строки: утилита rac

Утилита rac делает то же, что консоль, но из командной строки. Она нужна для скриптов, ночных регламентов и Linux-серверов, где графической консоли нет. Для работы rac должен быть запущен сервер администрирования ras (по умолчанию порт 1545).

Последовательность команд:

rac cluster list
rac infobase summary list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если для кластера задан администратор, добавьте к командам --cluster-user= и --cluster-pwd=. Если сервер удалённый, укажите его адрес первым аргументом: rac srv-1c:1545 cluster list.

Команда rac session list --licenses покажет, какие сеансы занимают лицензии. Так удобно искать «висящих» пользователей, когда программа пишет, что лицензий не хватает. Полный список параметров — в справке rac help session.

Способ 4. Остановить службу сервера 1С

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

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

Windows

  1. Откройте services.msc.
  2. Найдите службу агента сервера. Обычно её отображаемое имя начинается с 1C:Enterprise 8.3 Server Agent, в скобках — разрядность, а в новых версиях ещё и номер платформы.
  3. Нажмите Остановить, дождитесь статуса «Остановлена», затем Запустить.

Из PowerShell от имени администратора:

Get-Service *1C*
Restart-Service -DisplayName "1C:Enterprise 8.3 Server Agent*"

Если служба зависла в состоянии «Остановка», завершите процессы сервера вручную: ragent.exe (агент), rmngr.exe (менеджер кластера), rphost.exe (рабочие процессы). После этого запустите службу снова.

💡 Иногда достаточно снять один rphost.exe, который грузит процессор: оборвутся только сеансы, работавшие в этом процессе, а кластер сам запустит новый рабочий процесс. Какой процесс проблемный — видно в консоли кластера, ветка «Рабочие процессы».

Linux

Имя службы зависит от версии платформы. До 8.3.21 обычно использовался srv1cv83, с 8.3.21 — systemd-юнит вида srv1cv8-8.3.XX.XXXX@default. Найдите точное имя и перезапустите:

systemctl list-units | grep -i 1c
sudo systemctl restart srv1cv8-8.3.XX.XXXX@default

Способ 5. Снять блокировку файловой базы вручную

В файловом варианте нет сервера и консоли. Базу держат процессы 1cv8.exe/1cv8c.exe на компьютерах пользователей, которые открыли каталог базы. Если программа пишет, что база используется другими пользователями, а все уверяют, что вышли, — значит, где-то остался процесс.

Порядок действий:

  1. Обойдите (или проверьте удалённо через tasklist /S имя_компьютера) все компьютеры, у которых есть доступ к базе, и снимите процессы 1С.
  2. Если база лежит в общей папке, на компьютере с этой папкой откройте Управление компьютером → Общие папки → Открытые файлы. Найдите файлы из каталога базы и закройте их правой кнопкой.
  3. Только после этого загляните в каталог базы. Рядом с 1Cv8.1CD может остаться файл блокировки 1Cv8.1CL. Если ни одного процесса 1С с этой базой точно нет, его можно удалить.

Не трогайте 1Cv8.1CD — это сама база. Удалять файл блокировки, пока кто-то работает в базе, нельзя: два процесса начнут писать в один файл, и это прямой путь к повреждению. Перед любыми действиями с файлами скопируйте каталог базы целиком.

Удалять «лишние» файлы и папки в srvinfo на сервере, чтобы снять блокировку клиент-серверной базы, не нужно. Для этого есть консоль, rac и перезапуск службы.

Проверка базы после аварийного завершения

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

Что было в момент отключения?

В Конфигураторе тестирование запускается через Администрирование → Тестирование и исправление. Для первой проверки отметьте только «Проверку логической целостности» и «Проверку ссылочной целостности» в режиме «Тестирование без исправления»: так вы увидите масштаб проблем, ничего не меняя.

Ещё одна типичная мелочь после отключения — клиент при следующем запуске выдаёт странные ошибки формы или старые данные в списках. Это кэш. Запустите 1С с параметром /ClearCache или удалите базу из списка и добавьте снова.

Ошибки, из-за которых отключение заканчивается проблемами

  • ❌ Снимают процесс Конфигуратора посреди обновления. Если обновление идёт долго, это нормально: реструктуризация большой базы может занимать час и больше. Смотрите на активность диска и процессора, а не на часы.
  • ❌ Удаляют сеанс, но не включают блокировку. Пользователи заходят обратно раньше, чем вы успели начать работу. Сначала блокировка, потом удаление сеансов.
  • ❌ Перезапускают службу ради одного пользователя. Отключаются все базы кластера, включая те, где идёт закрытие месяца . Для одного человека хватает консоли или rac session terminate.
  • ❌ Забывают про фоновые задания. Регламентное задание (обмен, загрузка курсов, полнотекстовый индекс) тоже держит сеанс. Без блокировки регламентных заданий база снова окажется занята.
  • ❌ Удаляют файл блокировки при открытой базе. Самый частый способ получить повреждённый 1Cv8.1CD в файловом варианте.
  • ❌ Делают копию через проводник при работающих пользователях. Копия файловой базы, снятая на ходу, может оказаться нерабочей. Сначала отключите всех, потом копируйте.

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

Сохранится ли документ, который пользователь редактировал в момент отключения?
Нет, если он не успел нажать «Записать» или «Провести». Последнее записанное состояние останется в базе, несохранённые изменения пропадут.
Почему после удаления сеанса лицензия освободилась не сразу?
Лицензия освобождается вместе с сеансом на сервере. Если вы сняли только процесс клиента, сеанс мог остаться в списке. Удалите его в консоли кластера или командой rac session terminate.
Можно ли отключить пользователей 1С по расписанию?
Да. В типовых конфигурациях на БСП блокировку работы пользователей задают с временем начала, а в клиент-серверном варианте ночные отключения скриптуют через rac и планировщик заданий Windows или cron.
Чем удаление сеанса отличается от удаления соединения в консоли?
Сеанс — это работа пользователя с базой, соединение — канал связи рабочего процесса с клиентом. Чтобы отключить человека, удаляют сеанс. Соединение трогают, когда нужно оборвать зависший обмен на уровне рабочего процесса.
Что делать, если консоль кластера не открывается?
Проверьте, что служба агента сервера запущена и порт 1540 доступен с вашего компьютера. Если консоль ставили заново, может понадобиться повторная регистрация radmin.dll командой regsvr32 из папки bin нужной версии платформы.