Сеансы 1С: кто в базе, что делает и как его отключить
Содержание
Список сеансов открывается в самой базе: в режиме 1С:Предприятие это раздел «Администрирование» и пункт «Активные пользователи», в Конфигураторе — меню «Администрирование» и тот же пункт. Для клиент-серверной базы подробности (память, блокировки, зависшие вызовы) видны только в консоли администрирования серверов 1С или через утилиту rac.
Ниже — все три пути: от безопасного к полному. Начните с первого. Если его хватает, консоль не нужна.
Какой способ выбрать
Способ зависит от того, где лежит база и что вы хотите узнать.
| Способ | Где работает | Что покажет | Нужны права |
|---|---|---|---|
| Окно «Активные пользователи» | файловая и серверная база | кто сидит, с какого компьютера, в каком режиме | администратор базы |
| Консоль администрирования серверов | только серверная база | сеансы, соединения, блокировки, нагрузку | администратор кластера |
Утилита rac | только серверная база | то же, но из командной строки и скриптов | администратор кластера |
Если вам нужно только понять, кто мешает обновлению или удалению, хватит первого способа. Если база тормозит, а в окне пользователей всё спокойно, идите в консоль.
Просмотр сеансов в самой базе
Это самый быстрый способ. Он работает и для файловой, и для серверной базы.
Через пользовательский режим
- Откройте базу под пользователем с правом администратора.
- Перейдите в раздел «Администрирование». В части конфигураций он называется «Администрирование» ещё и в подразделе «Поддержка и обслуживание».
- Найдите пункт «Активные пользователи» (проще всего через поиск по меню и слову «активные»).
- В открывшемся списке смотрите колонки: пользователь, компьютер, приложение, время начала сеанса.
Колонка «Приложение» подскажет тип клиента: тонкий клиент, веб-клиент, толстый клиент, фоновое задание. Фоновые задания в списке — это не люди. Регламентные операции (закрытие месяца , обмен, загрузка) выглядят именно так.
Через Конфигуратор
Меню «Администрирование» → «Активные пользователи». Окно такое же. Плюс одно: в Конфигураторе вы видите и его собственный сеанс, и сеансы других разработчиков. Именно из-за них часто не удаётся сохранить конфигурацию .
Свой сеанс в списке выделен. Если вы видите двух одинаковых пользователей с одного компьютера, это не ошибка: один сеанс — клиент, второй — Конфигуратор или открытая вторая копия.
Что делать с найденными сеансами
Список в базе только показывает. Завершить чужой сеанс отсюда можно не всегда, зависит от режима. Надёжнее сделать это в консоли сервера (следующий раздел) или попросить пользователя закрыть программу.
Прежде чем отключать человека, убедитесь, что он не в середине проведения большого документа или закрытия месяца. Принудительный обрыв оставит документ непроведённым, а иногда и заблокированную запись.
Какие права нужны
В окне «Активные пользователи» достаточно роли администратора базы. Консоль и rac требуют другого уровня: администратора кластера, а иногда ещё и учётной записи ОС, под которой запущена служба сервера.
Частая ситуация: вы администратор в самой базе, но консоль выдаёт ошибку авторизации. Это нормально, права на базу и права на кластер задаются раздельно. Попросите системного администратора добавить вас или передать учётные данные администратора кластера.
Ещё одно правило из практики. Не работайте в консоли под учёткой, которой пользуются все. Тогда в журнале не видно, кто именно завершил сеанс, и разбираться с последствиями приходится вслепую.
Консоль администрирования серверов 1С
Консоль ставится вместе с платформой, отдельным компонентом «Администрирование серверов 1С:Предприятия». Запускается как оснастка и подключается к ragent — главному процессу сервера, который по умолчанию слушает порт 1540.
Как найти сеансы в дереве
- Добавьте сервер: «Центральные серверы 1С:Предприятия» → «Создать» → «Центральный сервер» и укажите имя или адрес машины.
- Раскройте нужный кластер (часто он один, порт 1541).
- Откройте узел «Информационные базы» и выберите свою базу.
- Внутри базы будут три узла: «Сеансы», «Соединения» и «Блокировки».
Разница между сеансом и соединением нужна, когда что-то зависло. Сеанс — это работа пользователя в базе. Соединение — это сетевая связь клиента с сервером. Один сеанс опирается на одно или несколько соединений. Бывают «осиротевшие» соединения без живого сеанса: клиент упал, а сервер ещё держит связь.
Колонки, которые стоит читать
Консоль показывает много, но для диагноза хватает нескольких колонок.
- ⏱ Начало сеанса и Последняя активность — если разница в часы, сеанс висит просто так и держит лицензию.
- 👤 Пользователь и Компьютер — кому звонить.
- 🧩 Приложение —
1CV8C,WebClient,BackgroundJob,COMConnection,Designer. - 🧠 Память и Чтение/запись — кто грузит сервер.
- 🔒 Заблокирован СУБД и Заблокирован управляемой блокировкой — на кого он ждёт.
- 📞 Текущий вызов и Время вызова СУБД — сколько секунд идёт один запрос.
Как завершить сеанс
Правый клик по строке сеанса → «Удалить» (в части версий пункт называется «Завершить сеанс»). Консоль спросит подтверждение. Если сеанс не уходит, найдите его соединения и отключите их там.
Для массового случая перед обновлением удобнее запретить новые подключения: в свойствах информационной базы отметьте «Блокировка начала сеансов включена», задайте начало и конец, а в поле сообщения напишите причину и время возобновления. Сеансы тех, кто уже в базе, при этом нужно завершить отдельно.
Поставьте ещё код разрешения (параметр «Код разрешения» в той же форме). Тогда вы сами зайдёте в заблокированную базу с ключом /UC <код>, а остальных система не пустит.
Блокировки и взаимоблокировки
Когда пользователь жалуется «1С висит», причина чаще всего в блокировке. Один сеанс держит ресурс, второй ждёт.
Где смотреть
В консоли откройте узел «Блокировки» в нужной базе. Там видно, какой сеанс держит ресурс, а какой ждёт. В списке сеансов рядом смотрите колонки о блокировках: значение в них — номер сеанса, на который вы упёрлись.
Есть два вида ожиданий:
- Блокировки СУБД — держит сама база данных (SQL Server, PostgreSQL). Видны в колонке «Заблокирован СУБД».
- Управляемые блокировки — их ставит код конфигурации (
Блокировка.Заблокировать()), например, на записи регистров при проведении. Колонка «Заблокирован управляемой блокировкой».
Что такое взаимоблокировка
Это два сеанса, каждый держит то, чего ждёт другой. Простой пример:
- Сеанс А провёл накладную и держит остатки по товару X, ожидая остатки по товару Y.
- Сеанс Б провёл другую накладную: держит Y, ждёт X.
- Ни один не может продолжить.
Платформа обычно сама ловит такую пару и завершает одну из транзакций с ошибкой. Пользователь увидит сообщение вроде «Превышено допустимое время ожидания блокировки» или об обнаружении взаимоблокировки. Самое разумное действие — повторить операцию. Если взаимоблокировка повторяется на одних и тех же документах, это уже задача для программиста: порядок блокировки ресурсов надо унифицировать.
Не убивайте сеанс, который ждёт, пока не нашли того, кто держит. Ожидающий — жертва. Виноват держащий: найдите по номеру из колонки блокировки.
Диагностика через технологический журнал
Если проблема плавающая, консоль её не поймает: вы заглянули, а блокировки уже нет. Включите технологический журнал (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 мест достаточно трёх забытых сеансов, чтобы четвёртый коллега получил отказ в запуске. Проверьте, что в «Начале сеанса» нет вчерашних дат.
Практический порядок разбора жалобы «всё тормозит»
- Откройте список сеансов и посмотрите, нет ли сеанса с большим временем вызова.
- Проверьте блокировки: кто держит, кто ждёт.
- Посмотрите нагрузку на сервере (процессор, память процесса
rphost). - Сопоставьте с расписанием фоновых заданий.
- Если картина не складывается, включите технологический журнал на час и смотрите долгие вызовы.
Частые вопросы
Можно ли посмотреть сеансы в файловой базе через консоль серверов?
Почему в списке есть пользователи, которых давно нет на работе?
rac.Чем фоновое задание отличается от пользователя в списке?
BackgroundJob, а имя пользователя может быть пустым или служебным. Оно выполняет регламентные операции и не занимает клиентскую лицензию.Где взять идентификатор сеанса для rac?
session list: поле session содержит нужный идентификатор. Номер сеанса в консоли — другая величина, он не подходит для --session.Нужен ли пароль, чтобы подключиться к кластеру?
rac подключаются без него. Для боевого сервера лучше задать.