Кто держит лицензии 1С: ищем компьютеры и сеансы

· 9 мин

Содержание

Узнать, кто занял лицензии 1С, в клиент-серверном варианте быстрее всего через консоль кластера (ветка «Сеансы») или командой rac session list --licenses. В файловом варианте смотрят список активных пользователей базы и процессы 1cv8.exe / 1cv8c.exe на компьютерах и терминальном сервере.

Частая ошибка — искать виновника по списку пользователей 1С. Клиентская лицензия считается не по логину, а по компьютеру или терминальному сеансу. Один бухгалтер с тремя открытыми окнами на своём ПК занимает одну лицензию. А один логин «Администратор», под которым зашли с пяти машин, — пять.

Как считается занятая лицензия: что проверить до поиска

Без понимания правил подсчёта легко найти «лишних» пользователей там, где их нет. Основные принципы:

  • 🖥️ Обычный компьютер. Все сеансы 1С с одного ПК занимают одну клиентскую лицензию, сколько бы баз и окон ни было открыто.
  • 🧑‍💻 Терминальный сервер (RDP). Каждый терминальный сеанс считается отдельным рабочим местом. Десять сотрудников на одном сервере — десять лицензий.
  • 🛠️ Конфигуратор. Тоже клиентское приложение и тоже занимает лицензию. Программист, забывший закрыть Конфигуратор, — частая находка.
  • ⚙️ Фоновые и регламентные задания. Выполняются на сервере 1С и клиентскую лицензию не берут.
  • 🗄️ Лицензия на сервер 1С. Отдельная сущность. Она нужна самому кластеру и не уменьшает число клиентских мест.

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

Сначала посчитайте, сколько клиентских лицензий у вас всего. Программные лицензии в Windows лежат в C:\ProgramData\1C\licenses — по одному файлу .lic на активированный комплект. Если число занятых мест сходится с купленным, дело не в «зависших» сеансах, а в нехватке лицензий.

Активные пользователи и журнал регистрации: проверка без доступа к серверу

Этот способ работает и в файловом, и в клиент-серверном варианте. Права администратора базы нужны, доступ к серверу — нет.

Список активных пользователей

  1. В БП 3.0, ЗУП 3.1, УТ 11 откройте Администрирование → Поддержка и обслуживание.
  2. Нажмите «Активные пользователи».
  3. Посмотрите колонки «Компьютер» и «Приложение».

В Конфигураторе тот же список открывается через Администрирование → Активные пользователи.

Что искать:

  • 📌 одинаковый пользователь с разных компьютеров;
  • 📌 приложение «Конфигуратор» на чужой машине;
  • 📌 сеансы с давним временем начала — вчерашние и старше.

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

Журнал регистрации

Журнал открывается из того же раздела «Поддержка и обслуживание». Установите отбор по событиям «Сеанс. Начало» и «Сеанс. Завершение» и по нужному периоду. В строках видны пользователь, компьютер и приложение.

Журнал полезен, когда проблема плавающая: «по утрам не хватает лицензий». Видно, кто и с какой машины заходит в 9:00, у кого начало сеанса есть, а завершения нет.

Консоль администрирования серверов 1С: сеансы и лицензии кластера

Для клиент-серверного варианта это главный инструмент. Консоль показывает все сеансы всех баз кластера сразу.

Порядок действий

  1. Запустите «Администрирование серверов 1С:Предприятия» из меню «Пуск».
  2. Если сервер ещё не добавлен — правой кнопкой по «Central 1C:Enterprise 8.3 servers» → «Создать» → «Центральный сервер 1С:Предприятия 8.3», укажите имя сервера.
  3. Раскройте сервер → «Кластеры» → ваш кластер → «Сеансы».
  4. Отсортируйте список по колонке «Компьютер».

Каждая строка — сеанс: база, пользователь, компьютер, приложение, время начала и последней активности. Сеансы приложения BackgroundJob можно не считать — это фоновые задания. Свойства сеанса открываются двойным щелчком; в актуальных версиях платформы там же выводятся сведения о полученной лицензии.

Консоль не открывается

Типичная ситуация: после установки новой версии платформы оснастка пишет ошибку или не показывает кластер. Консоль привязана к версии платформы через библиотеку radmin.dll. Перерегистрируйте её от имени администратора:

regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll"

Версия в пути должна совпадать с версией сервера 1С. Для 32-битной консоли путь — C:\Program Files (x86)\1cv8\....

Как освободить лицензию из консоли

Правой кнопкой по сеансу → «Удалить». Сеанс завершится, лицензия освободится.

