Кто сейчас работает в базе 1С: активные пользователи, сеансы и их отключение

· 10 мин

Содержание

Посмотреть пользователей в сети в 1С быстрее всего через Администрирование → Обслуживание → Активные пользователи в любой типовой конфигурации на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP). Если такого раздела нет или нет прав, откройте Главное меню → Все функции → Стандартные → Активные пользователи: это команда самой платформы, она есть в любой базе 8.3. В Конфигураторе тот же список — в меню Администрирование → Активные пользователи.

Эти способы показывают, кто открыл базу прямо сейчас. Для истории входов нужен журнал регистрации, а для управления сеансами в клиент-серверном варианте — консоль кластера или утилита rac. Механизм общий для платформы, поэтому пути ниже одинаковы в разных конфигурациях, кроме раздела БСП.

Список активных пользователей в режиме 1С:Предприятие

Начните с обработки «Активные пользователи». Она открывается без Конфигуратора и не требует остановки работы.

Где открыть

СпособПутьКогда подходит
Раздел БСПАдминистрирование → Обслуживание → Активные пользователиТиповые конфигурации, роль администратора
Стандартная функция платформыГлавное меню → Все функции → Стандартные → Активные пользователиЛюбая база 8.3, в том числе самописная
КонфигураторАдминистрирование → Активные пользователиВы уже в Конфигураторе

Если пункта Все функции нет в главном меню, включите его: Главное меню → Сервис → Параметры → флажок «Отображать команду “Все функции”».

Что показывает список

В таблице по строке на каждый сеанс. Основные колонки:

  • 👤 Пользователь — имя из списка пользователей информационной базы;
  • 💻 Компьютер — сетевое имя машины, с которой подключились;
  • 🧩 Приложение — тонкий клиент, толстый клиент, веб-клиент, Конфигуратор, фоновое задание, COM-соединение;
  • 🕐 Начало работы — время старта сеанса;
  • 🔢 Сеанс — номер сеанса, по нему удобно искать человека в журнале регистрации.

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

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

Узнать, кто в базе, программно

Если нужен список для своей обработки или проверки перед регламентной операцией, платформа отдаёт его одной функцией. Код выполняется на сервере:

&НаСервере
Процедура ПоказатьСеансыНаСервере()
	ТекущийНомер = НомерСеансаИнформационнойБазы();
	Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
		Если Сеанс.НомерСеанса = ТекущийНомер Тогда
			Продолжить;
		КонецЕсли;
		Имя = ?(Сеанс.Пользователь = Неопределено, "<без пользователя>", Сеанс.Пользователь.Имя);
		Сообщить(СтрШаблон("%1 | %2 | %3 | %4",
			Имя,
			Сеанс.ИмяКомпьютера,
			ПредставлениеПриложения(Сеанс.ИмяПриложения),
			Сеанс.НачалоСеанса));
	КонецЦикла;
КонецПроцедуры

Свойство Пользователь бывает пустым, если в базе не заведено ни одного пользователя. Поэтому в примере стоит проверка на Неопределено.

Сеансы в Конфигураторе

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

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

Что делать дальше:

  1. Отсортируйте список по колонке «Приложение».
  2. Строки «Тонкий клиент» и «Толстый клиент» — живые люди. Попросите их выйти или поставьте блокировку (раздел про завершение сеансов ниже).
  3. Строки «Фоновое задание» — регламентные задания. Их останавливает блокировка регламентных заданий, а не звонок бухгалтеру.
  4. Строки «COM-соединение» или «Внешнее соединение» — обмены и внешние программы. Найдите, какая служба или скрипт держит подключение, и остановите их.

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

История входов: журнал регистрации

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

Где открыть:

  • в режиме Предприятия: Администрирование → Обслуживание → Журнал регистрации или Все функции → Стандартные → Журнал регистрации;
  • в Конфигураторе: Администрирование → Журнал регистрации.

Как отобрать входы и выходы

  1. Нажмите «Установить отбор».
  2. Задайте период, например вчерашний день.
  3. В поле «События» оставьте только Сеанс. Начало и Сеанс. Завершение.
  4. При необходимости ограничьте пользователя и компьютер.
  5. Примените отбор.

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

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

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

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

В клиент-серверном варианте самая полная картина — в консоли администрирования серверов 1С. Она показывает сеансы всех баз кластера, включая тех, кто «завис» и уже не отображается у пользователя.

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

Откройте консоль, разверните Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер>. Дальше два пути:

  • Информационные базы → <база> → Сеансы — пользователи одной базы;
  • Сеансы на уровне кластера — все базы сразу.

