Сброс и завершение зависших сеансов в 1С Предприятие

· 9 мин

Содержание

Пользователь ушёл домой, не закрыв программу, а утром база не отдаёт документ: «объект заблокирован другим пользователем». Чтобы сбросить такой сеанс в клиент-серверной базе, откройте консоль администрирования серверов 1С, зайдите в узел Сеансы нужного кластера и удалите зависшее подключение. В файловой базе всё решается закрытием процесса 1cv8.exe, который этот сеанс держит.

Ниже — четыре рабочих способа завершить сеансы в 1С Предприятие: от списка активных пользователей в самой программе до утилиты rac в командной строке. Для каждого скажу, когда он уместен и чем опасен, потому что принудительный сброс всегда обрывает чью-то работу.

Завершение сеанса — это аварийное прерывание. Несохранённые данные пользователя пропадут, а незаконченная транзакция откатится. Сбрасывайте только тот сеанс, который действительно завис, а не «на всякий случай» все подряд.

Как найти зависший сеанс и отличить его от рабочего

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

Где смотреть список подключений:

  • 🖥 Консоль администрирования серверов — узлы Сеансы и Соединения кластера. Здесь видны логин, компьютер, приложение (толстый клиент, веб-клиент, фоновое задание), время старта и последней активности.
  • 👤 Список активных пользователей в самой программе — Главное меню → Все функции → Стандартные → Активные пользователи. Показывает тех же пользователей проще, без доступа к серверу.
  • ⌨️ Утилита rac — команда rac session list выводит сеансы с их идентификаторами.

Разберитесь, где сеанс, а где соединение. Соединение — это установленное подключение к базе, сеанс — активность конкретного пользователя внутри кластера. Один пользователь может держать несколько соединений (клиент, фоновые задания), поэтому ориентируйтесь на сеанс и его номер.

На что смотреть в списке сеансов консоли:

  • Пользователь и компьютер — чтобы понять, чей это сеанс и можно ли человека переспросить.
  • Приложение — толстый клиент, тонкий клиент, веб-клиент или фоновое задание. Фоновые задания отображаются как отдельные сеансы, и их нельзя путать с людьми: завершать стоит само задание, а не сеанс.
  • Время последней активности — главный признак. Если оно не меняется несколько минут, а пользователь уверяет, что ничего не делает, сеанс можно считать зависшим.
  • Захвачено лицензий — показывает, держит ли сеанс программную лицензию. После завершения она освободится.

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

Завершение сеанса через консоль администрирования серверов

Это основной способ для клиент-серверной базы. Консоль администрирования (оснастка MMC) подключается к агенту сервера — по умолчанию порт 1540.

Если в списке оснасток консоли нет, зарегистрируйте её библиотеку. Из каталога bin установленной платформы выполните от администратора:

regsvr32 radmin.dll

После этого оснастка «Администрирование серверов 1С Предприятия» появится в консоли.

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

  1. Разверните дерево: центральный сервер → узел Кластеры → ваш кластер.
  2. Откройте узел Сеансы. Отсортируйте по столбцу с пользователем или по времени последней активности.
  3. Найдите зависший сеанс, щёлкните правой кнопкой → Удалить.
  4. Подтвердите удаление.

Через несколько секунд сеанс пропадёт из списка, блокировки снимутся, лицензия вернётся в пул.

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

Иногда сеанс не удаляется с первого раза, потому что рабочий процесс занят длинной серверной операцией. Подождите 10–20 секунд и повторите удаление; обычно процесс к этому моменту освобождается.

Если завис не один сеанс, а весь рабочий процесс (rphost) и вместе с ним встали все, кто на нём работал, в консоли можно перезапустить этот рабочий процесс. Но это крайняя мера:

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

Как завершить работу пользователей из режима Предприятия

Не всегда есть доступ к серверу. Тогда работают средства внутри самой программы — они подходят и для планового «выгнать всех перед обслуживанием».

Список активных пользователей. Откройте Главное меню → Все функции → Стандартные → Активные пользователи (пункт Все функции включается в настройках главного меню). В клиент-серверной базе администратор видит здесь кнопку завершения сеанса: выделяете строку пользователя и завершаете его сеанс.

Блокировка работы пользователей. Для планового отключения всех сразу используйте механизм в разделе Администрирование → Обслуживание. Там задаётся окно, в течение которого новые подключения запрещаются, а работающие сеансы завершаются к указанному времени. Пользователь заранее видит предупреждение и успевает сохранить данные.

Чем это отличается от удаления в консоли:

СпособКогда применятьРиск для пользователя
Удаление сеанса в консолиОдин конкретный сеанс зависМгновенный обрыв, данные теряются
Завершить сеанс в «Активных пользователях»Нет доступа к серверу, нужно снять одногоТот же обрыв, но проще добраться
Блокировка работы пользователейПлановое обслуживание, бэкап, обновлениеМягко: есть предупреждение и время сохраниться

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

