При переходе на работу через веб-клиент многие администраторы и разработчики сталкиваются с неожиданной проблемой: система, которая годами исправно работала в терминальном режиме (RDP) с минимальным количеством лицензий, начинает блокировать пользователей при подключении через браузер. Рассмотрим подробно, почему так происходит, как работают механизмы защиты 1С и чем отличается лицензирование платформы от лицензирования конкретных прикладных решений.
Первое и самое важное заблуждение, которое необходимо развеять: лицензируется не код конфигурации, а сама платформа 1С:Предприятие. Проанализируем логику правообладателя. Даже если вы разработали собственную информационную базу с нуля, для её запуска и функционирования вы используете среду исполнения — платформу.
Согласно лицензионному соглашению, каждое рабочее место, на котором запускается платформа 1С, должно быть обеспечено клиентской лицензией. Исключение составляют лишь случаи разработки, предусмотренные технологическими поставками, но и они жестко ограничены количеством одновременных сеансов. Таким образом, аргумент "у нас свой продукт" не освобождает от необходимости покупки лицензий на саму платформу для каждого пользователя.
Разберем техническую сторону вопроса. В случае работы через Remote Desktop Protocol (RDP) клиентское приложение 1С запускается непосредственно в сессии пользователя на сервере. В этой ситуации проверка лицензии выполняется исполняемыми файлами самой платформы. Если на сервере применены средства обхода защиты (так называемые «патчи» или эмуляторы), проверка лицензии может игнорироваться кодом приложения.
Ситуация кардинально меняется при публикации базы на веб-сервере (Apache или IIS). Выясним причину: при использовании веб-клиента за проверку лицензий отвечает модуль расширения веб-сервера. Этот компонент работает независимо от клиентских «патчей» и обращается напрямую к системе защиты. Модуль веб-сервера строго следует правилу: одна программная однопользовательская лицензия — один сеанс. Если первый пользователь занял лицензию, второй получит отказ, так как веб-сервер «видит» реальное состояние доступных ключей или лицензионных файлов.
Проанализируем поведение программных лицензий (файлов с расширением .lic). Существует два типа таких лицензий:
Важно помнить, что официально однопользовательская лицензия в терминальном режиме не позволяет работать нескольким пользователям одновременно, даже если технически (из-за особенностей настройки или взлома) это удается реализовать.
Чтобы понять, какая именно лицензия используется в данный момент, рассмотрим раздел «О программе». Посмотрим на пример данных, которые могут там отображаться:
Текущая:
803001209, клиент, 22.01.2019 0:00:00, CVN-654-321.lic, получило клиентское приложение
Информационная база:
Локальный HASP4 ORGL8 10
Локальный HASP4 ORGL8 100
Конфигурация:
Локальный HASP4 ORGL8 500
Разберем эти данные по шагам:
.lic.HASP4 ORGL8 500, это не значит, что у вас есть ключ на 500 пользователей. Это означает, что когда-то (возможно, у разработчика во франчайзи) эта база открывалась с таким ключом, и запись об этом сохранилась в таблицах базы данных. Не стоит путать историю с текущим правом на использование.Иногда проблема «нехватки лицензий» в веб-клиенте связана с тем, что пользователи не завершают работу корректно (просто закрывают вкладку браузера). В этом случае лицензия остается занятой еще некоторое время (таймаут сессии). Рассмотрим, как можно оптимизировать этот процесс.
В файле публикации 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="/MyBase"
ib="Srvr="Server1C";Ref="MyBase";">
<standardOdata enable="false"/>
<publish>
<sessions timeout="600" />
</publish>
</point>
Параметр sessions timeout позволяет ограничить время жизни «брошенного» сеанса. Также полезно настроить в самой информационной базе время засыпания пассивного сеанса. Это позволит платформе высвобождать лицензию для другого пользователя, если текущий не проявляет активности в течение 5–10 минут.
Если ваша задача — обеспечить стабильную работу нескольких пользователей через веб-клиент, рекомендуется придерживаться следующего алгоритма:
default.vrd.Помните, что использование «патченных» версий платформы не только нарушает закон, но и создает техническую нестабильность, которая в первую очередь проявляется именно в веб-технологиях 1С.