Почему 1С выдает ошибку «Не обнаружено свободной лицензии» при наличии нескольких сетевых USB-ключей HASP?

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

В практике системного администрирования 1С часто встречается ситуация, когда в корпоративной сети установлено несколько аппаратных USB-ключей защиты, но пользователи внезапно получают ошибку: «Не обнаружено свободной лицензии!». При этом анализ логов показывает, что система видит только один ключ (часто наименьшего номинала), на котором закончились свободные места, и игнорирует второй, более емкий ключ.

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

Причины сбоя: как работает опрос сетевых ключей HASP

Выясним причину, почему при добавлении второго USB-ключа (например, на 5 пользователей к уже имеющемуся на 100 мест) система перестает распределять лицензии со второго сервера. Основная проблема кроется в архитектуре сетевого протокола HASP и назначении серий ключей:

  1. Одна серия ключей: Все клиентские сетевые USB-ключи номиналом от 5 до 100 пользователей принадлежат к одной серии — ORGL8 (красные ключи). Ключи других серий (например, ORG8A на 300 пользователей или ORG8B на 500 пользователей) встречаются реже. Менеджер лицензий HASP License Manager не умеет суммировать лицензии одной серии на одном сервере, а сетевой протокол не суммирует их по сети автоматически.
  2. Остановка поиска после первого ответа: При запуске клиентское приложение 1С выполняет широковещательный (broadcast) запрос в локальную сеть в поисках менеджера лицензий с ключом серии ORGL8. Как только на запрос отвечает первый попавшийся сервер (например, сервер с ключом на 5 мест), поиск завершается. Если на этом сервере все 5 лицензий уже заняты, драйвер возвращает клиенту ошибку нехватки лицензий. Опрос следующего сервера в сети не производится.
  3. Ошибка серверной программной лицензии: В тексте диагностического сообщения часто фигурирует строка вида: Ошибка программного лицензирования. Файл программной лицензии не предусматривает возможность запуска клиентских приложений. Это нормальное поведение системы: платформа обнаруживает файл серверной лицензии (на 32- или 64-разрядный сервер 1С), но не может выделить из него рабочее место для клиентского сеанса, так как он предназначен только для работы самого кластера.
  4. Специфика раздачи лицензий сервером: Если в параметрах информационной базы включена выдача лицензий сервером 1С:Предприятия, сервер захватывает доступные по сети лицензии под каждое подключение пользователя (каждое отдельное окно или базу). В то же время менеджер лицензий на терминальном сервере выдает 1 лицензию на всю терминальную сессию Windows, независимо от числа запущенных баз.

Способ 1. Жесткая привязка клиентов к основному ключу через nethasp.ini

Рассмотрим самое надежное решение: запретить основной массе клиентских рабочих мест опрашивать сервер с маленьким ключом через широковещательную рассылку и жестко направить их на сервер с ключом на 100 лицензий.

Разберем по шагам настройку на терминальном сервере или клиентских компьютерах:

  1. Перейдем в каталог настроек платформы 1С:Предприятие. По умолчанию файл расположен по пути: C:\Program Files (x86)\1cv8\conf\nethasp.ini (для 32-разрядных клиентов) или C:\Program Files\1cv8\conf\nethasp.ini (для 64-разрядных клиентов).
  2. Откроем файл текстовым редактором от имени администратора.
  3. В секции [NH_COMMON] включим протокол TCP/IP.
  4. В секции [NH_TCPIP] отключим широковещательный поиск директивой NH_USE_BROADCAST = Disabled и пропишем точный IP-адрес сервера, где установлен большой ключ.

Посмотрим на пример правильного содержимого конфигурационного файла:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled

Где 192.168.1.10 — это IP-адрес терминального сервера с USB-ключом на 100 пользователей. После сохранения файла клиентские сеансы будут мгновенно подключаться к указанному менеджеру лицензий, полностью игнорируя сервер с 5-пользовательским ключом.

Способ 2. Ограничение доступа к малому ключу через nhsrv.ini

Если требуется сохранить ключ на 5 пользователей для конкретного круга лиц (например, для программистов, внешних подключений или отдельного подразделения), необходимо настроить менеджер лицензий HASP License Manager на сервере, куда физически подключен этот ключ.

Настройка выполняется через файл nhsrv.ini, который располагается в каталоге установки менеджера лицензий (по умолчанию C:\Program Files (x86)\Aladdin\HASP LM):

  1. Откроем файл nhsrv.ini на машине с ключом на 5 мест.
  2. Зададим список конкретных IP-адресов, которым разрешено получать лицензии, с помощью параметра NHS_IP_LIMIT.
  3. Отключим ответы на широковещательные запросы, чтобы обычные пользователи не спотыкались об этот ключ.

Посмотрим на пример конфигурации:


[NHS_SERVER]
NHS_USERLIST = 10

[NHS_IP]
NHS_USE_BROADCAST = Disabled
NHS_IP_LIMIT = 192.168.1.50, 192.168.1.51, 192.168.1.52, 192.168.1.53, 192.168.1.54

После внесения изменений обязательно перезапустим службу HASP Loader. Теперь менеджер лицензий будет отвечать только тем пяти клиентам, чьи IP-адреса указаны в списке. Все остальные компьютеры в сети продолжат искать лицензии дальше и дойдут до сервера с ключом на 100 пользователей.

Способ 3. Отключение раздачи лицензий службой сервера 1С

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

Когда пользователи работают через терминальный сервер, централизованная раздача лицензий сервером 1С приводит к перерасходу слотов: каждый открытый сеанс или вторая информационная база забирают отдельную лицензию. Чтобы избежать этого, выполним следующие действия:

  1. Запустим утилиту «Администрирование серверов 1С Предприятия».
  2. Раскроем дерево нужного кластера и перейдем в ветку «Информационные базы».
  3. Откроем свойства рабочей информационной базы.
  4. Найдем параметр «Разрешить выдачу лицензий сервером 1С:Предприятия» и установим его значение в «Нет».
  5. Нажмем «Применить» и сохраним настройки.

В этом случае клиентские приложения на терминальном сервере начнут получать лицензии напрямую от локального менеджера лицензий. Благодаря этому на одного пользователя терминала будет расходоваться ровно 1 лицензия из 100-пользовательского пула независимо от того, сколько баз и окон 1С запущено в рамках этой сессии.

Рекомендации по объединению лицензий

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

  1. Переход на программные лицензии: В отличие от аппаратных USB-ключей серии ORGL8, программные клиентские лицензии (файлы .lic) любых номиналов отлично суммируются при активации на одном сервере 1С. Можно активировать комплект на 100 рабочих мест и комплект на 5 рабочих мест на сервере кластера 1С, получив единый суммарный пул на 105 лицензий без конфликтов сетевых протоколов.
  2. Апгрейд ключа защиты: Если необходимо остаться на аппаратной защите, обменяйте ключ на 100 пользователей на ключ следующего номинала (серия ORG8A на 300 мест) по официальной процедуре апгрейда у обслуживающего партнера 1С.
← На главную