Сброс сеанса в файловой базе 1С

В файловом варианте нет кластера и консоли: «сеанс» здесь — это запущенный процесс 1cv8.exe на компьютере пользователя. Поэтому и завершается он иначе.

Если база не открывается с ошибкой вида «Файл базы данных открыт другой программой» или «Нарушение целостности структуры», значит, кто-то держит файл 1Cv8.1CD:

  1. Попросите пользователя закрыть 1С штатно.
  2. Если программа зависла и не закрывается, завершите процесс 1cv8.exe в диспетчере задач на его компьютере.
  3. Проверьте, не держит ли каталог базы антивирус или программа резервного копирования — на время работы исключите папку базы из проверки «на лету».

Завершение 1cv8.exe через диспетчер задач — грубое прерывание. Всё, что пользователь не записал, пропадёт. Сначала убедитесь, что процесс действительно мёртв, а не выполняет длинную операцию (проведение, закрытие месяца).

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

Отдельная причина зависаний в файловых базах — повреждённый локальный кэш. Если конкретный компьютер открывает базу подолгу или падает, очистите папку кэша 1С в профиле пользователя (каталог вида %LOCALAPPDATA%\1C\1cv8\<имя базы>). При следующем запуске кэш соберётся заново.

Файловую базу на сетевой шаре лучше вообще не держать под постоянной многопользовательской нагрузкой: при 5+ активных пользователях переходите на клиент-серверный вариант, иначе блокировки и зависания станут нормой.

Утилита rac: сброс сеансов из командной строки

rac — консольный клиент администрирования. Он удобен, когда к серверу нет графического доступа (например, вы на Linux-сервере по SSH) или когда сброс нужно автоматизировать скриптом.

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

Типичная последовательность:

rac cluster list

Команда выведет кластеры и их идентификаторы. Скопируйте нужный cluster (длинный UUID).

rac session list --cluster=<идентификатор-кластера>

Вы получите список сеансов с их session-идентификаторами, логинами и приложениями.

rac session terminate --cluster=<идентификатор-кластера> --session=<идентификатор-сеанса>

Эта команда завершает один сеанс. Если на кластере задан администратор, добавьте параметры с его логином и паролем.

Перед тем как завершать, сверьтесь со списком: убедитесь, что берёте идентификатор именно зависшего сеанса, а не соседней строки. Логин и приложение в выводе rac session list помогают не ошибиться — особенно когда у одного пользователя несколько сеансов.

Полный список команд и параметров смотрите в справке — rac help и rac session help. Не подставляйте наугад незнакомые ключи: у terminate есть свои опции, и ошибка в синтаксисе просто вернёт сообщение об ошибке.

rac session terminate обрывает сеанс так же жёстко, как удаление в консоли. В скрипте, который «чистит» сеансы по расписанию, отбирайте только давно неактивные — иначе выгоните работающих людей.

Почему сеансы зависают и что с этим делать

Чаще всего виноват не сам сеанс, а то, что его держит. Сбросить подключение — лечить симптом; полезнее убрать причину.

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

Как настроить автоматическое завершение зависших сеансов

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

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

  • Время засыпания сеанса — через сколько секунд бездействия сеанс переходит в «спящий» режим и отпускает рабочий процесс. Ориентир: 600 секунд (10 минут).
  • Время завершения спящего сеанса — через сколько секунд спящий сеанс удаляется полностью. Ориентир: от 3600 секунд (1 час) и больше, в зависимости от того, насколько терпимы пользователи к тому, что их выкинет на обеде.

Эти настройки не трогают активных пользователей — только тех, кто реально ничего не делает.

Чтобы сеансы не зависали
Выполнено: 0 / 5

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

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

Можно ли завершить один сеанс, не прерывая работу остальных?
Да. Удаление сеанса в консоли или rac session terminate по конкретному идентификатору затрагивает только этот сеанс. Остальные пользователи работу не заметят.
Нужны ли права администратора, чтобы сбрасывать сеансы?
Для клиент-серверной базы — да, нужны права администратора кластера (если он задан в его настройках). В файловой базе хватает прав на завершение процесса 1cv8.exe на компьютере пользователя.
Освобождается ли лицензия после завершения сеанса?
Да. Как только сеанс завершён, занятая им клиентская лицензия возвращается в общий пул и её может получить другой пользователь.
Сеанс сбросится сам, если пользователь просто закрыл крышку ноутбука?
Только если на базе настроено время завершения спящего сеанса. Без этих настроек сеанс будет висеть и держать лицензию, пока вы не удалите его вручную.
Чем сеанс отличается от соединения в консоли?
Соединение — это установленный канал к базе, сеанс — активность конкретного пользователя в кластере. Один пользователь может держать несколько соединений (клиент плюс фоновые задания), поэтому для сброса ориентируйтесь на номер сеанса.