Ситуация, когда при локальном запуске 1С лицензий «хоть попкой кушай», а внешние пользователи через браузер получают ошибку «Не обнаружено свободной лицензии», является классической проблемой настройки веб-сервера. Давайте разберем по шагам, как именно 1С ищет лицензии при работе через веб-клиент, чем это отличается от работы тонкого клиента и что нужно сделать, чтобы внешние подключения заработали стабильно.
Проанализируем ключевое отличие: в файловом варианте информационной базы веб-клиент (браузер) сам не занимается поиском аппаратного ключа или программной лицензии. Эту задачу берет на себя расширение веб-сервера (модуль 1С, встроенный в Apache или IIS). Выясним причину, по которой сервер может «не видеть» доступные ресурсы, даже если HASP License Manager запущен и исправен.
Рассмотрим последовательность, в которой веб-сервер ищет лицензию:
System или IUSR).Важно понимать: если ваш веб-сервер работает под учетной записью SYSTEM, он может просто не иметь прав на обращение к определенным сетевым ресурсам или не знать, где именно в сети находится HASP LM. Для решения этой проблемы нам необходимо правильно настроить файл 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 поможет быстрее высвобождать ресурсы, которые заняты неактивными пользователями.
Если манипуляции с аппаратным ключом не приносят стабильного результата, разберем альтернативный вариант — использование программных лицензий. Это наиболее надежный способ для работы через веб, так как он исключает сетевые задержки при поиске менеджера лицензий.
Проанализируем правильный алгоритм активации программной лицензии для веб-сервера:
.lic) сохранился в общую папку, доступную для службы веб-сервера, например: C:\ProgramData\1C\licenses.Важный нюанс: Чтобы веб-сервер мог раздавать эти лицензии внешним клиентам, в настройках публикации (или в свойствах базы в консоли, если бы это был клиент-сервер) должна стоять галочка «Разрешить выдачу лицензий сервером 1С». В файловом варианте расширение веб-сервера делает это автоматически, если находит лицензию локально.
Подведем итог нашему анализу. Если вы столкнулись с нехваткой лицензий только во внешней сети, выполните следующие действия:
nethasp.ini в папке bin веб-сервера, жестко прописав IP-адрес ключа.Соблюдение этих правил позволит обеспечить стабильную работу внешних пользователей и корректную утилизацию имеющегося парка лицензий 1С.