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

· 10 мин

Содержание

Открытые сеансы в 1С быстрее всего посмотреть двумя способами. Внутри базы — через Все функции → Стандартные → Активные пользователи или в Конфигураторе через Администрирование → Активные пользователи. На сервере — в консоли администрирования серверов 1С: Кластер → Информационные базы → <база> → Сеансы.

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

Какой инструмент выбрать под вашу задачу

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

ИнструментВариант базыЧто показываетМожет завершить сеанс
Активные пользователи (режим Предприятие)файловый и клиент-серверныйпользователь, компьютер, приложение, начало работыв типовых на БСП — да, с паролем администратора кластера
Активные пользователи (Конфигуратор)обато же самоенет
Консоль администрирования серверовклиент-серверныйвсе сеансы кластера, процессы, СУБД, лицензиида
rac (командная строка)клиент-серверныйто же, что консоль, в текстовом видеда
Запросы к SQL Server / PostgreSQLклиент-серверныйсоединения рабочих процессов с СУБД и блокировкине нужно и опасно
Открытые файлы Windowsфайловыйкто держит файл 1Cv8.1CDтехнически да, но рискованно

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

Сеансы в консоли администрирования серверов 1С

Консоль — это оснастка MMC, которая ставится вместе с сервером 1С или отдельно, компонентом «Администрирование сервера 1С:Предприятия». В меню «Пуск» она называется «Администрирование серверов 1С Предприятия».

Подключение к кластеру

  1. Откройте консоль.
  2. Щёлкните правой кнопкой по узлу Central 1C:Enterprise 8.3 servers и выберите Создать → Центральный сервер 1С:Предприятия 8.3.
  3. Укажите имя сервера, протокол TCP и порт агента — по умолчанию 1540.
  4. Раскройте сервер, затем Кластеры → <ваш кластер>. Если на кластере назначены администраторы, консоль спросит логин и пароль.

Если консоль не открывается

Самая частая беда — оснастка выдаёт ошибку при открытии или пустое окно. Обычно на компьютере не зарегистрирована библиотека radmin.dll нужной версии. Это бывает после установки новой платформы или когда стоит несколько версий сразу.

Запустите командную строку от имени администратора и зарегистрируйте библиотеку той версии, что стоит на сервере:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер в пути замените на свой. Версия консоли должна совпадать с версией сервера 1С: консоль 8.3.22 к серверу 8.3.24 подключится с ошибкой.

Где смотреть список

У консоли две точки входа:

  • 📋 Кластер → Сеансы — все сеансы всех баз кластера. Удобно, когда нужно найти пользователя, а базу вы не знаете.
  • 📂 Кластер → Информационные базы → <база> → Сеансы — только одна база. Отсюда смотрят, кто мешает обновлению.

Главные колонки списка:

  • 👤 Пользователь — имя пользователя информационной базы.
  • 💻 Компьютер — с какого ПК или терминального сервера подключение.
  • 🧩 Приложение — тонкий клиент, толстый клиент, Конфигуратор, фоновое задание, COM-соединение, веб-клиент, HTTP-сервис.
  • ⏱ Начало сеанса и Последняя активность — по ним видно «забытые» сеансы, которые висят с прошлой недели.
  • ⚙️ Процесс — какой рабочий процесс rphost обслуживает сеанс.

Сеансы фоновых заданий и COM-соединений — норма. Это регламентные задания, обмены, внешние программы. Не принимайте их за «лишних пользователей».

Как завершить сеанс

Выделите сеанс, правой кнопкой — Удалить. Можно выделить несколько строк сразу.

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

То же самое из командной строки: rac

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

rac cluster list
rac session list --cluster=<uuid кластера>
rac session list --cluster=<uuid кластера> --licenses

Первая команда выводит идентификатор кластера, вторая — сеансы, третья — какие лицензии заняты сеансами. Чтобы отфильтровать одну базу, сначала получите её идентификатор через rac infobase summary list --cluster=<uuid>, затем добавьте к списку сеансов параметр --infobase=<uuid базы>. Если на кластере есть администратор, добавьте --cluster-user и --cluster-pwd. Остальные параметры смотрите в rac help session.

Активные пользователи внутри самой базы

Этот способ не требует доступа к серверу. Нужны права администратора в базе.

В режиме Предприятие

Список пользователей — стандартная функция платформы, она есть в любой конфигурации:

  1. Включите меню «Все функции»: Главное меню → Сервис и настройки → Параметры → Отображать команду «Все функции».
  2. Откройте Все функции → Стандартные → Активные пользователи.

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть своя обработка с тем же названием. Её ссылка лежит в разделе Администрирование (в Бухгалтерии — на странице Обслуживание). Она умеет больше: сортирует, обновляет список и завершает выбранные сеансы. Для завершения в клиент-серверной базе программа спросит логин и пароль администратора кластера, если он задан.

В Конфигураторе

Администрирование → Активные пользователи. Список тот же, но без кнопки завершения. Удобно, когда вы уже в Конфигураторе и обновление не стартует из-за чужих сеансов.

Программно

Для своей обработки или проверки перед регламентной операцией подойдёт метод ПолучитьСеансыИнформационнойБазы(). Он возвращает массив сеансов с номером, пользователем, компьютером и приложением.

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

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

Кто кого блокирует: сеансы и блокировки

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

Управляемые блокировки 1С

В консоли администрирования раскройте Кластер → Информационные базы → <база> → Блокировки. Там видно, какой сеанс заблокировал какой объект и с какого времени. Из командной строки — rac lock list с параметрами кластера и базы, подробности в rac help lock.

Как читать:

  1. Найдите в списке блокировок объект, на котором стоит пользователь.
  2. Посмотрите номер сеанса-владельца.
  3. Перейдите в список сеансов и найдите этого пользователя и его компьютер.
  4. Сначала позвоните ему. Завершать сеанс — крайняя мера.

