Кто сейчас работает в базе 1С: сеансы, зависания и блокировки под контролем

· 10 мин

Содержание

Активных пользователей в 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. Запустите «Администрирование серверов 1С:Предприятия» из меню «Пуск».
  2. На узле «Central 1C:Enterprise 8.3 servers» выберите в контекстном меню Создать → Центральный сервер 1С:Предприятия 8.3.
  3. Укажите имя сервера и порт 1540 (если не меняли при установке).
  4. Раскройте Кластеры → <ваш кластер> → Информационные базы → <база> → Сеансы.

Если на кластере назначены администраторы, консоль спросит логин и пароль администратора кластера. Это не пользователь базы 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С, а не СУБД. Где их смотреть:

  1. В консоли раскройте Информационные базы → <база> → Блокировки. Там видно, какой сеанс и какой объект заблокировал.
  2. В списке сеансов найдите сеанс с заполненной колонкой «Заблокировано упр.» — в ней номер сеанса-«виновника».
  3. Найдите сеанс с этим номером: это и есть тот, кто держит данные.

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

Блокировки в 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С и завершить сеанс

Завершённый сеанс теряет всё, что пользователь не записал. Предупредите человека и, если он в документе, дайте пару минут на сохранение.

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

  1. Откройте Информационные базы → <база> → Сеансы.
  2. Выделите сеанс (можно несколько с Ctrl).
  3. В контекстном меню выберите «Удалить» и подтвердите.

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

Отдельно в консоли можно перезапустить рабочий процесс 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, тестирование и исправление), одного завершения мало. В типовых конфигурациях есть «Блокировка работы пользователей» в разделе Администрирование → Обслуживание:

  1. Укажите время начала, окончания и текст для пользователей.
  2. Задайте код разрешения — с ним администратор сможет войти в заблокированную базу.
  3. Установите блокировку. Работающие пользователи получат предупреждение и будут отключены, новые не войдут.

В клиент-серверной базе такая же блокировка ставится в консоли: свойства информационной базы, флажок «Блокировка начала сеансов включена», время и код разрешения. Вход с кодом — параметр запуска /UC<код>.

Перед массовым отключением пользователей
Выполнено: 0 / 5

Частые ошибки при работе с сеансами

  • ❌ Завершать сеанс, не посмотрев приложение. Под именем бухгалтера может работать фоновое задание обмена. Вы отключите не человека, а выгрузку на сайт.
  • ❌ Искать пользователя по компьютеру в SQL. Хост в СУБД — сервер 1С. Связывайте по номеру соединения через консоль.
  • ❌ Перезапускать сервер 1С ради одного зависшего сеанса. Пострадают все, а причина — один длинный вызов — останется.
  • ❌ Удалять сеанс, который сразу появляется снова. Пока источник (интеграция, клиент на терминале) работает, он переподключится. Сначала остановите источник.
  • ❌ Путать пользователей базы и администраторов кластера. Пароль администратора 1С не подходит к консоли, и наоборот.

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

Почему в списке активных пользователей висит человек, который ушёл домой?
Скорее всего, это спящий сеанс после обрыва связи или клиент, оставленный открытым на терминальном сервере. Проверьте колонки «Спящий» и «Последняя активность» в консоли.
Можно ли посмотреть активных пользователей без прав администратора?
Нет. И стандартная форма, и обработка в типовых конфигурациях требуют административных прав в базе. Консоль кластера требует ещё и учётную запись администратора кластера, если она задана.
Занимает ли спящий сеанс лицензию?
Может занимать, пока не завершён. Какие сеансы держат лицензии, показывает rac session list --licenses или узел «Лицензии» в консоли.
Как узнать, кто работал в базе вчера?
Список активных пользователей показывает только текущий момент. Историю входов и выходов смотрите в журнале регистрации с отбором по событиям начала и завершения сеанса.
Почему не видно сеансов файловой базы в консоли сервера?
Файловая база не обслуживается кластером 1С. Её сеансы видны только изнутри программы: в Конфигураторе или в обработке «Активные пользователи».