Кто сейчас работает в базе 1С: консоль кластера, rac, код и журнал
Содержание
Быстрее всего список активных пользователей 1С получить из самой программы: Главное меню → Функции для технического специалиста → Стандартные → Активные пользователи. В Конфигураторе та же форма открывается через Администрирование → Активные пользователи. Для клиент-серверной базы полную картину (с рабочими процессами, фоновыми заданиями и лицензиями) даёт консоль администрирования серверов 1С или утилита rac.
Частое заблуждение — искать пользователей в справочнике «Пользователи». Там лежат все учётные записи базы, а не те, кто сейчас в ней работает. Активные — это открытые сеансы: человек запустил клиент, фоновое задание выполняется или к базе подключилась внешняя программа.
Какой способ выбрать: сравнение
Способ зависит от вида базы и от того, что вы хотите узнать. Файловая база не имеет кластера, поэтому часть инструментов для неё не работает .
| Способ | Файловая база | Клиент-сервер | Что показывает | Права |
|---|---|---|---|---|
| Форма «Активные пользователи» | ✅ | ✅ | Сеансы текущей базы | Администратор базы |
| Консоль администрирования серверов | — | ✅ | Сеансы всех баз кластера, процессы, блокировки СУБД | Администратор кластера |
Утилита rac | — | ✅ | То же, что консоль, но текстом для скриптов | Администратор кластера |
| Запрос к СУБД | — | ✅ | Только соединения рабочих процессов с СУБД | Доступ к СУБД |
| Встроенный язык | ✅ | ✅ | Сеансы текущей базы в коде | Административные права |
| Журнал регистрации | ✅ | ✅ | Кто входил и выходил в прошлом | Администратор базы |
Нужно разово посмотреть, кто держит базу перед обновлением, — хватит формы «Активные пользователи». Нужна регулярная выгрузка или отчёт для руководителя — берите rac или код.
Активные пользователи в консоли администрирования серверов 1С
Консоль — оснастка MMC, она ставится вместе с сервером 1С. В меню «Пуск» ищите «Администрирование серверов 1С Предприятия». Консоль подключается к агенту сервера (по умолчанию порт 1540).
Как открыть список сеансов
- Откройте консоль и разверните
Central 1C:Enterprise 8.3 servers. - Если сервера в дереве нет, добавьте его: правый клик →
Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя компьютера. - Разверните сервер →
Кластеры→ нужный кластер. - Для всех баз сразу откройте узел
Сеансыкластера. - Для одной базы:
Информационные базы→ имя базы →Сеансы.
Если на кластере задан администратор, консоль спросит логин и пароль.
Что смотреть в таблице сеансов
- 👤 Пользователь — имя из списка пользователей базы.
- 💻 Компьютер — с какого ПК запущен клиент.
- 🧩 Приложение — тонкий клиент, Конфигуратор, фоновое задание и т. д. (расшифровка ниже).
- 🕐 Начало сеанса и Последняя активность — помогают отличить «зависший» сеанс от рабочего.
- 🔒 Блокировано СУБД и Захвачено СУБД — кто кого ждёт при блокировках.
Самые частые значения в колонке «Приложение»:
| Идентификатор | Что это |
|---|---|
1CV8C | Тонкий клиент |
1CV8 | Толстый клиент |
WebClient | Веб-клиент через браузер |
Designer | Конфигуратор |
BackgroundJob | Фоновое или регламентное задание |
COMConnection | Внешнее подключение через COM |
WSConnection, HTTPServiceConnection | Веб-сервисы и HTTP-сервисы |
Консоль не открывается
Типичная ситуация: после установки новой версии платформы консоль пишет, что не может создать оснастку, или пустая. Причина — зарегистрирована библиотека radmin.dll от другой версии. Перерегистрируйте её из командной строки, запущенной от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"
Номер версии в пути замените на свой. Версия консоли должна совпадать с версией сервера: консоль 8.3.22 к серверу 8.3.24 подключится с ошибкой.
Просмотр сеансов из режима Предприятия и из Конфигуратора
Этот способ работает и для файловых, и для серверных баз. Консоль не нужна, права администратора кластера тоже.
Через стандартную функцию
- Включите показ служебных функций:
Главное меню → Сервис → Параметры, флажок, который отображает команду функций для технического специалиста. В ранних релизах 8.3 команда называлась «Все функции». - Откройте
Главное меню → Функции для технического специалиста. - В ветке
СтандартныевыберитеАктивные пользователи.
Форма показывает пользователя, компьютер, приложение, время начала и номер сеанса. Список не обновляется сам — жмите кнопку обновления на панели формы.
Через раздел «Администрирование» в типовых
В конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11) есть своя форма. Путь: Администрирование → Обслуживание, ссылка «Активные пользователи» в группе журнала регистрации. Форма умеет больше стандартной: открыть журнал регистрации по выбранному пользователю и завершить его сеанс.
В Конфигураторе
Меню Администрирование → Активные пользователи. Удобно, когда Конфигуратор уже открыт для обновления: сразу видно, кто мешает получить монопольный доступ.
Завершение чужого сеанса обрывает работу пользователя. Несохранённый документ пропадёт. Перед этим предупредите человека или делайте это вне рабочего времени.
Запросы к SQL: что можно увидеть на стороне СУБД
Сразу о главном ограничении. В клиент-серверной базе с СУБД соединяется не компьютер пользователя, а рабочий процесс сервера 1С (rphost). Поэтому СУБД видит соединения от имени одного SQL-логина с сервера 1С, а не Иванова и Петрову.
Имена пользователей 1С в системных представлениях СУБД не хранятся. Таблицы базы 1С вроде списка пользователей содержат учётные записи, а не сеансы. Через SQL реально узнать другое: сколько соединений держит база и какие запросы сейчас выполняются.
MS SQL Server — соединения с конкретной базой:
SELECT session_id, login_name, host_name, program_name,
status, login_time, last_request_end_time
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('buh_base')
ORDER BY login_time;
PostgreSQL — то же самое:
SELECT pid, usename, client_addr, state, backend_start, query
FROM pg_stat_activity
WHERE datname = 'buh_base'
ORDER BY backend_start;
Имя buh_base замените на имя базы в СУБД. Сопоставить SQL-соединение с пользователем 1С можно через консоль кластера: в свойствах сеанса есть номер соединения с СУБД, в списке соединений кластера видно, какой рабочий процесс его держит.
SQL полезен, когда консоль 1С недоступна или нужно найти тяжёлый запрос. Для списка людей в базе он не подходит.
Получить сеансы программно: встроенный язык и COM
Внутри своей базы
Метод ПолучитьСеансыИнформационнойБазы() возвращает массив сеансов текущей базы. Он выполняется на сервере и требует административных прав (или привилегированного режима). Пример для формы — собирает список в массив структур, который можно передать на клиент:
&НаСервереБезКонтекста
Функция СписокАктивныхСеансов()
Результат = Новый Массив;
Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
ИмяПользователя = "";
Если Сеанс.Пользователь <> Неопределено Тогда
ИмяПользователя = Сеанс.Пользователь.Имя;
КонецЕсли;
Строка = Новый Структура;
Строка.Вставить("Пользователь", ИмяПользователя);
Строка.Вставить("Компьютер", Сеанс.ИмяКомпьютера);
Строка.Вставить("Приложение", ПредставлениеПриложения(Сеанс.ИмяПриложения));
Строка.Вставить("Начало", Сеанс.НачалоСеанса);
Строка.Вставить("НомерСеанса", Сеанс.НомерСеанса);
Результат.Добавить(Строка);
КонецЦикла;
Возврат Результат;
КонецФункции
Пустое имя пользователя бывает, когда в базе не заведено ни одного пользователя. Свой сеанс узнаёте функцией НомерСеансаИнформационнойБазы() — по ней удобно исключить себя из списка.
Чтобы считать только людей, отфильтруйте по ИмяПриложения: оставьте 1CV8C, 1CV8 и WebClient. Фоновые задания и Конфигуратор в такой подсчёт не попадут.
Из внешней программы по всем базам кластера
Через COM-объект V8.COMConnector можно подключиться к
агенту кластера и получить сеансы всех баз. Схема: ConnectAgent("tcp://server:1540") → GetClusters() → Authenticate(Кластер, Логин, Пароль) → GetSessions(Кластер). У каждого сеанса есть userName, Host, AppID, StartedAt и ссылка на базу.
Для работы COM нужна зарегистрированная comcntr.dll той же версии, что и сервер. Регистрируется так же, как radmin.dll, через regsvr32. Если COM неудобен, в скриптах проще использовать rac из раздела про автоматизацию.
Журнал регистрации: кто работал вчера и неделю назад
Консоль и форма «Активные пользователи» показывают только текущий момент. Ответ на вопрос «кто был в базе ночью, когда пропали документы» даёт журнал регистрации.
- Откройте
Администрирование → Обслуживание → Журнал регистрацииили найдите «Журнал регистрации» в функциях для технического специалиста. - Нажмите «Установить отбор».
- Задайте интервал дат.
- В отборе по событиям оставьте «Сеанс. Начало» и «Сеанс. Завершение».
- При необходимости добавьте отбор по пользователю или компьютеру.
Каждая пара «начало — завершение» с одним номером сеанса — это один вход в программу. Если завершения нет, сеанс оборвался аварийно: выключили компьютер, упал клиент или сеанс завершили из консоли.
В коде журнал выгружается методом ВыгрузитьЖурналРегистрации. В отборе по событию используются служебные идентификаторы _$Session$_.Start и _$Session$_.Finish.
Журнал хранит только то, что включено уровнем регистрации. Если уровень выставлен в «Не регистрировать», истории входов не будет. Проверьте настройку заранее, а не в день разбора инцидента.
Журнал лежит в каталоге 1Cv8Log: у файловой базы — рядом с файлом базы, у серверной — в каталоге кластера на сервере. Старые записи удаляются по настройке периода хранения.
Автоматизация: выгрузка по расписанию и оповещения
Для регулярного контроля консоль неудобна: её надо открывать руками. Здесь выручает rac — консольный клиент сервера администрирования (RAS). Он ставится вместе с сервером 1С.
Запуск сервера администрирования
rac работает не напрямую с агентом, а через службу RAS (по умолчанию порт 1545). На Windows её регистрируют как службу, на Linux запускают командой:
/opt/1cv8/x86_64/8.3.24.1586/ras cluster --daemon
Команды для списка сеансов
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<uuid-кластера>
rac localhost:1545 session list --cluster=<uuid-кластера> --licenses
Первая команда выводит идентификатор кластера, его подставляете в следующие. Вторая даёт сеансы со всеми полями: user-name, host, app-id, started-at, last-active-at. Третья показывает, какие лицензии заняты сеансами. Если на кластере есть администратор, добавьте --cluster-user и --cluster-pwd. Отбор по одной базе и остальные параметры смотрите в rac help session.
Что можно собрать на этой основе
- 📊 Скрипт по расписанию (Планировщик заданий Windows или cron) пишет список сеансов в файл раз в 10–15 минут. Через месяц у вас статистика пиковой нагрузки.
- 🔔 Оповещение, когда занятых лицензий больше заданного порога. Например, из 50 лицензий занято 47 — пора докупать или искать «забытые» сеансы.
- 🧹 Отчёт по сеансам, где
last-active-atстарше 8 часов, — кандидаты на завершение после конца смены. - 🛠 Регламентное задание в самой базе на основе
ПолучитьСеансыИнформационнойБазы(). Подходит, если доступа к серверу нет, а права в базе есть.
Системы мониторинга вроде Zabbix подключаются к тем же данным: скрипт с rac отдаёт число сеансов как метрику.
Не завершайте сеансы скриптом автоматически в рабочее время. Пользователь потеряет несохранённые данные, а фоновое задание оборвётся посреди обработки. Автозавершение — только ночью и только для сеансов людей, не фоновых заданий.