Кто сейчас работает в базе 1С: от списка в программе до консоли кластера и техжурнала

· 9 мин

Содержание

Посмотреть, кто сидит в 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С:Предприятия → <имя сервера> → Кластеры → <кластер>.
  2. Откройте Информационные базы → <ваша база> → Сеансы.
  3. Чтобы увидеть всех по всему кластеру, откройте узел Сеансы прямо под кластером.

Полезные колонки сеанса:

КолонкаЧто говорит
Пользователь, Компьютер, ПриложениеКто, откуда и через что подключён
Начало работы, Последняя активностьДавно ли человек что-то делал
СпящийСеанс без соединения: клиент «отвалился», но сеанс ещё жив
Время вызова (текущее)Сколько идёт текущая операция, если она есть
Блокировки СУБДСеанс ждёт или держит блокировку в базе данных
Захвачено СУБДСколько секунд идёт открытая транзакция
Память, Чтение, ЗаписьКто нагружает рабочий процесс прямо сейчас

Колонки настраиваются через контекстное меню списка. Если части из них не видно, добавьте их.

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

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

Кто держит блокировку и почему висит транзакция

Типичная жалоба: «у бухгалтерии не проводятся документы, у всех крутится колесо». Нужно найти того, кто держит ресурс.

  1. В консоли в списке сеансов отсортируйте по колонке «Захвачено СУБД». Сеанс с большим значением держит транзакцию долго.
  2. Посмотрите колонку «Блокировки СУБД»: в ней указаны номера сеансов, которые ждут друг друга.
  3. Откройте узел Блокировки у базы. Там управляемые блокировки 1С: какой сеанс, какой объект, в каком режиме.
  4. Найдите сеанс-источник и спросите пользователя, что он делает. Часто это закрытие месяца , перепроведение за период или большой обмен.

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

Что происходит с базой?

Сеансы и подключения через утилиту 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С?
Надёжного способа без программы нет: имена пользователей видит только сама платформа. Запустите 1С под администратором и откройте «Активные пользователи» или войдите в Конфигуратор.
Как понять, какие сеансы заняли лицензии?
Выполните rac session list --licenses для кластера. У каждого сеанса будет видно, получена ли лицензия и откуда. Так проще найти, кто занял последнюю свободную.
Можно ли получить уведомление, когда в базу кто-то вошёл ночью?
Встроенных уведомлений нет. Варианты: скрипт по расписанию с rac session list, который пишет в мессенджер при сеансе вне рабочего времени, или регулярный отбор журнала регистрации по событию «Сеанс. Начало».