Сколько лицензий 1С есть и сколько занято: ключи HASP, файлы .lic, консоль кластера

· 9 мин

Содержание

Быстрее всего проверить количество лицензий на сервере 1С командой rac session list --cluster=<id> --licenses или в консоли администрирования серверов. Там видно, какую лицензию занял каждый сеанс и на сколько рабочих мест она рассчитана. Сколько лицензий куплено, показывают маркировка аппаратного ключа (например, NET50ORGL8 — 50 мест) или описание программной лицензии в утилите ring.

Сначала разберитесь, что именно считаете. Серверная лицензия разрешает запуск самого сервера 1С. Клиентские лицензии ограничивают число одновременно работающих компьютеров. Это разные лицензии, проверяются они разными способами.

Какие лицензии бывают на сервере 1С и что из них считать

На одном сервере обычно живут два вида защиты: аппаратные ключи HASP и программные лицензии (файлы .lic). Бывает и смешанный вариант: сервер на программной лицензии, а клиентские места на сетевом ключе.

Вид лицензииНосительГде смотреть количество
Серверная, аппаратнаяUSB-ключ HASP на сервереМаркировка ключа, Admin Control Center
Серверная, программнаяФайл .licring license info
Клиентская многопользовательская, аппаратнаяСетевой ключ NETМаркировка, Aladdin Monitor
Клиентская, программнаяФайл .lic на сервере или на ПКring license info, консоль кластера

В клиент-серверном варианте 8.3 клиентские лицензии может выдавать сам сервер 1С. Тогда пользователи берут места из общего пула на сервере, а на их компьютерах ничего не установлено. Какой рабочий сервер выдаёт лицензии, задаётся в его свойствах: Требования назначения функциональности → объект «Клиентская лицензия».

Одна клиентская лицензия занимается одним компьютером. Три окна 1С на одном ПК с локальной лицензией — это одно место. На терминальном сервере каждый пользовательский сеанс расходует своё место.

Что проверить перед стартом:

  • 🔑 есть ли у вас доступ администратора к серверу 1С и к кластеру (логин и пароль администратора кластера, если он задан);
  • 🖥️ запущена ли служба сервера администрирования ras — без неё не работает rac;
  • 📄 где лежат лицензионные документы: регистрационные карточки, листки с PIN-кодами, коробки от ключей.

Аппаратный ключ HASP: маркировка на корпусе и что она значит

Количество мест на аппаратном ключе 1С не меняется — оно «прошито» при выпуске. Поэтому первое, что стоит сделать, — посмотреть на сам ключ. На корпусе или на наклейке нанесена маркировка серии.

МаркировкаНазначение
ORGL8Однопользовательский клиентский ключ
NET5ORGL8Сетевой клиентский ключ на 5 мест
NET10ORGL8, NET20ORGL8, NET50ORGL8На 10, 20 и 50 мест
NET100ORGL8, NET250ORGL8, NET500ORGL8На 100, 250 и 500 мест
ENSR8Ключ сервера 1С (32-разрядного)
EN8SAКлюч 64-разрядного сервера 1С

Число в начале сетевой маркировки — это и есть количество одновременных клиентских подключений. Если на сервере стоят два ключа NET20 и NET10, у вас 30 клиентских мест. Ключи складываются, но только если оба обслуживает один менеджер лицензий или оба видит сервер 1С.

Однопользовательский ключ ORGL8 по сети не раздаётся. Если он вставлен в сервер, место получит только тот, кто работает непосредственно на этом сервере.

Наклейка стирается, а ключи часто переставляют между машинами. Если маркировку не прочитать, сверьте номер ключа с регистрационной карточкой или проверьте его в Aladdin Monitor (раздел ниже) — там видно максимальное число входов.

Драйвер защиты и мониторы: видит ли сервер ключ и сколько мест на нём

Ключ в USB-порту ещё не значит, что система его видит. Его обслуживает драйвер Sentinel HASP. Утилита haspdinst.exe устанавливает и удаляет этот драйвер. Её поставляет производитель ключей, а установка драйвера также предлагается в дистрибутиве платформы 1С.

Порядок проверки ключа на сервере:

  1. Откройте в браузере на сервере http://localhost:1947 — это Sentinel Admin Control Center. Он появляется вместе с драйвером.
  2. Перейдите на страницу со списком ключей (Sentinel Keys). Ключ 1С должен быть в списке. Нет ключа — проблема в драйвере или в порту.
  3. Если ключа нет, переустановите драйвер из командной строки администратора:
