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

· 9 мин

Содержание

Список сеансов открывается в самой базе: в режиме 1С:Предприятие это раздел «Администрирование» и пункт «Активные пользователи», в Конфигураторе — меню «Администрирование» и тот же пункт. Для клиент-серверной базы подробности (память, блокировки, зависшие вызовы) видны только в консоли администрирования серверов 1С или через утилиту rac.

Ниже — все три пути: от безопасного к полному. Начните с первого. Если его хватает, консоль не нужна.

Какой способ выбрать

Способ зависит от того, где лежит база и что вы хотите узнать.

СпособГде работаетЧто покажетНужны права
Окно «Активные пользователи»файловая и серверная базакто сидит, с какого компьютера, в каком режимеадминистратор базы
Консоль администрирования серверовтолько серверная базасеансы, соединения, блокировки, нагрузкуадминистратор кластера
Утилита racтолько серверная базато же, но из командной строки и скриптовадминистратор кластера

Если вам нужно только понять, кто мешает обновлению или удалению, хватит первого способа. Если база тормозит, а в окне пользователей всё спокойно, идите в консоль.

Просмотр сеансов в самой базе

Это самый быстрый способ. Он работает и для файловой, и для серверной базы.

Через пользовательский режим

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

Колонка «Приложение» подскажет тип клиента: тонкий клиент, веб-клиент, толстый клиент, фоновое задание. Фоновые задания в списке — это не люди. Регламентные операции (закрытие месяца , обмен, загрузка) выглядят именно так.

Через Конфигуратор

Меню «Администрирование» → «Активные пользователи». Окно такое же. Плюс одно: в Конфигураторе вы видите и его собственный сеанс, и сеансы других разработчиков. Именно из-за них часто не удаётся сохранить конфигурацию .

Свой сеанс в списке выделен. Если вы видите двух одинаковых пользователей с одного компьютера, это не ошибка: один сеанс — клиент, второй — Конфигуратор или открытая вторая копия.

Что делать с найденными сеансами

Список в базе только показывает. Завершить чужой сеанс отсюда можно не всегда, зависит от режима. Надёжнее сделать это в консоли сервера (следующий раздел) или попросить пользователя закрыть программу.

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

Какие права нужны

В окне «Активные пользователи» достаточно роли администратора базы. Консоль и rac требуют другого уровня: администратора кластера, а иногда ещё и учётной записи ОС, под которой запущена служба сервера.

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

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

Консоль администрирования серверов 1С

Консоль ставится вместе с платформой, отдельным компонентом «Администрирование серверов 1С:Предприятия». Запускается как оснастка и подключается к ragent — главному процессу сервера, который по умолчанию слушает порт 1540.

Как найти сеансы в дереве

  1. Добавьте сервер: «Центральные серверы 1С:Предприятия» → «Создать» → «Центральный сервер» и укажите имя или адрес машины.
  2. Раскройте нужный кластер (часто он один, порт 1541).
  3. Откройте узел «Информационные базы» и выберите свою базу.
  4. Внутри базы будут три узла: «Сеансы», «Соединения» и «Блокировки».

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

Колонки, которые стоит читать

Консоль показывает много, но для диагноза хватает нескольких колонок.

  • ⏱ Начало сеанса и Последняя активность — если разница в часы, сеанс висит просто так и держит лицензию.
  • 👤 Пользователь и Компьютер — кому звонить.
  • 🧩 Приложение — 1CV8C, WebClient, BackgroundJob, COMConnection, Designer.
  • 🧠 Память и Чтение/запись — кто грузит сервер.
  • 🔒 Заблокирован СУБД и Заблокирован управляемой блокировкой — на кого он ждёт.
  • 📞 Текущий вызов и Время вызова СУБД — сколько секунд идёт один запрос.

Как завершить сеанс

Правый клик по строке сеанса → «Удалить» (в части версий пункт называется «Завершить сеанс»). Консоль спросит подтверждение. Если сеанс не уходит, найдите его соединения и отключите их там.

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

Поставьте ещё код разрешения (параметр «Код разрешения» в той же форме). Тогда вы сами зайдёте в заблокированную базу с ключом /UC <код>, а остальных система не пустит.

Блокировки и взаимоблокировки

Когда пользователь жалуется «1С висит», причина чаще всего в блокировке. Один сеанс держит ресурс, второй ждёт.

Где смотреть

В консоли откройте узел «Блокировки» в нужной базе. Там видно, какой сеанс держит ресурс, а какой ждёт. В списке сеансов рядом смотрите колонки о блокировках: значение в них — номер сеанса, на который вы упёрлись.

Есть два вида ожиданий:

  • Блокировки СУБД — держит сама база данных (SQL Server, PostgreSQL). Видны в колонке «Заблокирован СУБД».
  • Управляемые блокировки — их ставит код конфигурации (Блокировка.Заблокировать()), например, на записи регистров при проведении. Колонка «Заблокирован управляемой блокировкой».

