Кто сейчас работает в базе 1С: сеансы, зависания и блокировки под контролем
Содержание
Активных пользователей в 1С 8.3 быстрее всего посмотреть в Конфигураторе: Администрирование → Активные пользователи. В пользовательском режиме тот же список открывается через Все функции → Стандартные → Активные пользователи. Отключить пользователя
из этих окон нельзя: для этого нужна консоль администрирования серверов 1С, утилита rac или обработка «Активные пользователи» в типовой конфигурации.
Частое заблуждение — считать, что список активных пользователей равен списку живых людей за компьютерами. В нём есть фоновые задания, COM-соединения, веб-сервисы и «спящие» сеансы, у которых давно оборвалась связь с клиентом. Поэтому первая задача — понять, какой сеанс чей, и только потом что-то завершать.
Где посмотреть активных пользователей: три уровня
Инструмент зависит от того, что нужно: просто увидеть список или разобраться с зависанием и снять сеанс.
| Где смотреть | Что видно | Можно завершить сеанс | Для какой базы |
|---|---|---|---|
| Конфигуратор, «Все функции → Стандартные» | пользователь, компьютер, приложение, время начала | нет | файловая и клиент-серверная |
| Обработка «Активные пользователи» в БП 3.0, ЗУП 3.1, УТ 11 | то же плюс команды управления | да | файловая и клиент-серверная |
| Консоль администрирования серверов 1С | сеансы, соединения, блокировки, рабочие процессы, время вызовов | да | только клиент-серверная |
Утилита rac через сервер ras | всё то же, в текстовом виде, для скриптов | да | только клиент-серверная |
| Запросы к MS SQL или PostgreSQL | блокировки на уровне СУБД | нет (только соединение СУБД) | только клиент-серверная |
💡 В файловой базе нет сервера, а значит, нет консоли и rac. Там список виден только изнутри 1С, а «выгнать» человека можно через блокировку сеансов или закрыв клиент на его компьютере.
Сеансы в консоли администрирования серверов 1С
Консоль — это оснастка MMC, которая ставится вместе с сервером 1С (компонент «Администрирование сервера 1С:Предприятия» в установщике). Она подключается к агенту сервера по порту 1540.
Подключение и дерево кластера
- Запустите «Администрирование серверов 1С:Предприятия» из меню «Пуск».
- На узле «Central 1C:Enterprise 8.3 servers» выберите в контекстном меню
Создать → Центральный сервер 1С:Предприятия 8.3. - Укажите имя сервера и порт
1540(если не меняли при установке). - Раскройте
Кластеры → <ваш кластер> → Информационные базы → <база> → Сеансы.
Если на кластере назначены администраторы, консоль спросит логин и пароль администратора кластера. Это не пользователь базы 1С, а отдельная учётная запись кластера.
На уровне кластера есть общий узел «Сеансы» — там видны сеансы всех баз сразу. Удобно, когда не знаете, в какой базе работает нужный человек.
Какие колонки смотреть
Список сеансов широкий, большинство колонок по умолчанию прокручиваются вправо. Для диагностики важны:
- 👤 Пользователь и Компьютер — кто и откуда. Для сеансов через терминальный сервер в «Компьютере» будет имя терминального сервера, а не рабочего места.
- 🧩 Приложение — тонкий клиент, толстый клиент, Конфигуратор, веб-клиент, фоновое задание, COM-соединение, веб-сервис.
- 🕒 Начало работы и Последняя активность — сколько живёт сеанс и когда он последний раз что-то делал.
- 😴 Спящий — сеанс, у которого пропала связь с клиентом. Платформа держит его какое-то время, чтобы пользователь мог переподключиться без потери данных.
- 🔒 Заблокировано СУБД и Заблокировано упр. — номер сеанса, который держит блокировку, мешающую этому сеансу. Пусто — никто не мешает.
- ⏳ Время вызова (текущее) и Время вызова СУБД (текущее) — сколько уже длится текущая серверная операция. Большие значения у одного сеанса — первый кандидат на «зависание».
Если консоль не открывается
Типичный симптом после обновления платформы: оснастка пишет, что не может создать объект, или вообще не открывается. Причина — зарегистрирована библиотека radmin.dll от старой версии платформы. Её перерегистрируют из командной строки, запущенной от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути подставьте свой — тот, что совпадает с версией сервера. Разрядность библиотеки должна совпадать с разрядностью установленной консоли.
Монитор пользователей изнутри программы 1С
Конфигуратор и стандартная форма
В Конфигураторе список открывается через Администрирование → Активные пользователи. В пользовательском режиме — через Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» в меню нет, включите его: Сервис и настройки → Параметры → Отображать команду "Все функции".
Обе формы только показывают сеансы. Права на просмотр есть у пользователя с правом «Администрирование» в базе; обычный бухгалтер увидит пустой список или ошибку доступа.
Обработка «Активные пользователи» в типовых конфигурациях
В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА 2, ERP) есть своя форма. Путь к ней: раздел Администрирование → Обслуживание, ссылка «Активные пользователи».
Отличия от стандартной формы:
- ✅ можно завершить выделенный сеанс прямо из списка;
- ✅ можно открыть журнал регистрации с отбором по выбранному пользователю;
- ✅ видно, какой сеанс текущий (ваш собственный).
В клиент-серверной базе при завершении сеанса программа спросит параметры администрирования кластера — те же логин и пароль, что для консоли. Без них завершить чужой сеанс не получится.
Как найти зависший или фоновый сеанс
«Пользователь закрыл программу, а база всё равно пишет, что он работает» — самый частый повод открыть список сеансов. Варианты обычно такие.
Спящий сеанс после обрыва связи
Отключился Wi-Fi, ноутбук ушёл в сон, упал терминальный сервер — сеанс помечается как спящий. Пользователь при следующем входе часто попадает обратно в свой же сеанс. Если не попал, спящий сеанс через некоторое время завершит сама платформа.
Ждать не обязательно: спящий сеанс без активной работы можно завершить вручную. Несохранённые данные в нём уже не спасти — клиента на той стороне нет.
Долгий серверный вызов
Признак — у одного сеанса растёт «Время вызова (текущее)», а «Последняя активность» не меняется. Обычно это тяжёлый отчёт, групповое перепроведение, закрытие месяца или выгрузка.
Прежде чем завершать, спросите человека. Закрытие месяца, прерванное на середине, придётся запускать заново, а 40 минут работы пропадут.
Фоновые и регламентные задания
В колонке «Приложение» у них стоит «Фоновое задание». Пользователь в таких сеансах — тот, от чьего имени запущено задание, или пусто для регламентных заданий без явного пользователя.
Что это за задание, удобнее смотреть в самой 1С: Администрирование → Обслуживание → Регламентные и фоновые задания. Там видно имя задания, время старта и состояние.
Чтобы на время работ регламентные задания не стартовали, в консоли откройте свойства информационной базы и отметьте «Блокировка регламентных заданий включена».
COM-соединения и веб-сервисы
Сеансы с приложением «COM-соединение» создают внешние программы: обмен с сайтом, интеграция с другой учётной системой, скрипты резервного копирования. «Повисший» COM-сеанс часто означает, что внешняя программа упала, не закрыв подключение. Завершить его можно, но сначала узнайте у владельца интеграции, что она делала.
Блокировки: кто кого держит в 1С и в СУБД
Жалоба «всё зависло, документ не проводится» часто означает не зависший сеанс, а ожидание блокировки. Один сеанс держит данные, остальные стоят в очереди.
Управляемые блокировки 1С
В конфигурациях с управляемым режимом блокировок (все современные типовые) блокировки держит менеджер блокировок кластера 1С, а не СУБД. Где их смотреть:
- В консоли раскройте
Информационные базы → <база> → Блокировки. Там видно, какой сеанс и какой объект заблокировал. - В списке сеансов найдите сеанс с заполненной колонкой «Заблокировано упр.» — в ней номер сеанса-«виновника».
- Найдите сеанс с этим номером: это и есть тот, кто держит данные.
Если ожидание длится дольше таймаута, пользователь получает ошибку «Превышено время ожидания захвата блокировки» — так платформа сама обрывает ожидание.
Блокировки в MS SQL Server
Колонка «Заблокировано СУБД» показывает блокировки на уровне сервера баз данных. Подробности смотрят в SQL Server Management Studio. Запрос показывает, кто ждёт и кого:
SELECT
r.session_id,
r.blocking_session_id,
r.wait_type,
r.wait_time / 1000 AS wait_sec,
DB_NAME(r.database_id) AS db_name,
t.text AS query_text
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.blocking_session_id <> 0;
blocking_session_id — номер соединения SQL, которое мешает. Для быстрой оценки подойдёт и EXEC sp_who2 — колонка BlkBy.
Блокировки в PostgreSQL
В PostgreSQL ту же картину даёт функция pg_blocking_pids:
SELECT
pid,
pg_blocking_pids(pid) AS blocked_by,
state,
now() - query_start AS duration,
left(query, 200) AS query_text
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;
Как связать соединение СУБД с пользователем 1С
Это главный приём, без которого SQL-запросы мало что дают. В MS SQL и PostgreSQL все соединения идут от имени рабочего процесса 1С (rphost), а не от компьютера пользователя. Имя хоста и логин у всех одинаковые.
Связка такая: в списке сеансов консоли есть колонка «Соединение с СУБД». Пока сеанс выполняет обращение к базе данных, там стоит номер соединения — тот же, что session_id в MS SQL или pid в PostgreSQL. Нашли «виновника» в SQL — ищете этот номер в консоли и получаете пользователя и компьютер.
Таблицы в базе 1С называются служебно: _Document512, _AccumRg1024. Какому документу или регистру соответствует таблица, покажет метод ПолучитьСтруктуруХраненияБазыДанных(), вызванный в обработке или консоли запросов.
Не завершайте соединение командой KILL в MS SQL или pg_terminate_backend в PostgreSQL как основной способ. Сеанс 1С при этом получит ошибку, а транзакция откатится. Правильнее завершить сеанс 1С из консоли — платформа сама закроет соединение.
Как отключить пользователя 1С и завершить сеанс
Завершённый сеанс теряет всё, что пользователь не записал. Предупредите человека и, если он в документе, дайте пару минут на сохранение.
Через консоль администрирования
- Откройте
Информационные базы → <база> → Сеансы. - Выделите сеанс (можно несколько с Ctrl).
- В контекстном меню выберите «Удалить» и подтвердите.
Пользователь увидит сообщение о завершении сеанса администратором. Если клиент на его стороне ещё открыт, он может войти снова — значит, для работ нужна ещё и блокировка.
Отдельно в консоли можно перезапустить рабочий процесс rphost в узле «Рабочие процессы». Это крайняя мера: оборвутся все сеансы всех баз, обслуживаемых этим процессом. Делайте это только вне рабочего времени или когда база и так недоступна всем.
Через rac из командной строки
Для скриптов и удалённого администрирования на сервере должна работать служба ras (по умолчанию порт 1545). Дальше rac из каталога bin платформы:
rem список кластеров — берём UUID кластера
rac cluster list
rem сеансы кластера; при администраторе кластера добавьте --cluster-user и --cluster-pwd
rac session list --cluster=<uuid-кластера>
rem завершить сеанс по его UUID из предыдущего списка
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Чтобы посмотреть, какие сеансы заняли клиентские лицензии, есть rac session list --licenses. Остальные параметры — в справке rac help session.
Блокировка сеансов перед регламентными работами
Если нужно выгнать всех и не пустить обратно (обновление, загрузка .dt, тестирование и исправление), одного завершения мало. В типовых конфигурациях есть «Блокировка работы пользователей» в разделе Администрирование → Обслуживание:
- Укажите время начала, окончания и текст для пользователей.
- Задайте код разрешения — с ним администратор сможет войти в заблокированную базу.
- Установите блокировку. Работающие пользователи получат предупреждение и будут отключены, новые не войдут.
В клиент-серверной базе такая же блокировка ставится в консоли: свойства информационной базы, флажок «Блокировка начала сеансов включена», время и код разрешения. Вход с кодом — параметр запуска /UC<код>.
Частые ошибки при работе с сеансами
- ❌ Завершать сеанс, не посмотрев приложение. Под именем бухгалтера может работать фоновое задание обмена. Вы отключите не человека, а выгрузку на сайт.
- ❌ Искать пользователя по компьютеру в SQL. Хост в СУБД — сервер 1С. Связывайте по номеру соединения через консоль.
- ❌ Перезапускать сервер 1С ради одного зависшего сеанса. Пострадают все, а причина — один длинный вызов — останется.
- ❌ Удалять сеанс, который сразу появляется снова. Пока источник (интеграция, клиент на терминале) работает, он переподключится. Сначала остановите источник.
- ❌ Путать пользователей базы и администраторов кластера. Пароль администратора 1С не подходит к консоли, и наоборот.
Частые вопросы
Почему в списке активных пользователей висит человек, который ушёл домой?
Можно ли посмотреть активных пользователей без прав администратора?
Занимает ли спящий сеанс лицензию?
rac session list --licenses или узел «Лицензии» в консоли.