Как изменить интервал опроса сервера тонким клиентом и оптимизировать использование лицензий 1С

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

В процессе эксплуатации систем на базе 1С:Предприятие 8.3 администраторы часто сталкиваются с ситуацией нехватки клиентских лицензий. Одной из идей решения этой проблемы является изменение частоты опроса сервера («heartbeat») тонким клиентом, чтобы сеансы быстрее или, наоборот, реже подтверждали свою активность. Рассмотрим подробно, как работает этот механизм, можно ли его настроить и какие существуют альтернативные способы освобождения лицензий при бездействии пользователей.

Анализ работы механизма подтверждения активности (Heartbeat)

Для начала разберем техническую сторону вопроса. По умолчанию тонкий клиент 1С каждые 5–10 минут отправляет на сервер пакеты данных для подтверждения того, что сеанс все еще активен. Этот интервал жестко зашит в программный код платформы 1С. К сожалению, не существует штатного параметра запуска (вроде ключа командной строки), который мог бы изменить этот конкретный период опроса.

Проанализируем, почему это так. Платформа должна гарантировать, что сеанс не будет разорван из-за кратковременных сетевых сбоев, но при этом сервер должен своевременно узнавать о «падении» клиента. Жестко заданный интервал позволяет системе балансировать между нагрузкой на сеть и актуальностью списка активных пользователей.

Механизм «усыпания» сеансов и освобождение лицензий

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

  1. Способ выдачи лицензии: Лицензия освобождается только в том случае, если её выдал сервер 1С:Предприятия. Если же лицензия получена клиентом локально (например, через многопользовательский HASP-ключ, установленный прямо на рабочей станции, или локальную программную лицензию), она будет удерживаться до полного закрытия процесса 1cv8c.exe.
  2. Переход в спящий режим: Если пользователь не проявляет активности (не нажимает клавиши, не двигает мышью в окне программы), через определенное время сеанс помечается как «спящий». В этот момент сервер может забрать лицензию для другого пользователя.

Рассмотрим настройки в консоли администрирования кластера серверов 1С, которые помогут нам управлять этим процессом. Для каждой информационной базы можно задать:

Если мы установим время засыпания, например, 1200 секунд (20 минут), то через этот интервал лицензия освободится, даже если само окно программы у пользователя открыто. При возобновлении работы клиент попытается снова получить лицензию. Если свободные лицензии есть — работа продолжится незаметно. Если нет — пользователь увидит сообщение об отсутствии лицензии.

Программный метод контроля активности пользователя

Разберем ситуацию, когда стандартных настроек кластера недостаточно или они работают нестабильно. Мы можем реализовать собственный механизм контроля активности непосредственно в коде конфигурации. Для этого воспользуемся методом ПодключитьОбработчикОжидания.

Проанализируем алгоритм: мы будем отслеживать время последнего действия пользователя и, если оно превышает заданный порог, принудительно завершать работу системы. Это гарантированно освобождает лицензию любого типа.

В модуле управляемого приложения можно разместить следующий код:


Перем ВремяПоследнейАктивности;

Процедура ПриНачалеРаботыСистемы()
    ВремяПоследнейАктивности = ТекущаяДата();
    ПодключитьОбработчикОжидания("ПроверитьАктивностьПользователя", 60); // Проверка каждую минуту
КонецПроцедуры

Процедура ПроверитьАктивностьПользователя() Экспорт
    // Если прошло более 30 минут (1800 секунд)
    Если ТекущаяДата() - ВремяПоследнейАктивности > 1800 Тогда
        ЗавершитьРаботуСистемы(Ложь); 
    КонецЕсли;
КонецПроцедуры

Чтобы этот механизм работал корректно, нам нужно обновлять переменную ВремяПоследнейАктивности при любых действиях. В управляемых формах это можно сделать, перехватив события в формах или используя глобальные обработчики, однако наиболее надежный и простой способ для всей системы — проверять изменение данных или вызов серверных методов.

Оптимизация через использование веб-клиента

Проанализируем еще один эффективный путь — переход части пользователей на работу через веб-клиент. Выясним преимущества этого подхода в контексте лицензирования:

Влияние параметров публикации базы

Рассмотрим важный нюанс при публикации информационной базы. Если мы используем доступ через http или https даже для тонкого клиента, поведение системы меняется. В файле default.vrd можно косвенно влиять на сеансы. Однако ключевым остается флаг в настройках базы на сервере: «Разрешить выдачу лицензий сервером 1С:Предприятия».

Важно помнить: Если этот флаг включен, сервер считает лицензии «по сеансам». Если один и тот же человек откроет три окна одной базы, он займет три лицензии. Если флаг выключен (лицензии раздает сам клиент или веб-сервер), то одна лицензия может расходоваться на один компьютер/сессию, позволяя открывать несколько баз. В условиях дефицита программных лицензий правильная настройка этого флага может сэкономить до 20-30% пула лицензий без программных доработок.

Итоги и рекомендации

Подведем итог нашему анализу. Поскольку прямого способа изменить 5-минутный интервал «пинга» в тонком клиенте нет, мы рекомендуем комбинированный подход:

  1. Установите «Время засыпания пассивного сеанса» в консоли сервера 1С на приемлемый уровень (например, 15–20 минут). Убедитесь, что выдача лицензий настроена через сервер.
  2. Для критически важных участков, где лицензий катастрофически не хватает, внедрите обработчик ожидания в конфигурацию, который будет предупреждать пользователя и закрывать 1С при длительном простое.
  3. Рассмотрите возможность перевода части персонала на веб-клиент.
  4. Проверьте, не дублируются ли лицензии из-за одновременного использования HASP и программных ключей, и настройте приоритеты их использования в файле nnhasp.ini.

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

← На главную