Что такое взаимоблокировка

Это два сеанса, каждый держит то, чего ждёт другой. Простой пример:

  1. Сеанс А провёл накладную и держит остатки по товару X, ожидая остатки по товару Y.
  2. Сеанс Б провёл другую накладную: держит Y, ждёт X.
  3. Ни один не может продолжить.

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

Не убивайте сеанс, который ждёт, пока не нашли того, кто держит. Ожидающий — жертва. Виноват держащий: найдите по номеру из колонки блокировки.

Диагностика через технологический журнал

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

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

rac — клиент командной строки администрирования. Лежит в каталоге bin платформы рядом с 1cv8. Работает через процесс ras (сервер администрирования), который нужно запустить заранее.

Запуск сервера администрирования

ras cluster --port=1545 localhost:1540

Здесь 1545 — порт, на котором слушает ras, а localhost:1540 — адрес главного процесса ragent. Для постоянной работы оформите ras как службу.

Основные команды

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

rac localhost:1545 cluster list

Из вывода возьмите значение поля cluster. Дальше оно подставляется во все команды. Затем список баз:

rac localhost:1545 infobase summary list --cluster=<идентификатор кластера>

Список сеансов:

rac localhost:1545 session list --cluster=<идентификатор кластера> --infobase=<идентификатор базы>

Соединения и блокировки:

rac localhost:1545 connection list --cluster=<идентификатор кластера>
rac localhost:1545 lock list --cluster=<идентификатор кластера> --infobase=<идентификатор базы>

Завершить конкретный сеанс:

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

Если в кластере задан администратор, добавьте --cluster-user и --cluster-pwd. Не оставляйте пароль в скриптах открытым текстом: берите его из переменной окружения.

Что даёт автоматизация

С rac можно:

  • 🔔 раз в 5 минут собирать число сеансов и писать в лог или мониторинг;
  • 🧹 по расписанию отключать сеансы, висящие без активности более N часов;
  • 🌙 перед ночным обновлением закрыть сеансы всех, кроме своего;
  • 📊 вести статистику по приложениям: сколько реально живых пользователей, а сколько фоновых заданий.

Пример: нужно найти сеансы, неактивные дольше двух часов. Выведите session list, отфильтруйте строки с last-active-at и сравните со временем сервера. Для скрипта на PowerShell или bash разбирайте вывод построчно: поля идут парами «ключ : значение», блоки разделены пустой строкой.

Номер версии утилиты должен совпадать с версией сервера в пределах той же ветки платформы. Если rac отвечает ошибкой подключения, а ras работает, проверьте это в первую очередь.

Как читать картину и что делать с тормозами

Сеансы сами по себе ничего не лечат. Важно понять, что в них ненормально.

Признаки проблемы

Что видноЧто это значитЧто делать
Один сеанс с огромным временем вызова СУБДтяжёлый запрос или отчётдождаться, затем разбирать запрос; убивать в крайнем случае
Много сеансов ждут одногоблокировка этим однимнайти держателя, спросить пользователя, что он делает
Сеансы фоновых заданий активны днёмрегламентные задания в рабочее времяперенести расписание на ночь
Много сеансов без активности по 3–5 часовлюди не выходят из программы, лицензии занятынастроить завершение неактивных сеансов
Число сеансов выше числа лицензийчасть работает через клиентскую лицензию с другого ключасверить лицензии в консоли

Лицензии и «пустые» сеансы

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

Практический порядок разбора жалобы «всё тормозит»

  1. Откройте список сеансов и посмотрите, нет ли сеанса с большим временем вызова.
  2. Проверьте блокировки: кто держит, кто ждёт.
  3. Посмотрите нагрузку на сервере (процессор, память процесса rphost).
  4. Сопоставьте с расписанием фоновых заданий.
  5. Если картина не складывается, включите технологический журнал на час и смотрите долгие вызовы.
Что вы увидели в списке сеансов?

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

Можно ли посмотреть сеансы в файловой базе через консоль серверов?
Нет. Консоль работает только с кластером серверов. В файловой базе используйте окно «Активные пользователи» внутри самой программы.
Почему в списке есть пользователи, которых давно нет на работе?
Это зависшие сеансы после аварийного закрытия клиента или обрыва связи. Сервер держит их до истечения тайм-аута. Завершите вручную в консоли или через rac.
Чем фоновое задание отличается от пользователя в списке?
У фонового задания в колонке «Приложение» стоит BackgroundJob, а имя пользователя может быть пустым или служебным. Оно выполняет регламентные операции и не занимает клиентскую лицензию.
Где взять идентификатор сеанса для rac?
Из вывода команды session list: поле session содержит нужный идентификатор. Номер сеанса в консоли — другая величина, он не подходит для --session.
Нужен ли пароль, чтобы подключиться к кластеру?
Только если администратор кластера задан. Если пароль не требуется, консоль и rac подключаются без него. Для боевого сервера лучше задать.