Как настроить приоритет выдачи лицензий в 1С:Предприятие, чтобы программные лицензии выдавались раньше аппаратных (USB)?

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

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

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

Как платформа 1С осуществляет поиск свободной лицензии?

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

Этап 1. Поиск на локальном компьютере (где запущено клиентское приложение):

  1. Выполняется попытка получения лицензии из того файла программной лицензии или HASP-ключа того же типа (серия, сетевой или локальный), откуда лицензия была успешно получена при последнем успешном подключении.
  2. Выполняется поиск программных лицензий на локальном компьютере пользователя.
  3. Выполняется поиск локального однопользовательского ключа HASP, вставленного непосредственно в ПК.
  4. Выполняется поиск многопользовательского сетевого ключа HASP в локальной сети с помощью программы HASP License Manager.

Этап 2. Поиск на компьютере менеджера кластера серверов «1С:Предприятие» (если включена раздача лицензий сервером):

  1. Выполняется попытка получения лицензии из того файла программной лицензии или многопользовательского HASP-ключа того же типа, откуда лицензия была получена при последнем успешном подключении к этой базе.
  2. Выполняется поиск программных лицензий, установленных непосредственно на сервере 1С.
  3. Выполняется поиск многопользовательских ключей HASP, установленных локально в USB-порты сервера 1С.
  4. Выполняется поиск сетевых многопользовательских ключей HASP, доступных серверу в локальной сети через менеджер лицензий HASP License Manager.

Как мы видим, самым первым пунктом в обоих этапах идет проверка «последней успешной лицензии». Именно из-за этого механизма поведение сервера кажется хаотичным: если пользователь в предыдущий раз случайно зашел под USB-лицензией, платформа при следующем запуске будет настойчиво пытаться забрать именно аппаратную лицензию, игнорируя свободные программные.

Где хранится информация о последней успешной лицензии?

Выясним причину, по которой система «запоминает» предыдущий выбор. Данные о типе и источнике последней успешной лицензии платформа записывает в специальный конфигурационный файл 1cv8conn.pfl.

В операционной системе Windows этот файл обычно располагается в общем каталоге данных приложений:

C:\ProgramData\1C\1Cv8\

Важная деталь для терминальных серверов: Если ваши пользователи работают в терминальном режиме на одном сервере под одной учетной записью или делят общий доступ к папке конфигурации, файл 1cv8conn.pfl становится общим. Запуск системы одним пользователем перезаписывает сохраненный источник лицензии для всех остальных, что усугубляет проблему непредсказуемого распределения ключей.

Важная особенность подсчета лицензий: Сервер против HASP License Manager

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

Поэтому правильная стратегия администратора — заставить сервер раздавать исключительно программные лицензии, а аппаратные оставить для прямого получения пользователями через сеть.

---

Пошаговые способы решения проблемы

Рассмотрим подробнее три основных способа, позволяющих настроить желаемый приоритет и гарантировать, что первыми будут расходоваться программные лицензии.

Способ 1. Полное сокрытие HASP-ключей от сервера 1С (Рекомендуемый)

Самый надежный способ заставить сервер раздавать только программные лицензии — физически или логически запретить службе сервера 1С «видеть» аппаратные ключи HASP в сети. При этом пользователи на своих ПК продолжат видеть эти ключи напрямую.

Разберем по шагам, как это сделать:

  1. На сервере, где запущена служба ragent (сервер «1С:Предприятия»), найдите конфигурационный файл сетевого драйвера HASP — nethasp.ini. Обычно он находится по пути:

    C:\Program Files\1cv8\conf\nethasp.ini (или в аналогичной папке для 32-битной версии сервера C:\Program Files (x86)\1cv8\conf\).

    Если файла там нет, скопируйте его шаблон из каталога установленной платформы.
  2. Откройте файл nethasp.ini с помощью любого текстового редактора (например, Блокнота) от имени Администратора.
  3. Найдите секцию [NH_COMMON] и принудительно отключите в ней использование всех сетевых протоколов для поиска ключей защиты. Настройки должны выглядеть следующим образом:
    
    [NH_COMMON]
    NH_IPX = Disabled
    NH_NETBIOS = Disabled
    NH_TCPIP = Disabled
    
  4. Сохраните файл и перезапустите службу сервера «1С:Предприятие» через консоль управления службами (services.msc).

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

В то же время, локальные компьютеры пользователей, у которых в их собственных файлах nethasp.ini прописан доступ к сетевому USB-ключу, смогут беспрепятственно забирать свободные аппаратные лицензии напрямую, когда программные лицензии на сервере закончатся.

Способ 2. Временное отключение USB-ключа для сброса кэша

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

  1. В нерабочее время (когда все пользователи вышли из баз) физически извлеките многопользовательский USB-ключ из сервера или компьютера, на котором запущен HASP License Manager.
  2. Попросите всех пользователей поочередно запустить 1С и войти в свои рабочие базы.
  3. Поскольку аппаратный ключ недоступен, платформа будет вынуждена обратиться к программным лицензиям на сервере и успешно запустит сеансы с их помощью.
  4. При этом в локальные файлы 1cv8conn.pfl на компьютерах пользователей запишется информация о том, что последняя успешная лицензия была программной.
  5. Верните USB-ключ на место.

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

Способ 3. Выделение сервера лицензирования в кластере 1С

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

Проанализируем этот процесс:

  1. Запустите утилиту «Администрирование серверов 1С Предприятия».
  2. Перейдите в ветку вашего кластера и выберите пункт «Требования назначения функциональности».
  3. Для одного из рабочих серверов кластера, на котором установлены программные лицензии, создайте требование:
    • Объект требования: Сервис лицензирования
    • Тип требования: Назначать
  4. Для остальных рабочих серверов, к которым подключены USB-ключи, создайте аналогичное требование, но со значением «Не назначать».

Таким образом, вы жестко разделите роли серверов в кластере. Центральный сервер при обработке запросов на авторизацию будет всегда перенаправлять запросы на получение лицензий именно к выделенному серверу программного лицензирования.

← На главную