Сколько лицензий 1С сейчас занято: консоль кластера, rac, Активные пользователи
Содержание
Точное количество занятых лицензий 1С 8.3 в клиент-серверном варианте показывает команда rac session list --licenses: она выводит по каждому сеансу, какую лицензию он получил и откуда. Быстрый визуальный способ — Консоль администрирования серверов 1С:Предприятия → Кластер → Сеансы. В файловой базе кластера нет, и посмотреть занятые лицензии
можно только через список активных пользователей и окно «О программе» на каждом рабочем месте.
Главная ловушка: число сеансов не равно числу занятых лицензий. Фоновые задания лицензию не занимают, а несколько окон 1С с одного компьютера обычно расходуют одну клиентскую лицензию. Поэтому «12 строк в списке сеансов» при комплекте на 10 пользователей — ещё не повод докупать.
Что считается занятой лицензией и что нет
Прежде чем считать, разберитесь, какие сеансы вообще берут клиентскую лицензию. От этого зависит, какой способ проверки даст верную цифру.
| Тип сеанса | Имя приложения | Занимает клиентскую лицензию |
|---|---|---|
| Тонкий клиент | 1CV8C | да |
| Толстый клиент | 1CV8 | да |
| Веб-клиент | WebClient | да |
| COM-соединение | COMConnection | да |
| Фоновое задание | BackgroundJob | нет |
Ещё три правила, которые сбивают счёт:
- 🖥️ Один компьютер — одна лицензия. Три окна тонкого клиента у бухгалтера на одном ПК обычно занимают одно место.
- 🧩 Терминальный сервер — каждый сеанс отдельно. Десять человек на одном RDP-сервере расходуют десять лицензий, хотя физически компьютер один.
- 🔑 Кто выдал лицензию. Её может получить сам клиент (локальный файл или ключ HASP) или сервер 1С. Во втором случае учёт ведёт кластер, и его видно в
rac.
Отдельно существует лицензия на сам сервер 1С (32- или 64-битный). Её занимает рабочий процесс, к пользовательскому счёту она отношения не имеет.
rac session list --licenses — это самая точная цифра. Для быстрого взгляда хватит консоли кластера.Способ 1. Как посмотреть занятые лицензии через rac и сервер rmngr
В описаниях часто пишут «утилита rmngr». На деле rmngr — это процесс менеджера кластера, он работает внутри службы сервера 1С и интерфейса не имеет. Именно он учитывает лицензии, выданные сервером. Достучаться до этих данных снаружи можно через сервер администрирования ras и консольный клиент rac.
Шаг 1. Запустите сервер администрирования ras
Если ras ещё не работает как служба, запустите его вручную из каталога bin установленной платформы:
cd "C:\Program Files\1cv8\8.3.24.1586\bin"
ras cluster --daemon
Номер версии в пути подставьте свой. По умолчанию ras слушает порт 1545 и подключается к агенту кластера на 1540.
Для постоянного мониторинга зарегистрируйте ras службой Windows. Тогда скрипты контроля (о них ниже) не будут зависеть от того, открыто ли окно консоли.
Шаг 2. Узнайте идентификатор кластера
rac cluster list
В ответе найдите строку cluster : <UUID>. Этот идентификатор понадобится дальше.
Шаг 3. Выведите лицензии по сеансам
rac session list --cluster=<UUID> --licenses
Если в кластере заданы администраторы, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>.
Команда печатает блоки, по одному на каждую выданную лицензию. Полезные поля:
- 👤
user-name,host,app-id— кто, с какого компьютера и каким клиентом работает; - 📄
full-name— путь к файлу программной лицензии или имя ключа; - 🔢
series— серия лицензии, по ней видно, из какого комплекта взято место; - 🖧
issued-by-server—yes, если лицензию выдал сервер,no, если клиент получил её сам; - 📦
license-type—soft(программная) илиHASP(аппаратная); - 📊
max-users-allиmax-users-cur— на сколько пользователей рассчитан комплект.
Число блоков, сгруппированное по series, и есть количество занятых лицензий по каждому комплекту. Если вы не уверены в каком-то ключе команды, посмотрите справку rac help session.
Способ 2. Просмотр лицензий и сеансов в консоли администрирования кластера
Консоль удобна, когда нужно не посчитать, а найти конкретного человека, который держит место.
- Запустите
Администрирование серверов 1С Предприятияиз меню «Пуск». - Разверните
Central 1C:Enterprise 8.3 servers → <ваш сервер> → Кластеры → <кластер>. - Откройте узел
Сеансы. В правой части — все сеансы кластера: пользователь, компьютер, приложение, время начала и последней активности. - Чтобы увидеть сеансы одной базы, откройте
Информационные базы → <база> → Сеансы. - Лицензии, полученные сервером, видны в узле
Рабочие процессы → <процесс> → Лицензии.
Отсортируйте список сеансов по колонке «Компьютер» и отбросьте строки с приложением «Фоновое задание». Количество разных компьютеров среди оставшихся клиентских сеансов (плюс отдельные терминальные сеансы) примерно совпадёт с числом занятых лицензий.
Из этого же списка можно удалить сеанс. Пользователь потеряет несохранённые данные, а открытая транзакция откатится. Удаляйте только «зависшие» сеансы, у которых последняя активность была давно, и предупредите сотрудника.
Если консоль не открывается с ошибкой о классе или оснастке, перерегистрируйте библиотеку от имени администратора, указав путь к вашей версии платформы:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"
Версия radmin.dll должна совпадать с версией сервера 1С, иначе консоль подключится с ошибкой несовпадения версий.
Почему подсчитать лицензии SQL-запросом к базе не получится
Иногда советуют открыть SQL Server или PostgreSQL и найти занятые лицензии запросом. Это не сработает: сведения о лицензиях в таблицах информационной базы не хранятся. Их держит менеджер кластера в памяти, а файлы программных лицензий лежат в каталоге C:\ProgramData\1C\licenses.
Что можно увидеть на стороне СУБД:
- 🔌 соединения рабочих процессов 1С с базой. Их число зависит от нагрузки и настроек пула, а не от количества пользователей;
- 🗂️ журнал регистрации с историей входов. Это прошлые события, а не текущие занятые места.
Запрос вроде такого покажет соединения в MS SQL, но не пользователей 1С:
SELECT program_name, host_name, COUNT(*) AS connections
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('buh_base')
GROUP BY program_name, host_name;
Все строки здесь придут с сервера 1С, потому что клиенты к СУБД напрямую не ходят. Для учёта лицензий такой отчёт бесполезен. Используйте rac или консоль.
Способ 3. Встроенные средства конфигурации: активные пользователи и «О программе»
Если доступа к серверу нет или база файловая, работайте изнутри программы.
Список активных пользователей
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) откройте Администрирование → Обслуживание → Активные пользователи. В старых релизах раздел называется «Поддержка и обслуживание».
Универсальный путь для любой конфигурации — Главное меню → Функции для технического специалиста → Стандартные → Активные пользователи. Если пункта нет, включите режим технического специалиста в Главное меню → Сервис → Параметры (в старых версиях платформы флажок называется «Отображать команду Все функции»). В Конфигураторе тот же список открывается через Администрирование → Активные пользователи.
Список показывает сеансы только текущей базы. Посчитайте в нём уникальные компьютеры по клиентским приложениям — это и будет нагрузка на лицензии от этой базы.
Окно «О программе»
Нажмите значок ? в правом верхнем углу и выберите О программе. В блоке сведений о лицензии видно, откуда текущий сеанс получил место: из локального файла, от сервера 1С или с ключа HASP, и на сколько пользователей рассчитан комплект.
Это быстрый способ выяснить, почему один пользователь «съедает» лицензию с другого комплекта. Сравните окно на двух компьютерах.
Подсчёт кодом во внешней обработке
Если нужна цифра без ручного счёта, сделайте внешнюю обработку с серверной процедурой:
&НаСервере
Функция ЗанятоКлиентскихМест()
Клиентские = Новый Массив;
Клиентские.Добавить("1CV8");
Клиентские.Добавить("1CV8C");
Клиентские.Добавить("WebClient");
Клиентские.Добавить("COMConnection");
Компьютеры = Новый Соответствие;
Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
Если Клиентские.Найти(Сеанс.ИмяПриложения) <> Неопределено Тогда
Компьютеры.Вставить(ВРег(Сеанс.ИмяКомпьютера), Истина);
КонецЕсли;
КонецЦикла;
Возврат Компьютеры.Количество();
КонецФункции
Функция возвращает число уникальных компьютеров с клиентскими сеансами в этой базе. Терминальные сеансы она склеит в один, потому что имя компьютера у них общее. Для терминального сервера считайте сеансы, а не компьютеры. Для нескольких баз на одном сервере такая обработка покажет только свою базу — общую картину даёт rac.
Автоматический контроль занятых лицензий скриптом
Ручная проверка помогает в момент сбоя. Чтобы заранее знать, что места заканчиваются, настройте скрипт по расписанию.
Пример на PowerShell считает занятые лицензии по сериям и пишет строку в журнал:
$rac = "C:\Program Files\1cv8\8.3.24.1586\bin\rac.exe"
$cluster = (& $rac cluster list | Select-String '^cluster\s*:\s*(\S+)').Matches[0].Groups[1].Value
$lines = & $rac session list --cluster=$cluster --licenses
$series = $lines | Select-String '^series\s*:\s*(.+)$' |
ForEach-Object { $_.Matches[0].Groups[1].Value.Trim() }
$report = $series | Group-Object | ForEach-Object { "$($_.Name)=$($_.Count)" }
$stamp = Get-Date -Format 'yyyy-MM-dd HH:mm'
Add-Content -Path 'C:\Scripts\licenses.log' -Value "$stamp total=$($series.Count) $($report -join ' ')"
Как встроить его в работу:
- Сохраните файл как
C:\Scripts\licenses.ps1и проверьте вручную. - Создайте задание в «Планировщике заданий» Windows с запуском каждые 10–15 минут.
- Добавьте порог: если
totalбольше, например, 90% комплекта, отправляйте письмо или сообщение в мессенджер. - Раз в месяц посмотрите журнал. Пиковое значение за месяц — честный ответ на вопрос, хватает ли лицензий.
Если кластер защищён паролем, не пишите его в скрипт открытым текстом. Создайте для мониторинга отдельного администратора кластера и храните пароль в диспетчере учётных данных Windows.
Для аппаратных ключей HASP откройте монитор менеджера лицензий в браузере на компьютере с ключом (обычно http://localhost:1947). Там видно, сколько подключений сейчас занято на каждом ключе.
Типичные проблемы с подсчётом и нехваткой лицензий
Чаще всего вопрос «сколько занято» возникает после ошибки Не обнаружено свободной лицензии!. Разберите по симптомам.
Перезапуск службы сервера 1С освобождает все лицензии разом, но обрывает сеансы всех пользователей и откатывает незавершённые операции. Делайте это только после рабочего дня или по согласованию.
Ещё одна настройка влияет на то, кто считает лицензии: в свойствах информационной базы в консоли кластера есть параметр «Выдача лицензий сервером 1С:Предприятия». Если он выключен, клиенты ищут лицензию у себя, и rac покажет только часть картины.