Настройка многопользовательской работы в 1С:Предприятие 8.3 часто сопряжена с нюансами распределения лицензий. Одной из самых распространенных проблем является ситуация, когда в сети развернуто несколько аппаратных ключей защиты, но клиентские приложения видят только один из них, игнорируя остальные, даже если на первом ключе закончились свободные места. Проанализируем, как работает механизм поиска лицензий в современных релизах платформы, начиная с 8.3.16, и выясним, как правильно сконфигурировать систему.
Разберем фундаментальную причину, по которой простое перечисление адресов в параметре NH_SERVER_ADDR часто не дает ожидаемого результата. Платформа 1С при запуске выполняет поиск ключа по строго определенному алгоритму. Если мы используем сетевые аппаратные ключи HASP, порядок опроса выглядит следующим образом:
nethasp.ini.ORGL8), 1С пытается получить лицензию именно с него.Таким образом, если у вас есть три ключа по 50 лицензий (все серии ORGL8), платформа увидит только тот, который стоит первым в списке опроса. Это поведение является архитектурным ограничением защиты HASP в реализации 1С.
Рассмотрим детально, как должны выглядеть конфигурационные файлы, чтобы минимизировать сетевые задержки и исключить влияние ненужных протоколов. Проанализируем настройки клиентской части.
Файл nethasp.ini (обычно располагается в папке C:\Program Files\1cv8\conf\ или в папке конкретной версии платформы) должен содержать обязательную секцию [NH_COMMON]. Без нее параметры могут быть проигнорированы.
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10, 192.168.1.11
NH_USE_BROADCAST = Disabled
NH_TCPIP_METHOD = UDP
В данном примере мы отключаем устаревшие протоколы IPX и NETBIOS, оставляя только TCP/IP. Параметр NH_USE_BROADCAST = Disabled критически важен: он заставляет систему обращаться напрямую к указанным серверам, не "засоряя" сеть широковещательными запросами, которые часто блокируются маршрутизаторами между подсетями.
Теперь посмотрим на настройки серверной части — файл nhsrv.ini, который находится в папке с установленным HASP License Manager. Чтобы 1С могла более точно идентифицировать менеджеры, рекомендуется задать им уникальные имена.
[NHS_SERVER]
NHS_USERLIST = 250
NHS_SERVERNAMES = LM_SRV1
[NHS_IP]
NHS_USE_UDP = Enabled
NHS_USE_TCP = Enabled
NHS_IP_portnum = 475
После присвоения имени NHS_SERVERNAMES (не более 7 символов, латиница), мы можем указать это имя в клиентском nethasp.ini через параметр NH_SERVER_NAME. Это помогает в некоторых случаях принудительно маршрутизировать запросы.
Поскольку 1С не умеет самостоятельно "перескакивать" между ключами одной серии при их заполнении, наиболее эффективным решением будет разделение пула пользователей. Рассмотрим, как это реализовать на практике, особенно если вы работаете в терминальной среде (RDP).
Выясним причину: если все пользователи используют один и тот же файл nethasp.ini, они все "стучатся" на первый IP в списке. Как только 50 лицензий на первом ключе заняты, 51-й пользователь получает отказ.
Что мы можем сделать:
Создадим несколько вариантов файла nethasp.ini. Для первой группы пользователей в параметре NH_SERVER_ADDR первым укажем 192.168.1.10, а для второй группы — 192.168.1.11. В терминальной среде это можно реализовать через скрипты входа или групповые политики (GPO), подкладывая нужный файл в персональную папку настроек пользователя %APPDATA%\1C\1cv8\conf\.
Проанализируем ситуацию с ключами больших номиналов. Платформа 1С различает серии ключей. Основные серии:
В отличие от однотипных ключей ORGL8, ключи разных серий 1С умеет суммировать. Если у вас установлен один ключ на 100 (серия ORGL8) и один на 300 (серия ORG8A), система сможет забрать лицензии с обоих. Если ваш бюджет позволяет, замена нескольких мелких ключей на один крупный или на ключи разных серий (например, 100+300) полностью снимет проблему настройки nethasp.ini.
Начиная с версии 8.2, сервер 1С может сам брать на себя роль раздатчика лицензий. Посмотрим, как это работает и какие здесь есть подводные камни. В свойствах информационной базы (через консоль администрирования кластера) есть флаг "Разрешить выдачу лицензий сервером 1С".
Если этот флаг включен:
nethasp.ini, расположенный на сервере).Проблема: Сервер 1С обладает той же особенностью — он ищет только до первого найденного ключа серии ORGL8. Однако, если у вас в кластере несколько рабочих серверов, вы можете установить по одному ключу на каждый сервер и настроить их так, чтобы каждый рабочий процесс брал лицензии со своего локального ключа. Это позволит суммировать лицензии аппаратных ключей силами самого кластера.
Рассмотрим ситуацию, когда в системе одновременно используются и программные, и аппаратные лицензии. Это часто встречается в релизах 8.3.16 и выше. Выясним причину конфликтов: программные лицензии имеют приоритет над аппаратными сетевыми.
Если сервер 1С нашел программную лицензию, он может прекратить опрос сетевых ключей HASP. Если вам нужно, чтобы клиенты гарантированно брали лицензии с аппаратных ключей, убедитесь, что в параметрах информационной базы не включена принудительная раздача лицензий сервером, на котором установлены программные лицензии, либо четко разграничьте их использование.
Для диагностики текущего состояния используйте утилиту Aladdin Monitor (AKS Monitor). Она позволяет увидеть, какой именно менеджер лицензий видит ключи и какие конкретно компьютеры (IP-адреса) заняли лицензии в данный момент. Если в мониторе вы видите, что лицензии на ключе свободны, а 1С их "не берет", значит, проблема в локальных настройках nethasp.ini или в кэшировании информации о лицензиях в папке %LOCALAPPDATA%\1C\1cv8\. В таких случаях помогает полная очистка кэша лицензий (удаление файлов с расширением .lic, которые не являются основными лицензиями).
Подводя итог, можно сказать, что настройка 1С на работу с несколькими серверами лицензий — это не столько правка ini-файла, сколько правильное проектирование топологии защиты. Используйте разные серии ключей или распределяйте пользователей по разным менеджерам лицензий для достижения стабильного результата.