Вопрос мониторинга программных лицензий 1С:Предприятие 8.3 является критически важным для системных администраторов, особенно в крупных организациях или при использовании облачных инфраструктур. В отличие от аппаратных ключей (HASP), программные лицензии визуально не "видны", и часто возникает ситуация, когда необходимо оперативно узнать, сколько лицензий уже активировано, какие из них используются, а какие свободны. Разберем основные способы решения этой задачи, начиная от стандартных инструментов и заканчивая программными методами.
Одним из самых мощных и официальных инструментов для управления лицензиями является утилита ring. Это кроссплатформенная утилита, входящая в состав дистрибутива 1С. Рассмотрим, как с ней работать. Прежде всего, важно помнить, что для функционирования ring в системе должна быть установлена среда выполнения Java (JRE).
Проанализируем основные команды, которые нам понадобятся. Для того чтобы увидеть список всех программных лицензий, зарегистрированных на данном компьютере, необходимо выполнить следующую команду в командной строке:
ring license list
Эта команда выведет список идентификаторов (имен) всех установленных лицензий. Однако сама по себе эта информация мало что дает. Чтобы получить подробности, разберем команду получения детальной информации:
ring license info --name <Имя_лицензии>
Где <Имя_лицензии> — это идентификатор, полученный из предыдущей команды. В ответ утилита выдаст данные в формате JSON, где будут указаны:
Посмотрим на пример автоматизации. Поскольку вывод данных осуществляется в формате JSON, мы можем написать сценарий (на PowerShell или Python), который будет запускать ring по расписанию, парсить результат и выводить сводную таблицу по всем активированным лицензиям. Это позволит избежать ручной проверки каждой лицензии по отдельности.
Выясним причину, по которой иногда проще обратиться к файлам напрямую. Если утилита ring не установлена или нет возможности запустить Java, можно проанализировать файлы лицензий в файловой системе. Программные лицензии 1С представляют собой файлы с расширением .lic.
Рассмотрим типичные пути размещения этих файлов:
C:\ProgramData\1C\licenses или папка профиля пользователя, от имени которого запущен сервер 1С./var/1C/licenses.Хотя файлы лицензий являются бинарными и их нельзя просто прочитать в текстовом редакторе, само их наличие и количество дают важную информацию. Каждая активация (даже если это повторная активация после изменения параметров железа) создает новый файл. Важно помнить: если вы видите в папке много файлов, это не всегда означает, что у вас много лицензий — возможно, это история переактиваций одной и той же лицензии. Для точной идентификации можно использовать сторонние утилиты, такие как liccnt (License Counter), которые умеют "заглядывать" внутрь этих файлов и показывать регистрационный номер и номинал (количество рабочих мест).
Разберем стандартный, но ограниченный способ мониторинга через консоль администрирования (MMC-оснастку). Если вы используете клиент-серверный вариант работы, то в разделе "Сеансы" есть колонка "Лицензия".
Проанализируем ситуацию: в этой колонке отображается, какая именно лицензия выдана конкретному пользователю. Однако здесь есть существенный нюанс. Консоль показывает только те лицензии, которые **заняты** в данный момент. Если у вас куплена лицензия на 100 пользователей, а в системе сейчас сидит 10 человек, вы увидите информацию только по этим 10 лицензиям. Узнать общий объем купленного пула лицензий через стандартную консоль невозможно.
Этот метод полезен для оперативной проверки: "Кто занял последнюю лицензию?", но бесполезен для инвентаризации всех активов компании.
Начиная с версии платформы 8.3.15, разработчики добавили возможность получать сведения о лицензиях непосредственно из кода на встроенном языке 1С. Это открывает широкие возможности для создания собственных отчетов по мониторингу прямо внутри информационной базы.
Рассмотрим пример кода, который позволяет получить массив структур с описанием лицензий:
// Пример получения информации о лицензиях
МассивЛицензий = ПолучитьИнформациюОПрограммныхЛицензиях();
Для Каждого Лицензия Из МассивЛицензий Цикл
Сообщить("Рег. номер: " + Лицензия.РегистрационныйНомер);
Сообщить("Количество мест: " + Лицензия.КоличествоРабочихМест);
Сообщить("Путь к файлу: " + Лицензия.ПутьКФайлу);
КонецЦикла;
Использование метода ПолучитьИнформациюОПрограммныхЛицензиях() позволяет создать обработку, которая будет выводить на форму список всех доступных системе лицензий, их тип (клиентская или серверная) и параметры активации. Это особенно удобно для администраторов файловых баз, работающих через веб-сервер, так как им не нужно настраивать сложные системы мониторинга типа Zabbix.
Для крупных инфраструктур рекомендуется использовать профессиональные системы сбора метрик. Рассмотрим, как настроить такую связку. Основная идея заключается в создании скрипта-агента, который будет выполнять команды ring и передавать данные в Zabbix.
Посмотрим на алгоритм работы такого скрипта:
ring license list для получения списка всех ID.ring license info.КоличествоРабочихМест.Это позволяет строить графики использования лицензий во времени и настраивать уведомления (триггеры), если количество свободных лицензий приближается к критическому минимуму (например, осталось менее 5% свободных мест).
Выясним причину сложностей при работе через Apache или IIS. Если пользователи работают через веб-клиент, лицензии может выдавать либо сервер 1С (в клиент-серверном варианте), либо модуль расширения веб-сервера (в файловом варианте). Если лицензии установлены на веб-сервере, то информация о них также будет доступна через ring, запущенный на этом сервере.
Важный момент: если вы используете многопользовательскую лицензию, активированную на сервере, платформа считает "сеансы", а не "компьютеры". Мониторинг в этом случае должен быть сосредоточен именно на подсчете общего номинала всех активированных .lic файлов по сравнению с текущим количеством активных соединений в журнале регистрации или через COM-соединение к серверу.
Подводя итог, можно сказать, что наиболее надежным и современным способом контроля является сочетание утилиты ring для инвентаризации и встроенной функции ПолучитьИнформациюОПрограммныхЛицензиях() для оперативного контроля внутри программы.