Разберем распространенную проблему в архитектуре «1С:Предприятие»: пользователь открывает несколько информационных баз или конфигуратор и рабочий сеанс на одном рабочем месте, но вместо удержания одной лицензии на компьютер система списывает отдельную лицензию на каждое открытое окно. В результате пул свободных подключений быстро исчерпывается, а остальные сотрудники получают системную ошибку «Не обнаружено свободной лицензии».
Выясним причину такого поведения платформы, проанализируем разницу между раздачей лицензий сервером приложений и клиентскими рабочими станциями, а также рассмотрим пошаговые методы исправления ситуации как для аппаратных USB-ключей (HASP), так и для программных файлов лицензий (.lic).
Количество расходуемых лицензий напрямую зависит от того, кто именно инициирует и контролирует выдачу лицензии:
HASP License Manager), то действует правило: одна лицензия на одно физическое рабочее место или одну терминальную сессию. В рамках этой лицензии пользователь на своем компьютере может запускать произвольное число информационных баз (файловых и клиент-серверных) и окон Конфигуратора без дополнительного расхода лицензий.rphost самостоятельно выделяет лицензию на каждый сеанс. В этой схеме действует строгое правило: один запуск информационной базы = минус одна лицензия. Если пользователь открывает три базы, сервер спишет из общего пула три отдельные лицензии. Если пользователь в рамках одной базы откроет Предприятие и Конфигуратор для отладки, сервер заберет две лицензии.Исключением являются терминальные сессии (RDP) и публикация через Web: при подключении через веб-клиент или HTTP-сервисы выдача лицензии сервером является технической необходимостью, так как браузер не имеет прямого доступа к сетевым протоколам службы лицензирования.
Прежде чем менять конфигурацию сети, определим, каким именно способом текущие сеансы получают лицензии. Выполним пошаговую проверку:
Текущая: Сетевой HASP4 ... получило клиентское приложение, лицензия получена правильно по сети от менеджера лицензий. Если указано Информационная база: ... или выдачу зафиксировал сервер SERVER, 1541, захват выполнен кластером на каждый сеанс отдельно.Администрирование серверов 1С Предприятия, перейдем в ветку Кластеры — Сеансы. В таблице найдем колонку Лицензия. Здесь отображается точный способ захвата: выдана ли она клиентом (с указанием пути к файлу или типа ключа) или сервером (с указанием сетевого порта и имени сервера).
// Пример получения информации о лицензии текущего сеанса
СеансыКластера = Кластер.ПолучитьСеансы(ИдентификаторБазы);
Для Каждого ТекСеанс Из СеансыКластера Цикл
ИнформацияОЛицензии = ТекСеанс.Лицензия;
// Свойство содержит сведения о типе ключа, пути к файлу .lic и способе выдачи
КонецЦикла;
Если в локальной сети используются сетевые аппаратные ключи HASP или на рабочих станциях развернуты программные лицензии, отключим принудительное выделение лицензий процессами сервера 1С:
1C:Enterprise 8.3 Server Agent.После этой настройки клиенты будут обращаться за лицензиями напрямую к службе HASP License Manager или к своим локальным программным файлам, а повторные запуски баз на одном компьютере перестанут уменьшать общий пул доступных мест.
Когда рабочие места опрашивают сеть широковещательным пакетом (broadcast), поиск ключа может завершаться тайм-аутом, после чего клиент аварийно переключается на запрос лицензии у сервера 1С. Чтобы этого избежать, зафиксируем адрес менеджера лицензий в конфигурационном файле:
C:\Program Files (x86)\1cv8\conf\ (или C:\Program Files\1cv8\conf\ для 64-битного клиента).nethasp.ini.HASP License Manager:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10, 192.168.1.11
NH_USE_BROADCAST = Disabled
NH_TCPIP_METHOD = TCP
NH_SESSION = 2
NH_SEND_TMO = 3
NH_RECEIVE_TMO = 3
Помним важное аппаратное ограничение: HASP License Manager не может одновременно обслуживать два ключа одной серии на одном физическом или виртуальном компьютере. Если в один сервер вставлены два ключа серии ORGL8 (например, на 20 и 50 пользователей), менеджер увидит только один из них. Чтобы задействовать весь номинал, разнесем ключи на разные серверы локальной сети и перечислим их IP-адреса через запятую в параметре NH_SERVER_ADDR.
Если учет ведется на сервере удаленных рабочих столов (Terminal Server / RDP) с использованием программных лицензий, обратим внимание на следующие правила установки и очистки:
.lic должен находиться в общем системном каталоге для всех пользователей (обычно C:\ProgramData\1C\licenses). В этом случае каждый терминальный пользователь (RDP-сессия) захватывает ровно одну лицензию из файла и может запускать неограниченное число баз внутри своего сеанса..lic, но оставляет старый файл в каталоге. Платформа опрашивает все найденные файлы по очереди. Если старый файл исчерпан или заблокирован, клиент тратит время на ошибки. Неактуальные файлы лицензий следует переместить в архивный каталог за пределы папки licenses.AppData текущей учетной записи, и другие сеансы терминала не смогут получить к нему доступ.Если сервер 1С все же вынужден раздавать часть лицензий (например, для мобильных или веб-клиентов), снизим время удержания лицензий неактивными подключениями. Для этого в консоли кластера в свойствах информационной базы скорректируем системные интервалы:
1200 секунд (20 минут).86400 секунд (сутки) до разумного предела — 1800 или 3600 секунд (от 30 минут до 1 часа).В результате покинутые пользователями сеансы и потерянные фоновые задания будут своевременно завершаться службой кластера, а закрепленные за ними лицензии немедленно вернутся в общий пул доступных подключений.