Почему при открытии нескольких баз 1С с одного компьютера расходуется несколько лицензий и как это исправить?

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

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

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

Принцип работы лицензирования: почему тратится больше одной лицензии?

Количество расходуемых лицензий напрямую зависит от того, кто именно инициирует и контролирует выдачу лицензии:

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

Исключением являются терминальные сессии (RDP) и публикация через Web: при подключении через веб-клиент или HTTP-сервисы выдача лицензии сервером является технической необходимостью, так как браузер не имеет прямого доступа к сетевым протоколам службы лицензирования.

Диагностика источника лицензии на клиенте и сервере

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

  1. Проверка через окно «О программе»: в запущенной базе откроем меню Справка — О программе. Проанализируем блок Лицензия. Если в строке указано Текущая: Сетевой HASP4 ... получило клиентское приложение, лицензия получена правильно по сети от менеджера лицензий. Если указано Информационная база: ... или выдачу зафиксировал сервер SERVER, 1541, захват выполнен кластером на каждый сеанс отдельно.
  2. Проверка через консоль администрирования серверов 1С: откроем утилиту Администрирование серверов 1С Предприятия, перейдем в ветку Кластеры — Сеансы. В таблице найдем колонку Лицензия. Здесь отображается точный способ захвата: выдана ли она клиентом (с указанием пути к файлу или типа ключа) или сервером (с указанием сетевого порта и имени сервера).
  3. Программный мониторинг сеансов: если требуется автоматизировать контроль свободных лицензий, обратимся к свойствам объекта сеанса в коде администрирования кластера:

// Пример получения информации о лицензии текущего сеанса
СеансыКластера = Кластер.ПолучитьСеансы(ИдентификаторБазы);
Для Каждого ТекСеанс Из СеансыКластера Цикл
    ИнформацияОЛицензии = ТекСеанс.Лицензия;
    // Свойство содержит сведения о типе ключа, пути к файлу .lic и способе выдачи
КонецЦикла;

Решение 1. Отключение раздачи лицензий сервером 1С:Предприятия

Если в локальной сети используются сетевые аппаратные ключи HASP или на рабочих станциях развернуты программные лицензии, отключим принудительное выделение лицензий процессами сервера 1С:

  1. Запустим консоль Администрирование серверов 1С:Предприятия.
  2. Раскроем дерево кластера и перейдем в раздел Информационные базы.
  3. Откроем свойства нужной информационной базы.
  4. Найдем параметр Разрешить выдачу лицензий сервером 1С:Предприятия и установим его значение в Нет (снимем флаг).
  5. Нажмем Применить и ОК. Повторим действие для всех баз кластера.
  6. Для мгновенного применения настроек завершим пассивные сеансы или перезапустим службу 1C:Enterprise 8.3 Server Agent.

После этой настройки клиенты будут обращаться за лицензиями напрямую к службе HASP License Manager или к своим локальным программным файлам, а повторные запуски баз на одном компьютере перестанут уменьшать общий пул доступных мест.

Решение 2. Настройка файла nethasp.ini для аппаратных ключей HASP

Когда рабочие места опрашивают сеть широковещательным пакетом (broadcast), поиск ключа может завершаться тайм-аутом, после чего клиент аварийно переключается на запрос лицензии у сервера 1С. Чтобы этого избежать, зафиксируем адрес менеджера лицензий в конфигурационном файле:

  1. Перейдем в каталог конфигурации платформы на клиентском ПК: C:\Program Files (x86)\1cv8\conf\ (или C:\Program Files\1cv8\conf\ для 64-битного клиента).
  2. Откроем блокнотом от имени Администратора файл nethasp.ini.
  3. Отключим широковещательную рассылку и явно укажем IP-адреса хостов, где физически установлены USB-ключи с работающей службой 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.

Решение 3. Работа с программными лицензиями (.lic) на терминальном сервере

Если учет ведется на сервере удаленных рабочих столов (Terminal Server / RDP) с использованием программных лицензий, обратим внимание на следующие правила установки и очистки:

  1. Расположение файла лицензии: файл с расширением .lic должен находиться в общем системном каталоге для всех пользователей (обычно C:\ProgramData\1C\licenses). В этом случае каждый терминальный пользователь (RDP-сессия) захватывает ровно одну лицензию из файла и может запускать неограниченное число баз внутри своего сеанса.
  2. Удаление устаревших и битых файлов: при повторной активации пинкода (например, при расширении лицензии или восстановлении) платформа генерирует новый файл .lic, но оставляет старый файл в каталоге. Платформа опрашивает все найденные файлы по очереди. Если старый файл исчерпан или заблокирован, клиент тратит время на ошибки. Неактуальные файлы лицензий следует переместить в архивный каталог за пределы папки licenses.
  3. Запуск от имени Администратора при первой привязке: активацию многопользовательской программной лицензии в Конфигураторе необходимо запускать строго с повышенными привилегиями (Запуск от имени администратора), иначе файл запишется в пользовательский профиль AppData текущей учетной записи, и другие сеансы терминала не смогут получить к нему доступ.

Управление зависшими и спящими сеансами

Если сервер 1С все же вынужден раздавать часть лицензий (например, для мобильных или веб-клиентов), снизим время удержания лицензий неактивными подключениями. Для этого в консоли кластера в свойствах информационной базы скорректируем системные интервалы:

  1. Установим Время засыпания пассивных сеансов равным 1200 секунд (20 минут).
  2. Уменьшим параметр Время завершения спящих сеансов со стандартных 86400 секунд (сутки) до разумного предела — 1800 или 3600 секунд (от 30 минут до 1 часа).

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

← На главную