haspdinst.exe -r
haspdinst.exe -i
  1. Переподключите ключ в другой порт, лучше прямо в материнскую плату, без USB-хаба.

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

Для сетевых ключей NET нужен ещё менеджер лицензий — HASP License Manager. Он раздаёт места с ключа по сети через порт 475. Посмотреть, сколько мест в ключе и сколько из них занято, удобнее в Aladdin Monitor:

  • 📊 в дереве выберите сервер с менеджером лицензий;
  • 🔑 раскройте ключ — в таблице будут колонки «Max» (всего мест) и «Current» (занято сейчас);
  • 👥 ниже перечислены компьютеры, которые держат места.

Если клиенты ищут ключ по сети, у них в каталоге conf платформы лежит nethasp.ini. В нём указывают адрес менеджера лицензий:

[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled

Явный адрес вместо широковещательного поиска убирает случайные отказы «ключ не найден» в сетях с несколькими подсетями.

Консоль администрирования серверов 1С: кто и какую лицензию занял

Консоль кластера отвечает на главный вопрос администратора: сколько лицензий занято прямо сейчас и кем. Она подключается к агенту сервера (порт 1540) и показывает список сеансов.

  1. Запустите «Администрирование серверов 1С Предприятия».
  2. Раскройте Central 1C:Enterprise 8.3 servers → ваш сервер → Кластеры → кластер → Сеансы.
  3. В списке сеансов переключите отображение на лицензии (команда в контекстном меню списка).
  4. Для каждого сеанса появятся тип лицензии (программная или HASP), признак «выдана сервером», максимальное число мест, путь к файлу лицензии или ключу.

Как читать результат:

  • ✅ «Выдана сервером: да» — место взято из пула сервера. Таких сеансов не должно быть больше, чем мест в лицензиях сервера.
  • 💻 «Выдана сервером: нет» — клиент принёс лицензию со своего компьютера или получил её с сетевого ключа через nethasp.ini.
  • 🔢 Поле «максимум пользователей» — ёмкость конкретной лицензии. Сложите ёмкость всех разных лицензий сервера — получите общее количество мест.

Если консоль не открывается или пишет об ошибке подключения, проверьте, что служба агента запущена и порт 1540 доступен. Частая причина на свежем сервере — не зарегистрирована библиотека консоли radmin.dll. Её регистрируют из каталога bin нужной версии платформы командой regsvr32 radmin.dll от имени администратора.

Консоль показывает только занятые места. Свободные места в ней не видны — их считают как разницу между ёмкостью лицензий и числом сеансов с лицензией.

Программные лицензии: файлы .lic и утилита ring

Программная лицензия — это файл .lic, который появляется после активации PIN-кода. Открывать его в блокноте бесполезно: число мест в нём не читается. Где искать файлы:

ОСКаталог
WindowsC:\ProgramData\1C\licenses
Linux/var/1C/licenses

Сколько файлов — столько активированных лицензий. Но ёмкость каждого файла (1, 5, 10, 20, 50, 100, 300 или 500 мест) по имени не определить. Для этого есть утилита ring из пакета «1C:Enterprise License Tools». Её ставят отдельно, через установщик 1ce-installer.

Команды, которые нужны для подсчёта:

ring license list
ring license info --name <имя лицензии из list>
ring license validate --name <имя лицензии из list>
  • 📋 list выводит все лицензии в каталоге по умолчанию;
  • 🔎 info показывает продукт, регистрационный номер, владельца и число рабочих мест;
  • ✔️ validate проверяет, подходит ли лицензия к текущему оборудованию.

Если файлы лежат не в стандартном каталоге, путь передают отдельным параметром — какой именно, смотрите в ring license list --help для вашей версии утилиты.

Программная лицензия привязана к параметрам компьютера. Замена сетевой карты, диска или перенос виртуальной машины может сделать файл недействительным. ring license validate как раз покажет это до того, как пользователи получат отказ при входе.

Не копируйте .lic с одного сервера на другой «на всякий случай». На чужом оборудовании файл не работает, а при повторной активации расходуется резервный PIN-код из комплекта.

Автоматический подсчёт через rac и COM-соединение

Вручную считать лицензии удобно один раз. Если нужен ежедневный отчёт или оповещение «осталось 2 свободных места», подойдёт консольная утилита rac или COM-объект V83.COMConnector.

rac: подсчёт сеансов по лицензиям

rac работает через сервер администрирования ras (по умолчанию порт 1545). Сначала узнайте идентификатор кластера, затем выведите сеансы с лицензиями:

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

Если у кластера задан администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>. В выводе для каждого сеанса есть поля license-type, issued-by-server, max-users и short-presentation.

Скрипт PowerShell сгруппирует занятые места по лицензиям:

$rac = "C:\Program Files\1cv8\8.3.25.1374\bin\rac.exe"   # своя версия платформы
$cluster = "<uuid кластера>"
& $rac session list --cluster=$cluster --licenses |
  Select-String '^short-presentation' |
  Group-Object { $_.Line } |
  Select-Object Count, Name

Колонка Count — сколько сеансов держат конкретную лицензию. Сравните её с ёмкостью этой лицензии.

COM-соединение из 1С

Тот же подсчёт можно сделать во внешней обработке, выполняемой на Windows-сервере. Объект V83.COMConnector должен быть зарегистрирован (regsvr32 comcntr.dll из каталога bin), разрядность — совпадать с разрядностью клиента.

Процедура ПосчитатьЛицензии(АдресАгента, Админ, Пароль)
    Коннектор = Новый COMОбъект("V83.COMConnector");
    Агент = Коннектор.ConnectAgent(АдресАгента); // "tcp://srv1c:1540"
    Кластеры = Агент.GetClusters();
    Для ИндексКластера = 0 По Кластеры.ВГраница() Цикл
        Кластер = Кластеры.Получить(ИндексКластера);
        Агент.Authenticate(Кластер, Админ, Пароль);
        Счетчик = Новый Соответствие;
        Сеансы = Агент.GetSessions(Кластер);
        Для ИндексСеанса = 0 По Сеансы.ВГраница() Цикл
            Лицензия = Сеансы.Получить(ИндексСеанса).License;
            Если Лицензия = Неопределено Тогда
                Продолжить;
            КонецЕсли;
            Ключ = Лицензия.ShortPresentation;
            Было = Счетчик.Получить(Ключ);
            Счетчик.Вставить(Ключ, ?(Было = Неопределено, 0, Было) + 1);
        КонецЦикла;
        Для Каждого Строка Из Счетчик Цикл
            Сообщить(Строка.Ключ + ": занято " + Формат(Строка.Значение, "ЧГ=0"));
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Процедура выводит по каждой лицензии число занятых мест. Фоновые сеансы без лицензии пропускаются проверкой на Неопределено.

Сеанс, открытый самой обработкой через COM, тоже попадёт в список. Учитывайте его при сравнении с лимитом.

Технологический журнал и ошибки: что делать, когда лицензий «не хватает»

Когда мест вроде бы достаточно, а пользователи получают отказ, нужен технологический журнал. Он фиксирует обращения к ключам и выдачу лицензий. Настраивается файлом logcfg.xml в каталоге 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="LIC"/></event>
    <event><eq property="name" value="HASP"/></event>
    <event><eq property="name" value="EXCP"/></event>
    <property name="all"/>
  </log>
</config>
  • 🧾 LIC — события лицензирования: какая лицензия выдана или почему отказано;
  • 🔑 HASP — обращения к аппаратному ключу;
  • ❗ EXCP — исключения, в том числе текст ошибки, которую увидел пользователь.

history="24" хранит журнал 24 часа. Не оставляйте сбор включённым надолго: на нагруженном сервере каталог быстро растёт. Соберите данные за время проблемы и удалите logcfg.xml — платформа подхватит изменение без перезапуска.

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

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

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

Можно ли увеличить число мест на уже купленном ключе HASP?
Нет. Ёмкость ключа задана при выпуске. Мест добавляют покупкой ещё одной клиентской лицензии — программной или аппаратной.
Суммируются ли аппаратные и программные клиентские лицензии на одном сервере?
Да, если сервер 1С видит и те и другие. Он выдаёт места из всех доступных ему лицензий, общее число — сумма их ёмкостей.
Нужен ли серверу 1С ключ, если все клиентские лицензии программные?
Да, серверу нужна своя серверная лицензия — аппаратная или программная. Клиентские лицензии её не заменяют.
Как узнать, на какой лицензии работает конкретный пользователь, не заходя на сервер?
Откройте в его сеансе Справка → О программе: в окне указано, какая лицензия получена и выдана ли она сервером.
Почему ring не видит лицензии, хотя файлы .lic лежат на диске?
Обычно файлы находятся в другом каталоге или утилиту запустили без прав на чтение этого каталога. Укажите путь явно и запустите консоль от администратора.