Как настроить 1С, чтобы тонкий клиент брал USB-лицензию с конкретного сервера

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

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

Анализ проблемы и стандартного поведения 1С

Прежде всего, проанализируем, как 1С ищет лицензию. В штатном режиме поиск идет по следующему алгоритму:

  1. Поиск локального USB-ключа, вставленного непосредственно в компьютер пользователя.
  2. Поиск многопользовательского USB-ключа в сети через широковещательный запрос (Broadcast).
  3. Обращение к nethasp.ini для поиска менеджеров лицензий по конкретным IP-адресам.
  4. Запрос лицензии у сервера 1С:Предприятия (если включена соответствующая настройка в параметрах информационной базы).

В нашей ситуации основная проблема заключается в том, что файл nethasp.ini по умолчанию является общим для всей установки платформы и находится в папке conf. Это не позволяет стандартными средствами задать разные сервера лицензий для разных ярлыков баз.

Решение №1: Использование переменной окружения HASP_INI_FILE

Это самый элегантный и надежный способ. Мы можем принудительно указать платформе, какой конфигурационный файл nethasp.ini использовать для конкретного сеанса работы. Это позволяет не копировать саму платформу, а лишь менять настройки «на лету».

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

  1. Создадим папку для конфигураций, например C:\1C_Configs\.
  2. Внутри создадим файлы lic_serv1.ini и lic_serv2.ini.
  3. В каждом файле жестко пропишем адрес нужного сервера лицензий и отключим широковещательный поиск (Broadcast), чтобы клиент не «самодельничал».

Пример содержимого файла lic_serv1.ini:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10  ; IP-адрес вашего первого сервера с ключом
NH_USE_BROADCAST = Disabled    ; Выключаем поиск по всей сети

Теперь создадим bat-файл для запуска 1С под конкретную базу:


@echo off
set HASP_INI_FILE=C:\1C_Configs\lic_serv1.ini
start "" "C:\Program Files\1cv8\common\1cv8s.exe"

Важный момент: Переменная HASP_INI_FILE должна указывать полный путь к файлу. Теперь при запуске через этот скрипт 1С будет игнорировать стандартный nethasp.ini и обращаться только к серверу 192.168.1.10.

Решение №2: Использование списков доступа на стороне сервера (Access List)

Если мы хотим запретить определенным пользователям (например, финансистам) брать лицензии с «чужого» сервера на уровне самого ключа, нам нужно настроить менеджер лицензий HASP License Manager. На сервере, где физически стоит ключ, найдем файл nhsrv.ini (обычно в папке с установленным менеджером лицензий).

Выясним, как ограничить доступ. В секции [NHS_IP] используем параметры NHS_ALLOW. Рассмотрим пример, когда мы разрешаем доступ только конкретному диапазону IP-адресов:


[NHS_IP]
NHS_ALLOW = 192.168.1.10-100 ; Разрешить только этим адресам
; Либо можно перечислить конкретные имена компьютеров
NHS_ALLOW = PC_ACCOUNTING, PC_DIRECTOR

После внесения изменений необходимо перезапустить службу HASP Loader. Теперь, даже если клиент в своем nethasp.ini пропишет этот сервер, менеджер лицензий просто отклонит запрос, если компьютер пользователя не входит в белый список.

Решение №3: Разделение через создание копий папки bin (Portable-метод)

Рассмотрим ситуацию, когда использование скриптов нежелательно. Платформа 1С позволяет запускать исполняемые файлы из любого места. Мы можем скопировать содержимое папки bin установленной платформы в разные каталоги.

  1. Скопируем C:\Program Files\1cv8\8.3.X.XXXX\bin в C:\1C_Work\Base_1\.
  2. Положим настроенный nethasp.ini прямо в эту новую папку bin.
  3. Создадим ярлык на 1cv8c.exe из этой папки.

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

Проблема «двойного захвата» лицензий и мониторинг

Проанализируем ситуацию с сотрудниками («финиками»), которые работают одновременно в нескольких базах на разных серверах. Нужно понимать важную особенность:

Если лицензии раздает клиент (через HASP LM): при открытии баз с разных серверов лицензий пользователь неизбежно займет две лицензии (по одной на каждом ключе). Это плата за физическое разделение ресурсов.

Что касается мониторинга, который беспокоил автора темы: при использовании nethasp.ini вы всегда можете использовать стандартную утилиту Aladdin Monitor (AKS Monitor). Она наглядно показывает IP-адреса всех пользователей, занявших лицензии на конкретном ключе. Если же перейти на выдачу лицензий сервером 1С, то мониторинг придется осуществлять через консоль администрирования кластера (раздел «Сеансы»), где в колонке «Лицензия» отображается информация о ключе.

Итоговые рекомендации

Для правильного деления лицензий мы рекомендуем использовать комбинацию методов:

  1. Для рядовых сотрудников: Настройте bat-файлы с переменной HASP_INI_FILE, чтобы они всегда обращались к «своему» серверу.
  2. Для контроля: Настройте nhsrv.ini на серверах, чтобы исключить случайный захват лицензий из других подсетей.
  3. Для анализа: Используйте Aladdin Monitor, чтобы в реальном времени видеть, кто именно занимает лицензии на USB-ключах.

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

← На главную