При работе с 1С в клиент-серверном варианте часто возникает ситуация, когда пользователи тонкого или толстого клиента успешно получают лицензии и работают, а при попытке зайти в ту же базу через браузер (веб-клиент) система выдает ошибку «Не найдена лицензия 1С». При этом веб-сервер (например, IIS на Windows Server) исправен, а менеджер лицензий в сети доступен. Давайте разберемся, почему так происходит и как правильно настроить систему.
Проанализируем типичную ситуацию:
Пользователи на своих рабочих местах запускают тонкий клиент, он находит лицензии на Компьютере 2 и все работает. Но как только пользователь открывает браузер и пытается подключиться к базе через веб-сервер на Компьютере 3, он видит ошибку. Интуитивно кажется, что нужно «научить» веб-сервер IIS искать лицензии, но это фундаментальное заблуждение.
Чтобы решить проблему, нужно понять, как разные типы клиентов получают лицензии. Здесь кроется корень всех трудностей.
Тонкий/Толстый клиент — это самостоятельное приложение. При запуске оно может напрямую взаимодействовать с компонентами лицензирования. Оно способно само найти в сети менеджер лицензий (через широковещательный запрос или по настройкам в файле nethasp.ini), запросить у него лицензию и использовать ее для своей работы.
Веб-клиент — это, по сути, лишь «картинка» в браузере. В нем нет никакой логики для поиска лицензий. Браузер всего лишь отправляет HTTP-запросы на веб-сервер и отображает полученный ответ. Всю работу по выполнению кода 1С, обработке данных и, что самое главное, по управлению сеансом и лицензированием, выполняет сервер «1С:Предприятия».
Схема работы веб-клиента выглядит так:
Отсюда следует главный вывод: проблема не в веб-сервере, а в сервере «1С:Предприятия». Бесполезно настраивать IIS, писать на нем файлы nethasp.ini или менять пользователя пула приложений. Настраивать нужно тот компонент, который фактически запрашивает лицензию — то есть кластер серверов 1С.
Теперь, когда мы выяснили причину, давайте по шагам настроим нашу систему для корректной работы веб-клиентов.
Первая и основная причина проблемы в нашем примере — это прямая настройка в кластере, запрещающая ему управлять лицензиями. Это необходимо исправить.
После этого кластер начнет пытаться получить лицензию для каждого нового сеанса, включая сеансы веб-клиентов.
Теперь, когда сервер 1С готов выдавать лицензии, ему нужно их где-то взять. Поскольку менеджер лицензий находится на другой машине (Компьютер 2), мы должны обеспечить их сетевое взаимодействие.
Настройка файла nethasp.ini на сервере 1С
Файл nethasp.ini нужен не только на клиентских машинах, но и на самом сервере 1С (Компьютер 1), если он должен искать лицензии в сети.
nethasp.ini в каталоге с установленной платформой 1С на сервере (например, C:\Program Files\1cv8\conf).192.168.1.100 на IP-адрес вашего Компьютера 2.
[NH_COMMON]
NH_TCPIP = Enabled ; Включаем протокол TCP/IP
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; Явно указываем IP-адрес сервера с менеджером лицензий
NH_TCPIP_METHOD = TCP ; Указываем использовать протокол TCP
NH_USE_BROADCAST = Disabled ; Отключаем широковещательные запросы для надежности
Важные моменты:
NH_USE_BROADCAST = Disabled) и явное указание IP-адреса (NH_SERVER_ADDR) делают поиск ключа более быстрым и надежным, особенно в сложных сетях с несколькими подсетями.Проверка брандмауэра и портов
Менеджер лицензий HASP по умолчанию использует порт 475 по протоколам TCP и UDP. Убедитесь, что:
Проверить доступность порта можно с помощью утилиты `telnet` из командной строки на сервере 1С: telnet 192.168.1.100 475. Если экран станет черным, значит, подключение успешно. Если будет ошибка, значит, порт заблокирован.
Служба «Агент сервера 1С:Предприятия 8» (ragent.exe) работает от имени определенного пользователя. В некоторых случаях стандартный пользователь Local System может иметь ограничения на доступ к сетевым ресурсам. Если предыдущие шаги не помогли, попробуйте изменить пользователя службы:
services.msc).Вопрос лицензирования актуален не только для интерактивных сеансов пользователей, но и для фоновых, системных подключений, например, при обмене данными между базами через HTTP-сервисы.
Когда одна база 1С обращается к HTTP-сервису, опубликованному на другой базе, для этого вызова также требуется клиентская лицензия. Сервер 1С, на котором опубликован HTTP-сервис, будет пытаться получить лицензию для этого внешнего подключения. Таким образом, все описанные выше шаги по настройке кластера и обеспечению доступа к менеджеру лицензий полностью применимы и к этому сценарию. Убедитесь, что на сервере-поставщике HTTP-сервиса есть достаточное количество свободных лицензий для обслуживания как пользователей, так и фоновых обменов.
Выполнив эти шаги, вы правильно настроите архитектуру лицензирования, и ваш сервер «1С:Предприятия» сможет успешно получать лицензии от менеджера и предоставлять их веб-клиентам, решая проблему с ошибкой «Не найдена лицензия 1С».