Почему не хватает лицензий HASP в 1С при наличии свободных ключей и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе эксплуатации программных продуктов 1С с аппаратными ключами защиты HASP системные администраторы часто сталкиваются с непонятной ситуацией: утилита диагностики (например, Aladdin HASP Monitor) показывает, что занята лишь часть лицензий (к примеру, 16 из 20), но при попытке подключить очередного пользователя платформа выводит сообщение о том, что лицензия не обнаружена. Рассмотрим подробно причины возникновения этой ошибки и разберем практические способы настройки системы для корректного учета клиентских лицензий.

Причина 1. Разница в механизме подсчета лицензий (покомпьютерно и посеансно)

Проанализируем, как именно платформа 1С и менеджер лицензий взаимодействуют друг с другом. Важно понимать, кто именно отвечает за раздачу лицензий пользователям:

  1. Прямое получение лицензии клиентским приложением (HASP License Manager). Если клиентское приложение 1С запрашивает лицензию напрямую у сетевого менеджера лицензий, подсчет ведется по компьютеру (рабочему месту). На одном ПК пользователь может открыть хоть 10 информационных баз 1С — будет расходоваться всего 1 клиентская лицензия с ключа HASP.
  2. Раздача лицензий сервером 1С:Предприятия. Если в свойствах информационной базы включен параметр «Разрешить выдачу лицензий сервером 1С:Предприятия», то сервер 1С забирает лицензии у HASP LM на себя и сам распределяет их. При этом подсчет начинает вестись по сеансам: каждый новый запуск базы (даже на одном и том же ПК) расходует отдельную лицензию. В мониторинге Aladdin при этом будет отображаться только 1 подключенный IP-адрес — IP самого сервера 1С:Предприятия, хотя сервер может забрать все 20 лицензий на разные сессии пользователей.

Причина 2. Зависание сетевых сессий UDP и нулевой таймаут

HASP License Manager по умолчанию использует сетевой протокол UDP. В случаях, когда клиентский сеанс завершается некорректно (например, при внезапном сбое сети, некорректном завершении процесса 1С или выключении ПК), менеджер лицензий не получает финишный пакет обрывa соединения. В результате сессия «зависает» на сервере ключей с нулевым таймаутом и удерживает лицензию неограниченное время. Даже если все пользователи завершили работу, лицензии остаются заблокированными.

Способ 1. Проверка и изменение способа раздачи лицензий в 1С

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

  1. Откроем консоль администрирования кластера серверов 1С:Предприятия.
  2. Перейдем в свойства нужной информационной базы.
  3. Найдем параметр «Разрешить выдачу лицензий сервером 1С:Предприятия».
  4. Установим значение «Нет», если необходимо, чтобы платформы на рабочих местах забирали лицензии напрямую с HASP LM на весь ПК.

Обратите внимание: для файловых информационных баз раздача всегда происходит напрямую с рабочей станции пользователя или веб-сервера.

Способ 2. Настройка автоматического освобождения зависших сессий (nhsrv.ini)

Чтобы менеджер лицензий автоматически сбрасывал некорректно завершенные соединения и освобождал заблокированные ключи, настроим параметр таймаута в конфигурационном файле HASP License Manager.

  1. Найдем каталог установки HASP License Manager (обычно это папка службы на сервере, где установлен USB-ключ).
  2. Откроем или создадим в этом каталоге файл конфигурации nhsrv.ini.
  3. В секции [NHS_SERVER] укажем время таймаута неактивных сессий в минутах (например, 2 или 3 минуты):

[NHS_SERVER]
NHS_USER_SESSION_TIMEOUT = 3

После сохранения файла nhsrv.ini перезапустим службу HASP License Manager. Теперь зависшие при обрыве связи лицензии будут автоматически возвращаться в пул доступных через указанный интервал времени.

Способ 3. Исключение хаотичного поиска ключей через nethasp.ini

Если в локальной сети установлено несколько сетевых ключей HASP или работает несколько менеджеров лицензий, клиентские приложения могут опрашивать их с помощью широковещательных рассылок (broadcast), из-за чего лицензии начинают удерживаться на разных серверах. Разберем по шагам, как жестко прописать адрес нужного сервера лицензий:

  1. В каталоге bin установленной платформы 1С (или в каталоге conf) найдем файл nethasp.ini.
  2. Отключим использование широковещательного поиска:

[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_USE_BROADCAST = Disabled
NH_SERVER_ADDR = 192.168.1.100

В параметре NH_SERVER_ADDR укажем точный IP-адрес компьютера, на котором установлен сетевой ключ HASP и запущен менеджер лицензий.

Способ 4. Оперативное освобождение лицензий без перезагрузки сервера

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

  1. Откроем оснастку управления службами Windows (services.msc).
  2. Найдем службу HASP Loader (или hasplm).
  3. Выполним команду «Перезапустить».

Перезапуск службы сбросит все активные UDP-сессии, после чего работающие пользователи повторно запросят свои лицензии, а зависшие соединения полностью очистятся.

← На главную