При переходе на новые версии платформы (начиная с 8.3.25 и особенно в 8.3.27) многие системные администраторы и пользователи сталкиваются с изменением поведения системы лицензирования. Типичная ситуация: на компьютере установлена одна однопользовательская программная лицензия. Раньше, на платформе 8.3.25, удавалось запустить две разные базы (например, «Бухгалтерия предприятия» и «Зарплата и управление персоналом»), опубликованные на Apache или IIS, в двух вкладках браузера или через тонкий клиент. Однако после обновления до версии 8.3.27 при попытке запустить вторую базу система выдает ошибку: «Не обнаружено свободной лицензии! Превышено максимальное количество пользователей».
В этой статье мы подробно разберем, почему так происходит, сравним поведение систем, проанализируем разницу в механизмах захвата лицензий и выясним, является ли это ошибкой платформы или ее штатным поведением.
Для начала проанализируем ситуацию, которую описывают пользователи (иногда применяя внешнее управление сеансами): локально в толстом клиенте обе базы продолжают открываться без проблем под одной лицензией, а через веб-сервер — нет. Выясним причину этой разницы. Рассмотрим два сценария владения лицензией:
1cv8.exe или 1cv8c.exe, обращаясь к ней по сетевому пути или локально, клиентское приложение само ищет лицензию на компьютере. Согласно правилам лицензирования 1С, одна клиентская лицензия, найденная на рабочем месте, позволяет запускать неограниченное количество сеансов (баз) в рамках одного терминального сеанса или одного рабочего места операционной системы. Именно поэтому в толстом клиенте всё «работает как раньше».Разберем важный нюанс: при публикации базы через веб-сервер программная лицензия «захватывается» самим веб-сервером. По правилам 1С, через веб-сервер программная лицензия выдается на каждый сеанс. Это означает, что если у вас одна однопользовательская лицензия, то веб-сервер отдаст её первому подключившемуся пользователю (первой базе), а для второго подключения свободных лицензий в его распоряжении больше не останется.
Проанализируем, почему на версии 8.3.25 пользователям удавалось обходить это ограничение. В старых релизах платформы существовала определенная техническая особенность (которую многие считали «фичей»), связанная с кшированием сеансов веб-сервером. Если запросы на веб-сервер приходили с одного и того же IP-адреса и в рамках одного идентификатора пользователя, система иногда могла «склеивать» эти запросы и использовать уже захваченную лицензию повторно.
В платформе 8.3.27 механизм контроля лицензий был значительно переработан и ужесточен. Разработчики устранили «утечки» и несоответствия в работе модулей расширения веб-сервера (таких как wsap24.dll для Apache). Теперь система строго следует лицензионному соглашению: один сеанс через веб-сервер — одна лицензия. То, что раньше работало на версии 8.3.25, было фактически недокументированной особенностью, которая теперь исправлена.
Рассмотрим текст ошибки, который видит пользователь при попытке запустить вторую базу:
Ошибка программного лицензирования.
Превышено максимальное количество пользователей,
разрешенное файлом программной лицензии: file://C:/ProgramData/1C/licenses/2****.lic
Этот текст прямо указывает на то, что файл лицензии найден, он валиден, но счетчик доступных лицензий в нем равен единице, и этот единственный слот уже занят первым активным сеансом на веб-сервере. Проверить это можно через Консоль администрирования серверов 1С (если используется клиент-серверный вариант) или через просмотр активных пользователей в самой базе.
Выясним, какие существуют способы решения данной задачи, если вам всё же необходимо работать в нескольких базах одновременно.
Если пользователь находится в одной локальной сети с сервером, самым простым решением будет отказаться от публикации через веб-сервер (HTTP/HTTPS) и подключить базу в списке через «На данном компьютере или на компьютере в локальной сети». В этом случае тонкий клиент сам найдет локальную лицензию на компьютере пользователя и позволит открыть столько баз, сколько нужно, используя всего одну лицензию.
Для удаленных сотрудников можно настроить VPN-туннель. После подключения по VPN компьютер удаленного пользователя окажется в локальной сети предприятия. Это позволит подключать базы напрямую (по пути \\Server\Base), минуя веб-сервер. Лицензирование при этом будет работать по «локальному» сценарию, разрешая множественный запуск баз.
Если работа через браузер критична (например, нет возможности установить платформу на клиентский ПК), единственным законным способом будет приобретение дополнительных лицензий. Каждая новая база в отдельной вкладке браузера потребует своей лицензии. Для работы в двух базах одновременно потребуется двухпользовательская лицензия или две однопользовательских.
В некоторых случаях можно попробовать проанализировать файл default.vrd, который создается при публикации базы. Рассмотрим его структуру:
<?xml version="1.0" encoding="UTF-8"?>
<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="/BaseName"
ib="File="C:\Bases\BaseName";">
<standardOdata enable="false"/>
</point>
Однако стоит помнить, что в версии 8.3.27 никакие манипуляции с этим файлом не заставят веб-сервер игнорировать отсутствие свободных лицензий в файле .lic. Система стала гораздо более чувствительной к количеству активных сеансов.
Подведем итог: поведение платформы 8.3.27 является штатным и корректным с точки зрения лицензионной политики компании «1С». Ограничение «один сеанс — одна лицензия» при работе через веб-сервер было всегда, но в старых версиях оно могло не соблюдаться из-за технических особенностей реализации. Чтобы сохранить возможность работы в нескольких базах под одной лицензией, рекомендуем использовать прямое подключение к базе (через локальную сеть или VPN) вместо публикации на веб-сервере.