Кроме знакомых колонок здесь есть служебные. Самые полезные:

  • Последняя активность — когда сеанс в последний раз делал серверный вызов. Сеанс без активности несколько часов — первый кандидат на отключение;
  • Спящий — сеанс переведён в спящее состояние, потому что клиент потерял связь;
  • Время вызова (текущее) — сколько уже выполняется текущий серверный вызов;
  • колонки с лицензиями — какую лицензию занял сеанс.

Если консоль не запускается с ошибкой о незарегистрированном классе, перерегистрируйте компонент от имени администратора: regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll". Версия должна совпадать с версией сервера.

Утилита rac

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

Базовая последовательность:

rem 1. Узнать идентификатор кластера
rac cluster list

rem 2. Список баз кластера, чтобы найти UUID нужной
rac infobase summary list --cluster=<uuid-кластера>

rem 3. Все сеансы кластера
rac session list --cluster=<uuid-кластера>

rem 4. Сеансы одной базы
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>

rem 5. Кто какие лицензии занял
rac session list --cluster=<uuid-кластера> --licenses

Если у кластера задан администратор, к командам добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. Если ras запущен на другой машине, укажите её адрес и порт последним аргументом, например rac session list --cluster=<uuid> srv1c:1545.

В выводе каждого сеанса ищите поля user-name, host, app-id, started-at и last-active-at. Значение app-id расшифровывается так: 1CV8C — тонкий клиент, 1CV8 — толстый, WebClient — веб-клиент, Designer — Конфигуратор, BackgroundJob — фоновое задание, COMConnection — внешнее соединение.

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

Кто держит блокировку и почему база «встала»

Частая ситуация: все сидят, документы не проводятся, отчёт крутится бесконечно, а через 20 секунд кто-то получает Конфликт блокировок при выполнении транзакции или Превышено максимальное время ожидания предоставления блокировки. Значит, один сеанс держит данные, а остальные стоят в очереди.

Как найти виновника:

  1. В консоли кластера откройте список сеансов базы.
  2. Отсортируйте по колонке «Время вызова (текущее)». Сверху окажется сеанс с самым долгим вызовом.
  3. Посмотрите колонки блокировок. В rac это поля blocked-by-dbms и blocked-by-ls: в них стоит номер сеанса, который блокирует текущий на уровне СУБД или менеджера управляемых блокировок.
  4. Пройдите по цепочке: сеанс A ждёт B, B ждёт C. Ищите того, кто никого не ждёт, но держит остальных.
  5. В узле Блокировки консоли видно, какие объекты захвачены выбранным сеансом или соединением.

Типичные «держатели» на практике:

Если сеанс работает осмысленно (например, идёт закрытие месяца), проще подождать. Если он висит часами без активности, переходите к принудительному завершению.

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

Как отключить пользователя и не потерять данные

Принудительно завершать сеанс можно, но последствия нужно понимать заранее.

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

Способы по сценариям

СпособГдеКогда подходитРиски
Попросить выйтиТелефон, мессенджерРабочее время, 1–3 человекаНет
Блокировка начала сеансовАдминистрирование → Обслуживание → Блокировка работы пользователейПлановые работы, обновлениеПользователи получают предупреждение и закрываются по таймеру
Блокировка в свойствах базыКонсоль кластера → свойства базыНет доступа в саму базуНовые сеансы не откроются до снятия флажка
Удаление одного сеансаКонсоль кластера → сеанс → «Удалить»Зависший сеанс, держатель блокировкиПотеря незаписанных данных
rac session terminateКомандная строкаСкрипты, Linux-серверТо же, что выше

Команда завершения через rac:

rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

UUID сеанса берите из вывода rac session list, это поле session, а не номер сеанса из колонки.

Блокировка с кодом разрешения

Для обновления удобнее всего блокировка с кодом. В разделе БСП «Блокировка работы пользователей» или в свойствах базы в консоли задайте:

  1. время начала и окончания блокировки;
  2. текст сообщения, например «Обновление программы до 19:30»;
  3. код разрешения — любую строку.

Сами вы входите с параметром запуска /UC<код>, например /UC7391 в поле «Дополнительные параметры запуска» в окне списка баз. Остальным вход закрыт.

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

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

Главное по безопасности: не давайте пароль администратора кластера всем, кто «иногда отключает зависших». Им достаточно обработки «Активные пользователи» с правом администратора в базе.

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

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

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