Несохранённые данные пользователя пропадут: открытый документ, недописанная накладная. Предупредите человека или делайте это, когда видно, что сеанс давно неактивен (колонка последней активности).

Командная строка rac: какой компьютер держит лицензию

Иногда в инструкциях пишут про «утилиту rmngr для мониторинга лицензий». Это путаница. rmngr.exe — процесс менеджера кластера, он не показывает ничего сам по себе. Смотрят сеансы утилитой rac, а в её выводе действительно есть адрес и PID менеджера кластера, через который выдана лицензия.

Подготовка

rac работает через сервер администрирования ras. Для разовой проверки запустите его в отдельном окне на сервере 1С:

cd "C:\Program Files\1cv8\<версия>\bin"
ras cluster

По умолчанию ras слушает порт 1545 и подключается к агенту сервера на localhost:1540. Для постоянной работы его регистрируют службой.

Получаем список

Сначала идентификатор кластера:

rac cluster list

Скопируйте значение из строки cluster. Затем список сеансов со сведениями о лицензиях:

rac session list --cluster=<uuid-кластера> --licenses

Если в кластере заданы администраторы, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>.

Что значат поля

ПолеЧто показывает
user-nameпользователь 1С
hostкомпьютер, с которого открыт сеанс
app-idприложение: 1CV8C — тонкий клиент, 1CV8 — толстый, Designer — Конфигуратор, WebClient — веб-клиент
license-typeтип: программная лицензия или аппаратный ключ
seriesсерия лицензии или ключа
issued-by-serverвыдал ли лицензию сервер 1С или её получил сам клиент
rmngr-address, rmngr-pidменеджер кластера, через который выдана лицензия

Группируйте по host: сколько разных компьютеров в списке, столько клиентских мест занято. Полный перечень параметров смотрите в rac help session.

Быстрый поиск по одному компьютеру

Вывод rac длинный: на каждый сеанс полтора десятка строк. Чтобы быстро увидеть только компьютеры и пользователей, отфильтруйте нужные поля:

rac session list --cluster=<uuid-кластера> --licenses | findstr /b "host user-name app-id"

Если подозрение падает на конкретную машину, например BUH-05, ищите её имя в выводе: findstr /i "BUH-05". Так за минуту видно, сколько сеансов и с какими приложениями открыто с этого компьютера.

Процессы 1С на терминальном сервере и рабочих станциях

Когда пользователи работают через RDP, проще всего найти занявших лицензии прямо в процессах Windows. Способ подходит и для файловых баз.

Диспетчер задач

Откройте вкладку «Пользователи» или «Подробности» и найдите процессы:

  • 1cv8c.exe — тонкий клиент;
  • 1cv8.exe — толстый клиент и Конфигуратор;
  • 1cv8s.exe — тонкий клиент в варианте поставки без толстого.

Колонка «Имя пользователя» покажет, в чьём терминальном сеансе висит процесс.

Командная строка и PowerShell

Список процессов 1С с владельцами:

tasklist /v /fi "imagename eq 1cv8c.exe"
tasklist /v /fi "imagename eq 1cv8.exe"

В PowerShell, запущенном от администратора:

Get-Process 1cv8, 1cv8c -IncludeUserName -ErrorAction SilentlyContinue |
  Select-Object UserName, Id, ProcessName, StartTime |
  Sort-Object UserName

Чтобы понять, какие терминальные сеансы активны, а какие отключены, но живы:

query user

Сеанс в состоянии «Диск» (отключён) с запущенной 1С держит лицензию. Именно такие сеансы чаще всего и съедают места: человек закрыл окно RDP крестиком, а не вышел из системы.

Настройте на терминальном сервере групповую политику ограничения отключённых сеансов: например, завершать их через 2–4 часа. Это убирает большую часть «зависших» лицензий без всяких скриптов.

Блокировки и соединения с СУБД: связываем нагрузку с пользователем

Иногда вопрос звучит иначе: «кто-то держит базу». Администратор SQL открывает список подключений в СУБД и видит только сервер 1С. Это нормально: к СУБД подключаются рабочие процессы rphost, а не пользователи. По таблицам SQL пользователя 1С не найти.

Связывать нужно в консоли кластера:

  1. Раскройте кластер → «Информационные базы» → нужная база.
  2. Ветка «Блокировки» показывает, какой сеанс держит управляемые блокировки и на каких объектах.
  3. Ветка «Соединения» показывает соединения базы с привязкой к сеансам.
  4. В списке «Сеансы» есть колонки «Соединение с СУБД» и «Захвачено СУБД»: по ним видно, чей сеанс прямо сейчас работает с базой данных.

