Сколько лицензий 1С сейчас занято: консоль кластера, rac, Активные пользователи

· 9 мин

Содержание

Точное количество занятых лицензий 1С 8.3 в клиент-серверном варианте показывает команда rac session list --licenses: она выводит по каждому сеансу, какую лицензию он получил и откуда. Быстрый визуальный способ — Консоль администрирования серверов 1С:Предприятия → Кластер → Сеансы. В файловой базе кластера нет, и посмотреть занятые лицензии можно только через список активных пользователей и окно «О программе» на каждом рабочем месте.

Главная ловушка: число сеансов не равно числу занятых лицензий. Фоновые задания лицензию не занимают, а несколько окон 1С с одного компьютера обычно расходуют одну клиентскую лицензию. Поэтому «12 строк в списке сеансов» при комплекте на 10 пользователей — ещё не повод докупать.

Что считается занятой лицензией и что нет

Прежде чем считать, разберитесь, какие сеансы вообще берут клиентскую лицензию. От этого зависит, какой способ проверки даст верную цифру.

Тип сеансаИмя приложенияЗанимает клиентскую лицензию
Тонкий клиент1CV8Cда
Толстый клиент1CV8да
Веб-клиентWebClientда
COM-соединениеCOMConnectionда
Фоновое заданиеBackgroundJobнет

Ещё три правила, которые сбивают счёт:

  • 🖥️ Один компьютер — одна лицензия. Три окна тонкого клиента у бухгалтера на одном ПК обычно занимают одно место.
  • 🧩 Терминальный сервер — каждый сеанс отдельно. Десять человек на одном RDP-сервере расходуют десять лицензий, хотя физически компьютер один.
  • 🔑 Кто выдал лицензию. Её может получить сам клиент (локальный файл или ключ HASP) или сервер 1С. Во втором случае учёт ведёт кластер, и его видно в rac.

Отдельно существует лицензия на сам сервер 1С (32- или 64-битный). Её занимает рабочий процесс, к пользовательскому счёту она отношения не имеет.

Какой способ подсчёта занятых лицензий вам подходит?

Способ 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. Запустите Администрирование серверов 1С Предприятия из меню «Пуск».
  2. Разверните Central 1C:Enterprise 8.3 servers → <ваш сервер> → Кластеры → <кластер>.
  3. Откройте узел Сеансы. В правой части — все сеансы кластера: пользователь, компьютер, приложение, время начала и последней активности.
  4. Чтобы увидеть сеансы одной базы, откройте Информационные базы → <база> → Сеансы.
  5. Лицензии, полученные сервером, видны в узле Рабочие процессы → <процесс> → Лицензии.

Отсортируйте список сеансов по колонке «Компьютер» и отбросьте строки с приложением «Фоновое задание». Количество разных компьютеров среди оставшихся клиентских сеансов (плюс отдельные терминальные сеансы) примерно совпадёт с числом занятых лицензий.

Из этого же списка можно удалить сеанс. Пользователь потеряет несохранённые данные, а открытая транзакция откатится. Удаляйте только «зависшие» сеансы, у которых последняя активность была давно, и предупредите сотрудника.

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

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 ' ')"

Как встроить его в работу:

  1. Сохраните файл как C:\Scripts\licenses.ps1 и проверьте вручную.
  2. Создайте задание в «Планировщике заданий» Windows с запуском каждые 10–15 минут.
  3. Добавьте порог: если total больше, например, 90% комплекта, отправляйте письмо или сообщение в мессенджер.
  4. Раз в месяц посмотрите журнал. Пиковое значение за месяц — честный ответ на вопрос, хватает ли лицензий.

Если кластер защищён паролем, не пишите его в скрипт открытым текстом. Создайте для мониторинга отдельного администратора кластера и храните пароль в диспетчере учётных данных Windows.

Для аппаратных ключей HASP откройте монитор менеджера лицензий в браузере на компьютере с ключом (обычно http://localhost:1947). Там видно, сколько подключений сейчас занято на каждом ключе.

Типичные проблемы с подсчётом и нехваткой лицензий

Чаще всего вопрос «сколько занято» возникает после ошибки Не обнаружено свободной лицензии!. Разберите по симптомам.

Диагностика: выберите симптом

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

Ещё одна настройка влияет на то, кто считает лицензии: в свойствах информационной базы в консоли кластера есть параметр «Выдача лицензий сервером 1С:Предприятия». Если он выключен, клиенты ищут лицензию у себя, и rac покажет только часть картины.

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

Занимает ли лицензию открытый, но свёрнутый клиент 1С?
Да. Лицензия держится, пока сеанс существует, даже если пользователь давно ничего не делает. Закрытие программы освобождает место сразу.
Сколько времени освобождается лицензия после аварийного выхода?
Сеанс обрывается, когда сервер обнаружит потерю связи. До этого место считается занятым. Если ждать нельзя, удалите сеанс в консоли кластера.
Можно ли посмотреть, сколько лицензий было занято вчера?
Штатного отчёта с историей нет. Историю даёт только ваш собственный журнал — например, скрипт по расписанию из раздела про автоматизацию.
Лицензии на 10 и на 5 пользователей складываются?
Да, комплекты суммируются: сервер 1С выдаёт места из всех доступных ему клиентских лицензий. В выводе rac у каждого места будет своя серия.
Видно ли занятые лицензии в личном кабинете на портале 1С?
Нет. Портал показывает зарегистрированные комплекты и их активации, но не текущую загрузку. Текущие места видны только на вашем сервере или рабочих местах.