Кто сейчас работает в базе 1С: от списка в программе до консоли кластера и техжурнала
Содержание
Посмотреть, кто сидит в 1С, быстрее всего прямо в программе: в БП 3.0 и ЗУП 3.1 откройте Администрирование → Обслуживание и перейдите по ссылке «Активные пользователи». Там видно, кто подключён к базе, с какого компьютера, в каком приложении и с какого времени. Тот же список есть в Конфигураторе: Администрирование → Активные пользователи.
Этого хватает в файловой базе и в простых случаях. Если база клиент-серверная и нужно понять, кто держит блокировку, кто «грузит» сервер или почему заняты лицензии, переходите к консоли кластера, утилите rac и технологическому журналу.
Список активных пользователей в самой программе
Обработка «Активные пользователи» работает и в файловом, и в клиент-серверном варианте. Открыть её можно тремя путями.
| Откуда | Путь | Когда удобно |
|---|---|---|
| БП 3.0, ЗУП 3.1 | Администрирование → Обслуживание → «Активные пользователи» | Обычная работа администратора базы |
| УТ 11, КА 2, ERP | НСИ и администрирование → Администрирование → Обслуживание → «Активные пользователи» | То же, раздел верхнего уровня называется иначе |
| Любая конфигурация | Главное меню (кнопка ☰) → «Все функции» → ветка «Стандартные» → «Активные пользователи» | Когда в разделах ссылки нет или прав на раздел мало |
| Конфигуратор | Администрирование → Активные пользователи | Перед обновлением, когда вы уже в Конфигураторе |
Команда «Все функции» появляется после включения флажка «Отображать команду “Все функции”» в Главное меню → Сервис → Параметры. Без него ветки «Стандартные» вы не увидите.
Что видно в списке:
- 👤 Пользователь — имя из списка пользователей базы. Если в базе нет ни одного пользователя, колонка пустая.
- 💻 Компьютер — сетевое имя машины, с которой идёт подключение. Для терминального сервера это имя самого сервера, а не рабочего места.
- 🧩 Приложение — тонкий клиент, толстый клиент, веб-клиент, Конфигуратор, фоновое задание, COM-соединение.
- 🕘 Начало работы и номер сеанса — помогают отличить «зависший» вчерашний сеанс от живого.
Строки «Фоновое задание» и «COM-соединение» — не люди. Это регламентные задания, обмены и внешние программы. Их не завершают «для порядка»: прерванный обмен потом приходится запускать заново.
Из этой же формы можно перейти в журнал регистрации с отбором по выбранному пользователю. Там видно, что человек делал последние минуты: какие документы открывал, что записывал и проводил.
В клиент-серверной базе из этой же формы можно завершить чужой сеанс. Программа спросит параметры администрирования кластера, если они заданы. В файловой базе принудительно отключить пользователя из списка нельзя: нужно попросить его выйти или включить блокировку работы пользователей (о ней ниже).
Кто сидит в базе на сервере: консоль кластера
Для клиент-серверной базы главный инструмент — «Администрирование серверов 1С Предприятия». Консоль показывает всех, кто подключён к кластеру, а не только к одной базе.
Если консоль не открывается
После установки платформы консоль часто выдаёт ошибку создания компонента. Причина — не зарегистрирована библиотека radmin.dll нужной версии. Откройте командную строку от имени администратора и выполните:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
Номер в пути замените на версию платформы, установленную на сервере. Версия консоли и версия сервера должны совпадать, иначе подключение не пройдёт.
Где смотреть сеансы
- В дереве консоли раскройте
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер>. - Откройте
Информационные базы → <ваша база> → Сеансы. - Чтобы увидеть всех по всему кластеру, откройте узел
Сеансыпрямо под кластером.
Полезные колонки сеанса:
| Колонка | Что говорит |
|---|---|
| Пользователь, Компьютер, Приложение | Кто, откуда и через что подключён |
| Начало работы, Последняя активность | Давно ли человек что-то делал |
| Спящий | Сеанс без соединения: клиент «отвалился», но сеанс ещё жив |
| Время вызова (текущее) | Сколько идёт текущая операция, если она есть |
| Блокировки СУБД | Сеанс ждёт или держит блокировку в базе данных |
| Захвачено СУБД | Сколько секунд идёт открытая транзакция |
| Память, Чтение, Запись | Кто нагружает рабочий процесс прямо сейчас |
Колонки настраиваются через контекстное меню списка. Если части из них не видно, добавьте их.
Удаление сеанса в консоли сразу обрывает работу пользователя. Несохранённые данные пропадут, а открытая транзакция откатится. Предупредите человека заранее, а в рабочее время удаляйте только явно зависшие сеансы.
Узел Соединения показывает физические подключения к рабочим процессам. Одному сеансу соединение нужно только на время вызова, поэтому соединений бывает меньше, чем сеансов. Это нормально.
Кто держит блокировку и почему висит транзакция
Типичная жалоба: «у бухгалтерии не проводятся документы, у всех крутится колесо». Нужно найти того, кто держит ресурс.
- В консоли в списке сеансов отсортируйте по колонке «Захвачено СУБД». Сеанс с большим значением держит транзакцию долго.
- Посмотрите колонку «Блокировки СУБД»: в ней указаны номера сеансов, которые ждут друг друга.
- Откройте узел
Блокировкиу базы. Там управляемые блокировки 1С: какой сеанс, какой объект, в каком режиме. - Найдите сеанс-источник и спросите пользователя, что он делает. Часто это закрытие месяца , перепроведение за период или большой обмен.
Если владелец блокировки — фоновое задание обмена, удобнее дождаться конца или отключить расписание задания. Если человек ушёл обедать с открытым длинным отчётом, сеанс завершают.
Сеансы и подключения через утилиту rac
Консоль работает только в Windows. С любой машины, в том числе с Linux, сеансы смотрят через rac. Ей нужен запущенный сервер администрирования ras (по умолчанию порт 1545).
Запуск ras, если он не установлен службой:
ras cluster --daemon
Дальше идентификатор кластера, затем список сеансов:
rac cluster list
rac session list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера> --licenses
Ключ --licenses добавляет сведения о том, какую лицензию занял каждый сеанс. Так удобно разбирать нехватку лицензий.
Отбор по одной базе и смежные списки:
rac infobase summary list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac connection list --cluster=<uuid-кластера>
rac lock list --cluster=<uuid-кластера>
Если у кластера задан администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. Завершить сеанс можно командой rac session terminate с указанием кластера и идентификатора сеанса. Последовательность ключей подскажет rac help session.
Пароль администратора кластера в командной строке попадает в историю команд. Для скриптов храните его в файле с ограниченными правами, а не в тексте bat-файла.
Программный список подключений к базе
Когда список нужен внутри своей обработки, например чтобы вывести предупреждение перед закрытием периода, используйте метод платформы ПолучитьСеансыИнформационнойБазы(). Он работает на сервере и в файловом, и в клиент-серверном варианте.
&НаСервереБезКонтекста
Процедура ВывестиСеансыНаСервере()
Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
ИмяПользователя = "<без пользователя>";
Если Сеанс.Пользователь <> Неопределено
И ЗначениеЗаполнено(Сеанс.Пользователь.Имя) Тогда
ИмяПользователя = Сеанс.Пользователь.Имя;
КонецЕсли;
Сообщить(СтрШаблон("%1 | %2 | %3 | начало: %4 | сеанс %5",
ИмяПользователя,
Сеанс.ИмяКомпьютера,
ПредставлениеПриложения(Сеанс.ИмяПриложения),
Формат(Сеанс.НачалоСеанса, "ДЛФ=DT"),
Формат(Сеанс.НомерСеанса, "ЧГ=0")));
КонецЦикла;
КонецПроцедуры
Номер своего сеанса возвращает НомерСеансаИнформационнойБазы(). Его удобно исключать из списка, чтобы не видеть самого себя.
Для внешних систем мониторинга (Zabbix, Prometheus) обычно не пишут код в конфигурации. Скрипт по расписанию вызывает rac session list, считает строки по базам и отдаёт число в систему. Так видно график загрузки за день без входа в 1С.
Технологический журнал: кто и что делал, когда консоли мало
Консоль показывает только «сейчас». Если блокировки случаются ночью или раз в неделю, нужен технологический журнал (ТЖ). Он пишет события сервера в текстовые файлы.
Настройка — файл logcfg.xml в каталоге conf платформы, обычно C:\Program Files\1cv8\conf\. Сервер подхватывает изменения сам, перезапуск службы не нужен. Пример для разбора блокировок:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="TLOCK"/>
</event>
<event>
<eq property="name" value="TTIMEOUT"/>
</event>
<event>
<eq property="name" value="TDEADLOCK"/>
</event>
<property name="all"/>
</log>
</config>
- 🔒
TLOCK— установка управляемых блокировок. - ⏱
TTIMEOUT— пользователь не дождался блокировки, ему выдана ошибка по таймауту. - 💥
TDEADLOCK— взаимоблокировка двух сеансов.
Параметр history задаёт, сколько часов хранить файлы. В событиях есть пользователь, компьютер, номер сеанса и контекст: модуль и строка кода, где взята блокировка. Именно это отвечает на вопрос «кто и в каком документе».
Не оставляйте ТЖ с широким набором событий надолго. На загруженном сервере <property name="all"/> без отборов за час наполняет гигабайты и сам добавляет нагрузку на диск. Собирайте события, которые нужны, на время разбора, потом удалите файл logcfg.xml или уберите из него лишнее.
Для входов и выходов людей ТЖ избыточен. Достаточно журнала регистрации: Администрирование → Обслуживание → «Журнал регистрации», отбор по событиям «Сеанс. Начало» и «Сеанс. Завершение» и по пользователю. Так видно, кто входил в базу вчера вечером и с какого компьютера.
Когда пользователей много: как снять нагрузку
Список сеансов полезен не только для контроля людей. По нему видно, на что расходуются ресурсы сервера и лицензии.
Спящие и брошенные сеансы
Клиент закрыли «крестиком» в диспетчере задач, пропала сеть, ноутбук ушёл в сон. Сеанс остаётся на сервере и может занимать лицензию. В свойствах информационной базы в консоли есть параметры «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» (в секундах). Если их задать, сервер сам переводит неактивные сеансы в спящие и закрывает их.
Не ставьте слишком малое время завершения. Бухгалтер, отошедший на совещание, вернётся к закрытому сеансу и потеряет несохранённый документ. Разумно начинать с нескольких часов и смотреть на жалобы.
Блокировка входа на время работ
Перед обновлением или закрытием периода включите блокировку: Администрирование → Обслуживание → «Блокировка работы пользователей». Задайте время начала, сообщение для пользователей и код разрешения. Программа предупредит работающих и после указанного времени завершит их сеансы. Вы сами войдёте, добавив код в параметр запуска /UC<код>.
Где искать нагрузку
- 📊 Сортировка сеансов по «Память» и «Чтение» в консоли показывает, кто выполняет тяжёлый запрос прямо сейчас.
- 🔁 Много сеансов «Фоновое задание» одновременно — повод развести расписание регламентных заданий и обменов по времени.
- 🧮 Длинные отчёты за годы лучше переносить на вечер или на отдельную копию базы для аналитики.
- 🖥 На сервере проверьте узел
Рабочие серверы → <сервер> → Рабочие процессы: число процессов, занятую память, количество соединений на процесс.
Частые вопросы
Видят ли обычные пользователи, кто ещё сидит в базе?
Почему в списке один человек дважды?
Как узнать, кто сидит в файловой базе без запуска 1С?
Как понять, какие сеансы заняли лицензии?
rac session list --licenses для кластера. У каждого сеанса будет видно, получена ли лицензия и откуда. Так проще найти, кто занял последнюю свободную.Можно ли получить уведомление, когда в базу кто-то вошёл ночью?
rac session list, который пишет в мессенджер при сеансе вне рабочего времени, или регулярный отбор журнала регистрации по событию «Сеанс. Начало».