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

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

Ситуация, когда при локальном запуске 1С лицензий «хоть попкой кушай», а внешние пользователи через браузер получают ошибку «Не обнаружено свободной лицензии», является классической проблемой настройки веб-сервера. Давайте разберем по шагам, как именно 1С ищет лицензии при работе через веб-клиент, чем это отличается от работы тонкого клиента и что нужно сделать, чтобы внешние подключения заработали стабильно.

Разберем механизм поиска лицензий веб-сервером

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

Рассмотрим последовательность, в которой веб-сервер ищет лицензию:

  1. Локальные ключи: Сначала проверяются ключи защиты, установленные непосредственно в USB-порт сервера.
  2. Программные лицензии: Затем система ищет файлы программных лицензий в профиле пользователя, от имени которого запущен веб-сервер (обычно это System или IUSR).
  3. Сетевые ключи: В последнюю очередь расширение веб-сервера пытается найти менеджер лицензий в сети.

Важно понимать: если ваш веб-сервер работает под учетной записью SYSTEM, он может просто не иметь прав на обращение к определенным сетевым ресурсам или не знать, где именно в сети находится HASP LM. Для решения этой проблемы нам необходимо правильно настроить файл nethasp.ini.

Настройка nethasp.ini для веб-сервера

Разберем типичную ошибку: администратор настраивает nethasp.ini в папке с платформой 1С (например, C:\Program Files\1cv8\conf), но веб-сервер продолжает игнорировать сетевой ключ. Посмотрим, куда нужно поместить файл конфигурации, чтобы Apache его «подцепил».

Для веб-сервера Apache на Windows файл nethasp.ini должен быть скопирован в папку bin самого Apache. Проанализируем пример настройки этого файла для принудительного указания адреса сервера лицензий:


[NH_COMMON]
NH_TCPIP = ADENABLED

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; Укажите здесь IP вашего сервера с ключом
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = DISABLED

После внесения изменений обязательно выполним перезапуск службы веб-сервера. Это гарантирует, что расширение 1С увидит настройки и направит запрос на получение лицензии по конкретному IP-адресу.

Специфика подсчета лицензий в веб-клиенте

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

Проанализируем ситуацию: автор зашел тремя браузерами под двумя пользователями и тем самым «застолбил» за собой сразу 3-6 лицензий. Если общее количество свободных лицензий невелико, внешним пользователям просто не хватает места в очереди.

Проблема «зависших» сессий и таймаутов

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

Рассмотрим, как можно оптимизировать это поведение через файл публикации default.vrd. Мы можем уменьшить время жизни спящего сеанса, добавив параметры в секцию point:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       base="/MyBase" 
       ib="File="C:\Bases\MyBase";">
    <ws>
        <session poolSize="10" poolTimeout="5" />
    </ws>
</point>

Здесь параметр poolTimeout поможет быстрее высвобождать ресурсы, которые заняты неактивными пользователями.

Использование программных лицензий на веб-сервере

Если манипуляции с аппаратным ключом не приносят стабильного результата, разберем альтернативный вариант — использование программных лицензий. Это наиболее надежный способ для работы через веб, так как он исключает сетевые задержки при поиске менеджера лицензий.

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

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

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

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

Подведем итог нашему анализу. Если вы столкнулись с нехваткой лицензий только во внешней сети, выполните следующие действия:

  1. Проверьте HASP Monitor. Если вы видите, что лицензии заняты с таймаутом, отличным от нуля, значит веб-сервер их удерживает.
  2. Настройте nethasp.ini в папке bin веб-сервера, жестко прописав IP-адрес ключа.
  3. Проверьте права пользователя, от которого запущен Apache. Попробуйте временно запустить службу от имени администратора для диагностики прав доступа.
  4. Приучите пользователей нажимать кнопку «Завершить работу» вместо закрытия вкладки браузера.

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

← На главную