Где сервер 1С берёт лицензии и как убедиться, что их хватает
Содержание
Быстрее всего проверить лицензию 1С на сервере тремя способами. Консоль администрирования серверов покажет, какие лицензии сейчас заняты сеансами. Команда rac session list --licenses выдаст то же самое в текст для скрипта. Утилита ring license list перечислит программные лицензии, которые лежат на сервере. Для аппаратного ключа HASP добавьте четвёртую проверку — страницу http://localhost:1947.
Выбор зависит от задачи. Нужно разово понять, «сколько занято из скольких» — хватит консоли. Пользователи получают Не обнаружено свободной лицензии!, а лицензии вроде бы есть — нужен техжурнал с событием LIC. Хотите заранее знать о нехватке — автоматизируйте rac. Всё ниже относится к платформе 8.3 в клиент-серверном варианте, конфигурация (БП, ЗУП, УТ) роли не играет.
Какие лицензии нужны серверу 1С и где они хранятся
На сервере работают лицензии двух видов, и проверять их нужно по-разному.
- 🖥️ Серверная лицензия — разрешает запуск рабочих процессов кластера. Без неё сервер 1С не обслуживает базы. Разрядность важна: лицензия на 32-разрядный сервер не подходит для 64-разрядного.
- 👥 Клиентские лицензии — по одной на каждое подключение пользователя. Их может выдавать сам сервер (если файлы клиентских лицензий лежат на нём) или каждый компьютер пользователя сам.
Носитель тоже бывает двух типов:
| Носитель | Где искать | Чем проверять |
|---|---|---|
Программная лицензия (файл .lic) | Windows: C:\ProgramData\1C\licenses; Linux: /var/1C/licenses | ring license list, консоль, техжурнал |
| Аппаратный ключ HASP | USB-порт сервера или сервера лицензий | http://localhost:1947, менеджер лицензий HASP |
Программная лицензия привязана к параметрам оборудования. Заменили материнскую плату, сетевую карту, переехали на другую виртуальную машину — файл остаётся на диске, но перестаёт считаться действительным. Это самая частая причина внезапного отказа после «ничего не меняли».
Если на сервере работает служба 1С, а лицензия активировалась под учётной записью пользователя, файл может лечь в профиль этого пользователя. Служба его не увидит. Для сервера лицензию активируют так, чтобы файл попал в общий каталог ProgramData.
Проверка в консоли администрирования серверов 1С
Консоль — основной инструмент, когда нужно увидеть картину прямо сейчас. Она подключается к агенту сервера (порт 1540 по умолчанию) и показывает данные кластера.
Посмотреть, какие лицензии заняты
- Запустите консоль администрирования серверов 1С:Предприятия той же версии, что и сервер.
- Разверните
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер>. - Откройте узел Сеансы. Каждая строка — подключение пользователя. В свойствах сеанса видно, какая лицензия ему выдана и откуда она получена.
- Разверните Рабочие процессы и выберите процесс. У процесса есть вложенный узел Лицензии — там лицензии, которые захватил именно этот процесс, в том числе серверная.
Если в узле лицензий рабочего процесса пусто, а базы не открываются, сервер не нашёл серверную лицензию. Дальше идите в раздел про файлы и ключи.
Включить выдачу клиентских лицензий сервером
Когда клиентские лицензии лежат на сервере, база должна разрешать их выдачу. Откройте свойства информационной базы в узле Информационные базы и проверьте параметр, разрешающий выдачу лицензий сервером 1С:Предприятия. Если выдача выключена, клиенты будут искать лицензию у себя на компьютере и не найдут.
Если консоль не открывается и пишет про незарегистрированный компонент, перерегистрируйте radmin.dll нужной версии командой regsvr32 от имени администратора. Путь к файлу — каталог bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll (номер подставьте свой).
Файлы лицензий, реестр и конфигурационные файлы
Консоль показывает только то, что сервер уже взял. Чтобы понять, что у него вообще есть, проверьте файлы.
Каталог с файлами .lic
Откройте C:\ProgramData\1C\licenses (или /var/1C/licenses на Linux). Там лежат файлы с расширением .lic — по одному на активированный пинкод.
- 📄 Файлов нет — лицензия не активирована на этом сервере или лежит в профиле пользователя.
- 📄 Файлов больше, чем купленных комплектов, — на сервер когда-то активировали лишнее или переносили лицензии; лишние ничего не дают, но путают при учёте.
- 🔒 У учётной записи, под которой запущена служба агента, должны быть права на чтение каталога. Иначе файлы есть, а лицензии «не найдены».
Содержимое файла руками не правят: любая правка делает лицензию недействительной.
Утилита ring license
В составе платформы 8.3 есть компонент лицензирования с утилитой ring. Она показывает лицензии без запуска 1С:
ring license list
ring license info --name <имя-лицензии-из-list>
Первая команда выводит имена лицензий из стандартного каталога. Вторая показывает данные конкретной: на кого выдана, какой продукт и на сколько пользователей. Если утилита сообщает, что лицензия не соответствует оборудованию, — это ровно тот случай с заменой железа. Остальные параметры смотрите в ring license --help.
Реестр и параметры службы
Сами лицензии в реестре Windows не хранятся. Но реестр помогает найти, где работает сервер. Ветка службы агента сервера лежит в HKLM\SYSTEM\CurrentControlSet\Services\, название службы содержит 1C:Enterprise 8.3 Server Agent. В параметре ImagePath видно:
- путь к
ragent.exe— значит, и версию платформы; - порты агента (
-port, по умолчанию 1540) и менеджера (-regport, 1541); - диапазон портов рабочих процессов (
-range, обычно1560:1591); - каталог данных кластера (
-d, обычноsrvinfo).
Версия из ImagePath должна совпадать с версией консоли и клиента. Расхождение — частый источник путаницы при проверке.
Для сетевых ключей HASP клиенты ищут сервер ключей по файлу nethasp.ini в каталоге conf платформы. Если менеджер лицензий стоит на отдельной машине, её адрес прописывают в параметре NH_SERVER_ADDR.
Ключи защиты HASP и пинкоды
Аппаратный ключ
- Убедитесь, что ключ виден системе: на сервере откройте в браузере
http://localhost:1947. Это страница управления драйвером Sentinel. В списке ключей должен быть ваш. - Ключа в списке нет — переустановите драйвер HASP, переткните ключ в другой порт, на виртуальной машине проверьте проброс USB.
- Для сетевых клиентских ключей должна работать служба менеджера лицензий HASP. Без неё клиенты в сети ключ не увидят.
Переустановку драйвера и перезапуск службы менеджера лицензий делайте вне рабочего времени: пользователи, которые сейчас работают по сетевому ключу, потеряют лицензию и будут отключены.
Программная лицензия и пинкоды
Пинкод — это код активации из конверта комплекта. К основному пинкоду прилагаются резервные. Каждая повторная активация (после смены оборудования или переустановки) расходует один пинкод.
Проверьте и запишите:
- какие пинкоды уже использованы и на каком сервере;
- сколько резервных осталось;
- регистрационный номер комплекта — он понадобится, если резерв кончился и нужно восстанавливать лицензию через центр лицензирования.
Не активируйте пинкод «на пробу» на тестовой машине: он израсходуется, и для рабочего сервера останется меньше резервных.
Журнал регистрации, техжурнал и сообщения об ошибках
Журнал регистрации информационной базы (Администрирование → Обслуживание → Журнал регистрации) показывает начало и завершение сеансов. По нему удобно понять, кто и когда входил, если подозрение на «лишних» пользователей. Причину отказа в лицензии он обычно не раскрывает.
Для этого есть технологический журнал и событие LIC. Создайте файл logcfg.xml в каталоге conf платформы на сервере:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\techlog\lic" history="24">
<event>
<eq property="name" value="LIC"/>
</event>
<property name="all"/>
</log>
</config>
Сервер подхватывает файл без перезапуска, через минуту-другую. Воспроизведите ошибку и откройте свежие файлы .log в C:\techlog\lic. В событиях видно, какие файлы и ключи сервер перебирал и почему отказался от каждого.
Техжурнал быстро растёт. Держите history небольшим и удалите logcfg.xml, когда закончите. Каталог для логов должен быть доступен на запись учётной записи службы.
Лимиты подключений: считаем занятые и свободные лицензии
Количество клиентских лицензий складывается из всех доступных комплектов: файлов .lic плюс ключей. Например, на сервере лежат лицензии на 10 и на 5 рабочих мест — всего 15 одновременных подключений.
Что занимает лицензию:
- 👤 каждый сеанс пользователя в тонком, толстом или веб-клиенте;
- 🔁 подключения внешних программ через COM, если они открывают сеанс базы;
- 🌐 подключения через веб-сервисы и HTTP-сервисы при работе с базой.
Фоновые задания и сеансы Конфигуратора считаются по своим правилам, поэтому реальную картину смотрите в списке сеансов, а не на глаз.
Как найти «утечку» лицензий:
- Отсортируйте сеансы в консоли по времени начала.
- Найдите сеансы, которые висят днями, и сеансы одного пользователя с разных компьютеров.
- Уточните у пользователя, работает ли он. Если нет — завершите сеанс в консоли.
Принудительное завершение сеанса обрывает работу пользователя без сохранения. Несохранённые документы пропадут. Предупредите человека или делайте это вне рабочего времени.
Если лицензий стабильно не хватает в пиковые часы, проблема не в настройке — нужен дополнительный комплект клиентских лицензий.
Автоматический мониторинг лицензий через rac
Консоль хороша для разовой проверки. Чтобы знать о нехватке заранее, используют rac — утилиту командной строки. Она работает через сервер администрирования ras, который нужно запустить на сервере 1С (по умолчанию порт 1545).
Базовые команды:
rac localhost:1545 cluster list
rac localhost:1545 session list --cluster=<uuid-кластера> --licenses
Первая выдаёт идентификатор кластера. Вторая — сеансы с данными о лицензиях: тип (программная или аппаратная), откуда выдана, на сколько пользователей рассчитана. Если в кластере задан администратор, добавьте его имя и пароль — параметры смотрите в rac help session.
Простой скрипт для Windows, который считает занятые лицензии и пишет предупреждение, когда свободных осталось меньше двух:
$rac = "C:\Program Files\1cv8\8.3.24.1691\bin\rac.exe"
$cluster = "<uuid-кластера>"
$total = 15 # сколько клиентских лицензий куплено
$out = & $rac localhost:1545 session list --cluster=$cluster --licenses
$used = ($out | Select-String -Pattern '^session\s*:').Count
$free = $total - $used
"{0:yyyy-MM-dd HH:mm} занято {1} из {2}" -f (Get-Date), $used, $total |
Add-Content "C:\scripts\lic-monitor.log"
if ($free -lt 2) {
Write-EventLog -LogName Application -Source "1C-Lic" -EntryType Warning `
-EventId 100 -Message "Свободных лицензий 1С: $free"
}
Источник событий 1C-Lic один раз создайте командой New-EventLog -LogName Application -Source "1C-Lic" от администратора. Скрипт поставьте в планировщик заданий раз в 10–15 минут. Через неделю лог покажет реальный пик: если он упирается в 15, а в остальное время занято 8–9, проще перераспределить работу, чем докупать.
Сверьте счётчик скрипта с консолью в первый день. Если в вашей версии вывод отличается, поправьте шаблон поиска строк.