Через rac то же самое: rac lock list и rac connection list с параметрами --cluster и --infobase. Точный синтаксис уточните в rac help lock и rac help connection.

В файловом варианте отдельной таблицы блокировок для просмотра нет. Ориентир — список активных пользователей и процессы на компьютерах, где открыта база.

Какой у вас вариант работы с 1С?

Автоматический контроль и освобождение лицензий

Ручная проверка помогает разово. Если места заканчиваются регулярно, имеет смысл автоматизировать.

Отчёт по занятым местам

Скрипт PowerShell разбирает вывод rac и печатает таблицу: компьютер, пользователь, приложение. Запускайте на сервере 1С при работающем ras.

$rac = "C:\Program Files\1cv8\<версия>\bin\rac.exe"

function ConvertFrom-Rac($lines) {
  $list = @(); $cur = @{}
  foreach ($l in $lines) {
    if ($l.Trim() -eq '') {
      if ($cur.Count) { $list += [pscustomobject]$cur; $cur = @{} }
      continue
    }
    $k, $v = $l -split ':', 2
    $cur[$k.Trim()] = $v.Trim()
  }
  if ($cur.Count) { $list += [pscustomobject]$cur }
  return $list
}

$cluster = (ConvertFrom-Rac (& $rac cluster list))[0].cluster
$lic = ConvertFrom-Rac (& $rac session list --cluster=$cluster --licenses)

$lic | Select-Object host, user-name, app-id, license-type, series |
  Sort-Object host | Format-Table -AutoSize

"Занято мест (уникальных компьютеров): " + ($lic.host | Sort-Object -Unique).Count

Значение разбивается по первому двоеточию, поэтому время вида 10:15:30 в других полях не ломает разбор.

Завершение неактивных сеансов

Второй шаг — закрывать сеансы, которые давно ничего не делают. Ниже порог 3 часа; по умолчанию скрипт только показывает кандидатов.

$apply = $false          # $true — действительно завершать
$limit = (Get-Date).AddHours(-3)

$all = ConvertFrom-Rac (& $rac session list --cluster=$cluster)
foreach ($s in $all) {
  if ($s.'app-id' -notin '1CV8', '1CV8C', 'WebClient') { continue }
  if ([datetime]$s.'last-active-at' -gt $limit) { continue }
  "{0}  {1}  {2}  последняя активность {3}" -f $s.host, $s.'user-name', $s.'app-id', $s.'last-active-at'
  if ($apply) { & $rac session terminate --cluster=$cluster --session=$($s.session) }
}

Конфигуратор (Designer) в фильтр намеренно не включён: прерванное обновление конфигурации обходится дороже одной лицензии.

Завершение сеанса обрывает работу пользователя без сохранения. Сначала неделю запускайте скрипт с $apply = $false и смотрите, кого он отбирает. Потом ставьте в планировщик заданий Windows на нерабочее время — например, на 22:00 и 6:00.

Что ещё помогает

  • 📊 Раз в неделю выгружайте отчёт по занятым местам. Если пик стабильно упирается в лимит, нужны дополнительные лицензии, а не охота за сеансами.
  • 🔌 Ограничьте отключённые RDP-сеансы политикой Windows (см. раздел о терминальном сервере).
  • 🧾 Договоритесь с программистами: Конфигуратор на рабочей базе не держат открытым после работы.

Частые вопросы

Почему лицензий занято больше, чем людей в офисе?
Обычно виноваты отключённые терминальные сеансы, забытый Конфигуратор и сеансы, оставшиеся после обрыва сети. Сгруппируйте сеансы по компьютеру — лишние места станут видны.
Занимает ли лицензию веб-клиент или мобильный клиент?
Да, это клиентские приложения. В выводе rac они видны по полю app-id, их учитывают наравне с тонким клиентом.
Можно ли посмотреть, кто занимал лицензии вчера?
Консоль кластера и rac показывают только текущие сеансы. Историю смотрят в журнале регистрации по событиям «Сеанс. Начало» и «Сеанс. Завершение».
Тратит ли лицензию подключение по COM или регламентное задание?
Регламентные и фоновые задания клиентскую лицензию не берут. Для внешних подключений проверяйте вывод rac session list –licenses: если у сеанса есть сведения о лицензии, место он занимает.
Как понять, что лицензий не хватает, а не «зависли» сеансы?
Посчитайте уникальные компьютеры в списке сеансов в пиковый час. Если все они реально работают и число равно купленному, нужно докупать места.