Работа с 1С:Предприятием через веб-клиент — это удобное и современное решение, однако оно имеет свои технические особенности, особенно в вопросах лицензирования. Одной из наиболее распространенных проблем является ситуация, когда после закрытия вкладки браузера лицензия не освобождается мгновенно. В результате при попытке повторного входа пользователь видит сообщение о том, что свободные лицензии отсутствуют или превышено их допустимое количество. Разберем детально, почему это происходит и как правильно настроить систему, чтобы лицензии возвращались в пул максимально быстро.
Для начала выясним причину такого поведения системы. Когда мы работаем через тонкий или толстый клиент, приложение напрямую взаимодействует с менеджером лицензий. В случае же с веб-клиентом посредником выступает веб-сервер (в нашем случае Internet Information Services — IIS). Когда пользователь просто закрывает вкладку браузера нажатием на «крестик», веб-сервер не получает мгновенного уведомления о том, что работа завершена. Он продолжает считать сессию активной до тех пор, пока не истечет установленное в настройках время ожидания (тайм-аут).
Ситуация осложняется при использовании однопользовательских программных лицензий на файловых базах. В этом случае лицензию захватывает сам процесс веб-сервера. Пока сессия считается «живой» в памяти IIS, лицензия остается занятой. Проанализируем, какими методами можно сократить это время ожидания.
Самый простой и доступный способ — это изменение настроек публикации информационной базы. Рассмотрим по шагам, как это сделать:
Уменьшение этого параметра заставляет веб-сервер быстрее разрывать связь с неактивным клиентом, что ведет к освобождению ресурсов и лицензий.
Иногда настроек в интерфейсе Конфигуратора недостаточно для решения проблемы. В этом случае нам поможет прямое редактирование файла конфигурации публикации default.vrd. Этот файл находится в каталоге, куда была выполнена публикация (например, C:\inetpub\wwwroot\ваша_база\).
Рассмотрим структуру этого файла и параметры, которые отвечают за удержание сессий. Нам необходимо обратить внимание на атрибуты sessionTimeout и sessionMaxAge. Если этих параметров нет, их можно добавить вручную в секцию point.
Посмотрим на пример настройки файла default.vrd для ускоренного освобождения лицензий:
<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\Base1C";"
sessionTimeout="300"
sessionMaxAge="600">
<ws>
<point name="WebServiceName" alias="ws1.1cws"/>
</ws>
</point>
В данном примере параметр sessionTimeout="300" ограничивает время бездействия сессии пятью минутами. Это значит, что если от браузера не поступает запросов в течение этого времени, сервер сочтет сессию завершенной.
Поскольку веб-сервер IIS сам управляет рабочими процессами, полезно будет заглянуть в его собственные настройки. Это особенно актуально для систем на базе клиентских ОС (как Windows 7 в нашем случае), где есть ограничения на количество одновременных соединений.
Разберем, как настроить пул приложений:
DefaultAppPool).Важный момент: Слишком маленькое значение может привести к тому, что при редких обращениях пользователей пул будет постоянно перезапускаться, что вызовет задержки при первом открытии страниц («холодный старт»).
Проанализируем техническую разницу между закрытием вкладки и нажатием кнопки Выход. В интерфейсе 1С в правом верхнем углу (где отображается имя пользователя) всегда доступна команда завершения работы.
Когда пользователь нажимает «Выход», веб-клиент отправляет на сервер корректный синхронный сигнал о закрытии сессии. В этом случае 1С мгновенно уничтожает сеанс на сервере и освобождает лицензию. При закрытии «крестиком» браузер не всегда успевает отправить такой сигнал, и серверу приходится ждать наступления тайм-аута. Поэтому обучение пользователей правильному завершению работы — это самый эффективный беззатратный способ борьбы с «подвисшими» лицензиями.
Подведем итог нашему исследованию. Для того чтобы минимизировать время простоя лицензий при работе через браузер, рекомендуется комбинированный подход:
sessionTimeout.Соблюдение этих правил позволит вам избежать неприятных ситуаций с нехваткой лицензий и обеспечит стабильную работу системы даже на ограниченных ресурсах или однопользовательских лицензиях.