Как посмотреть используемые программные лицензии 1С и очистить зависшие сессии

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

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

Использование встроенной утилиты ring для аудита лицензий

Для получения списка всех установленных на сервере программных лицензий проанализируем возможности утилиты ring, которая входит в состав современной платформы 1С. Этот инструмент позволяет работать с лицензиями через командную строку, что удобно для автоматизации и формирования отчетов.

Разберем по шагам, как получить список лицензий:

  1. Откроем командную строку от имени администратора.
  2. Перейдем в каталог, где установлена утилита ring (путь может отличаться в зависимости от версии платформы):
  3. cd "c:\Program Files\1C\1CE\ring\"
  4. Выполним команду для получения общего списка зарегистрированных лицензий:
  5. ring license list
  6. Для получения подробной информации по конкретному номеру лицензии (например, чтобы узнать количество доступных рабочих мест), используем команду info:
  7. ring license info --name 49XXXXXXXXXXXXX-81XXXXXXXX

Важный нюанс: Утилита ring видит только те лицензии, которые были активированы через неё или находятся в стандартных путях поиска службы лицензирования. Если лицензии «раскиданы» по разным папкам пользователей, рекомендуется собрать их в общую директорию %ProgramData%\1C\licenses.

Мониторинг через консоль администрирования сервера 1С

Рассмотрим, как правильно интерпретировать данные в стандартной консоли сервера 1С. Если мы перейдем в ветку Сеансы, в заголовке окна справа будет указано общее количество активных сеансов. Однако, как отмечают многие специалисты, это число часто не соответствует реальному количеству занятых лицензий из-за «зависших» подключений.

Проанализируем свойства конкретного сеанса. В колонке Лицензия можно увидеть подробное описание:

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

Решение проблемы зависших сессий в терминальной среде (RDP)

Выясним причину, почему лицензии не освобождаются. Часто это происходит при использовании Linux-клиентов (например, через FreeRDP) или некорректном закрытии окна терминала пользователем. В таких случаях процесс 1cv8.exe на сервере не завершается, а переходит в состояние «Disconnected», продолжая удерживать лицензию.

Для исправления ситуации выполним следующие настройки на стороне Windows Server:

  1. Откроем Редактор локальной групповой политики (gpedit.msc).
  2. Перейдем в раздел: Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Ограничение сеансов по времени.
  3. Найдем параметр Задать предел времени для отключенных сеансов. Установим его в значение «1 минута» или «5 минут». Это заставит сервер принудительно завершать все процессы пользователя после закрытия окна RDP.
  4. Также полезно включить параметр Завершать сеанс при достижении предела времени.

Использование специализированных инструментов мониторинга

Если штатных средств недостаточно, рассмотрим более продвинутые методы мониторинга, такие как 1С:Сервер лицензирования. Это отдельный программный продукт, который позволяет:

Для системных администраторов, предпочитающих автоматизацию, эффективным решением будет использование связки Prometheus + Grafana с установленным 1c_exporter. Это позволит построить графики потребления лицензий и настроить уведомления в Telegram, если количество свободных лицензий станет критически малым.

Программный метод получения данных о лицензиях

Посмотрим, как можно программно извлечь информацию о сессиях и лицензиях через COMConnector. Это позволяет создать внешнюю обработку, которая будет выводить только «чистые» данные, игнорируя спящие сеансы.

Пример логики на языке 1С:


Соединитель = Новый COMОбъект("V83.COMConnector");
Соединение = Соединитель.ConnectServer("ИмяСервера");
Соединение.Authenticate(АдминистраторКластера, ПарольАдминистратора);
Кластеры = Соединение.GetClusters();
РабочийПроцесс = Соединение.GetWorkingProcesses(Кластеры[0]);

Для Каждого Процесс Из РабочийПроцесс Цикл
    Сеансы = Соединение.GetSessions(Кластеры[0]);
    Для Каждого Сеанс Из Сеансы Цикл
        // Здесь можно проанализировать свойство Сеанс.License
        // и отфильтровать активные сессии от зависших
    КонецЦикла;
КонецЦикла;

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

← На главную