Время в СУБД

В списке сеансов консоли включите колонки о вызовах СУБД (через настройку видимых колонок списка). Сеанс, который давно находится в вызове СУБД, — первый кандидат на «виновника». Особенно если это фоновое задание обмена или закрытия месяца.

Перед закрытием месяца или обновлением загляните в блокировки заранее. Так вы увидите зависший обмен до того, как он сорвёт регламентную операцию.

Подключения к базе через SQL-запросы

Иногда консоль недоступна, а доступ к СУБД есть. Тогда соединения можно посмотреть со стороны SQL Server или PostgreSQL.

Главная оговорка: на стороне СУБД вы не увидите имён пользователей 1С. Все соединения открывает рабочий процесс rphost под учётной записью службы сервера 1С. СУБД видит один логин и один компьютер — сервер 1С. Поэтому SQL нужен для другого: понять, сколько соединений открыто, есть ли долгие запросы и кто кого блокирует на уровне СУБД.

Microsoft SQL Server

SELECT s.session_id, s.login_name, s.host_name, s.program_name,
       s.status, s.last_request_start_time
FROM sys.dm_exec_sessions AS s
WHERE s.database_id = DB_ID('buh_base');

-- кто кого блокирует сейчас
SELECT r.session_id, r.blocking_session_id, r.wait_type,
       r.wait_time, r.command
FROM sys.dm_exec_requests AS r
WHERE r.blocking_session_id <> 0;

Вместо buh_base подставьте имя базы на SQL Server. Колонка database_id в sys.dm_exec_sessions есть начиная с SQL Server 2012. Быстрый вариант без запросов — sp_who2.

PostgreSQL

SELECT pid, usename, application_name, client_addr,
       state, backend_start, query_start
FROM pg_stat_activity
WHERE datname = 'buh_base';

-- процессы, которые ждут чужую блокировку
SELECT pid, pg_blocking_pids(pid) AS blocked_by, query
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;

Функция pg_blocking_pids есть в PostgreSQL начиная с версии 9.6.

Не завершайте соединения 1С из SQL (KILL, pg_terminate_backend). Рабочий процесс 1С получит обрыв, все сеансы на этом соединении упадут с ошибкой. Завершайте сеансы из консоли 1С.

Открытые сеансы в файловой базе

В файловом варианте нет кластера, консоли и rac. Есть только папка с файлом 1Cv8.1CD, который каждый клиент держит открытым.

Что доступно:

  • 👥 Активные пользователи внутри базы или в Конфигураторе — как описано выше. Это основной способ.
  • 🗂 Открытые файлы на сервере с общей папкой. На Windows-сервере откройте fsmgmt.msc → Общие папки → Открытые файлы. В списке видно, какая учётная запись Windows и с какого компьютера держит 1Cv8.1CD.
  • 🖥 PowerShell на том же сервере:
Get-SmbOpenFile | Where-Object { $_.Path -like "*1Cv8.1CD" } |
    Select-Object ClientUserName, ClientComputerName, Path

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

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

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

Автоматизация и сторонние инструменты

Смотреть сеансы руками раз в день нормально. Но если нужна проверка перед ночным обновлением или контроль лицензий, её проще автоматизировать.

Скрипт на rac

Сохраните вывод rac session list в файл по расписанию и разбирайте его. Каждый сеанс выводится блоком строк «параметр : значение», блоки разделены пустой строкой. Так легко посчитать сеансы по приложениям или найти сеансы старше суток. Пример для PowerShell:

$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cluster = "<uuid кластера>"
& $rac session list --cluster=$cluster |
    Select-String -Pattern "^(user-name|host|app-id|started-at)\s*:" |
    ForEach-Object { $_.Line }

COM-соединение

Через объект V83.COMConnector можно подключиться к агенту сервера, получить кластеры и список сеансов. Так делают внутренние обработки «Монитор сеансов» в некоторых компаниях. COM-компонент нужно зарегистрировать на машине, где выполняется код, той же версии, что сервер.

Мониторинг и анализ

  • 📈 Системы мониторинга (например, Zabbix) снимают число сеансов и занятых лицензий через тот же rac и строят графики. Удобно ловить утечку лицензий.
  • 🔍 Технологический журнал сервера 1С фиксирует начало и конец сеансов, долгие вызовы и ожидания на блокировках. Это инструмент для разбора инцидентов, а не для ежедневного взгляда.
  • 🧰 Инструменты из пакета КИП (Центр управления производительностью) показывают сеансы и блокировки в одном окне. Пакет платный, ставят его в крупных внедрениях.
Что вам нужно сделать с сеансами?

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

Почему в списке сеансов один и тот же пользователь несколько раз?
Каждое окно программы — отдельный сеанс. Человек мог открыть базу дважды, либо к его тонкому клиенту добавился фоновый сеанс или сеанс Конфигуратора.
Что такое спящий сеанс?
Сеанс, у которого оборвалась связь с клиентом. Сервер какое-то время хранит его, чтобы клиент мог переподключиться без потери данных. Если клиент не вернулся, сеанс завершится сам.
Занимает ли лицензию сеанс фонового задания?
Нет, клиентскую лицензию занимают сеансы клиентских приложений. Точно проверить можно командой rac session list с параметром –licenses.
Можно ли увидеть сеансы без прав администратора?
Обычному пользователю список активных пользователей недоступен. Нужна роль администратора в базе или доступ к консоли кластера.
Почему после удаления сеанса пользователь снова в списке?
Клиент автоматически переподключился, или регламентное задание запустилось заново. Чтобы никто не входил на время работ, установите блокировку начала сеансов в базе.