В крупных организациях часто возникает ситуация, когда парк серверов 1С разделен между разными юридическими лицами или департаментами. При использовании USB-ключей защиты (HASP) возникает техническая сложность: по умолчанию клиент 1С опрашивает всю локальную сеть и занимает первую попавшуюся свободную лицензию. Это приводит к тому, что сотрудники одного отдела могут «съесть» все лицензии другого отдела, просто запустив программу раньше. Рассмотрим, как технически реализовать разделение лицензий, чтобы каждая база или группа пользователей работала строго со своим ключом.
Прежде всего, проанализируем, как 1С ищет лицензию. В штатном режиме поиск идет по следующему алгоритму:
nethasp.ini для поиска менеджеров лицензий по конкретным IP-адресам.В нашей ситуации основная проблема заключается в том, что файл nethasp.ini по умолчанию является общим для всей установки платформы и находится в папке conf. Это не позволяет стандартными средствами задать разные сервера лицензий для разных ярлыков баз.
Это самый элегантный и надежный способ. Мы можем принудительно указать платформе, какой конфигурационный файл nethasp.ini использовать для конкретного сеанса работы. Это позволяет не копировать саму платформу, а лишь менять настройки «на лету».
Разберем по шагам, как это реализовать:
C:\1C_Configs\.lic_serv1.ini и lic_serv2.ini.Пример содержимого файла 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.
Если мы хотим запретить определенным пользователям (например, финансистам) брать лицензии с «чужого» сервера на уровне самого ключа, нам нужно настроить менеджер лицензий 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 пропишет этот сервер, менеджер лицензий просто отклонит запрос, если компьютер пользователя не входит в белый список.
Рассмотрим ситуацию, когда использование скриптов нежелательно. Платформа 1С позволяет запускать исполняемые файлы из любого места. Мы можем скопировать содержимое папки bin установленной платформы в разные каталоги.
C:\Program Files\1cv8\8.3.X.XXXX\bin в C:\1C_Work\Base_1\.nethasp.ini прямо в эту новую папку bin.1cv8c.exe из этой папки.В некоторых релизах платформы поиск конфигурационного файла начинается именно с текущей директории запуска. Однако стоит учитывать, что при обновлении платформы этот метод потребует ручного обновления всех скопированных папок, что делает его менее предпочтительным по сравнению с использованием переменной HASP_INI_FILE.
Проанализируем ситуацию с сотрудниками («финиками»), которые работают одновременно в нескольких базах на разных серверах. Нужно понимать важную особенность:
Если лицензии раздает клиент (через HASP LM): при открытии баз с разных серверов лицензий пользователь неизбежно займет две лицензии (по одной на каждом ключе). Это плата за физическое разделение ресурсов.
Что касается мониторинга, который беспокоил автора темы: при использовании nethasp.ini вы всегда можете использовать стандартную утилиту Aladdin Monitor (AKS Monitor). Она наглядно показывает IP-адреса всех пользователей, занявших лицензии на конкретном ключе. Если же перейти на выдачу лицензий сервером 1С, то мониторинг придется осуществлять через консоль администрирования кластера (раздел «Сеансы»), где в колонке «Лицензия» отображается информация о ключе.
Для правильного деления лицензий мы рекомендуем использовать комбинацию методов:
bat-файлы с переменной HASP_INI_FILE, чтобы они всегда обращались к «своему» серверу.nhsrv.ini на серверах, чтобы исключить случайный захват лицензий из других подсетей.Такой подход позволит жестко разграничить лицензионную политику между подразделениями, не докупая лишних лицензий и сохраняя прозрачность мониторинга.