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

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

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

Проанализируем типичную ситуацию:

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

Пользователи на своих рабочих местах запускают тонкий клиент, он находит лицензии на Компьютере 2 и все работает. Но как только пользователь открывает браузер и пытается подключиться к базе через веб-сервер на Компьютере 3, он видит ошибку. Интуитивно кажется, что нужно «научить» веб-сервер IIS искать лицензии, но это фундаментальное заблуждение.

Ключевое различие в получении лицензий

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

Тонкий/Толстый клиент — это самостоятельное приложение. При запуске оно может напрямую взаимодействовать с компонентами лицензирования. Оно способно само найти в сети менеджер лицензий (через широковещательный запрос или по настройкам в файле nethasp.ini), запросить у него лицензию и использовать ее для своей работы.

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

Схема работы веб-клиента выглядит так:

  1. Пользователь в браузере обращается к адресу опубликованной базы.
  2. Веб-сервер (IIS) принимает этот запрос и, как простой посредник, перенаправляет его на кластер серверов 1С.
  3. Кластер серверов 1С создает новый сеанс для этого веб-подключения.
  4. Именно в этот момент сервер 1С пытается получить клиентскую лицензию для созданного сеанса.

Отсюда следует главный вывод: проблема не в веб-сервере, а в сервере «1С:Предприятия». Бесполезно настраивать IIS, писать на нем файлы nethasp.ini или менять пользователя пула приложений. Настраивать нужно тот компонент, который фактически запрашивает лицензию — то есть кластер серверов 1С.

Пошаговое решение проблемы

Теперь, когда мы выяснили причину, давайте по шагам настроим нашу систему для корректной работы веб-клиентов.

Шаг 1. Разрешаем кластеру серверов 1С выдавать лицензии

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

  1. Откройте консоль «Администрирование серверов 1С:Предприятия» на Компьютере 1, где установлен кластер.
  2. В дереве консоли раскройте ветку с вашим кластером.
  3. Нажмите правой кнопкой мыши на имени кластера (например, «Локальный кластер») и выберите «Свойства».
  4. В открывшемся окне найдите параметр, отвечающий за раздачу лицензий. Обычно он называется «Выдавать лицензии сервером» или имеет схожий смысл.
  5. Установите этот флаг. Этим действием вы говорите кластеру: «Теперь ты отвечаешь за обеспечение лицензиями сеансов, которые ты обслуживаешь».
  6. Сохраните изменения. Возможно, потребуется перезапуск службы «Агент сервера 1С:Предприятия 8».

После этого кластер начнет пытаться получить лицензию для каждого нового сеанса, включая сеансы веб-клиентов.

Шаг 2. Настраиваем доступ сервера 1С к менеджеру лицензий

Теперь, когда сервер 1С готов выдавать лицензии, ему нужно их где-то взять. Поскольку менеджер лицензий находится на другой машине (Компьютер 2), мы должны обеспечить их сетевое взаимодействие.

Настройка файла nethasp.ini на сервере 1С

Файл nethasp.ini нужен не только на клиентских машинах, но и на самом сервере 1С (Компьютер 1), если он должен искать лицензии в сети.

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

Важные моменты:

Проверка брандмауэра и портов

Менеджер лицензий HASP по умолчанию использует порт 475 по протоколам TCP и UDP. Убедитесь, что:

Проверить доступность порта можно с помощью утилиты `telnet` из командной строки на сервере 1С: telnet 192.168.1.100 475. Если экран станет черным, значит, подключение успешно. Если будет ошибка, значит, порт заблокирован.

Шаг 3. Проверяем пользователя службы сервера 1С

Служба «Агент сервера 1С:Предприятия 8» (ragent.exe) работает от имени определенного пользователя. В некоторых случаях стандартный пользователь Local System может иметь ограничения на доступ к сетевым ресурсам. Если предыдущие шаги не помогли, попробуйте изменить пользователя службы:

  1. Откройте оснастку «Службы» (services.msc).
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3».
  3. Откройте ее свойства и перейдите на вкладку «Вход в систему».
  4. Переключите на опцию «С учетной записью» и укажите данные доменного пользователя, у которого точно есть права на доступ к сети. Это должна быть учетная запись с минимально необходимыми привилегиями, но с возможностью сетевого взаимодействия.
  5. Сохраните изменения и перезапустите службу.

Лицензирование для обмена через HTTP-сервисы

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

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

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

← На главную