Почему на терминальном сервере 1С не пускает 11-го пользователя, а на сервере 1С можно запускать сколько угодно баз?

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

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

Два способа получения лицензии: «От сервера» и «От клиента»

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

  1. Лицензию выдает сервер «1С:Предприятия». В этом случае в строке лицензии будет написано: Сервер, ORGL8.... При такой схеме сервер берет на себя роль диспетчера. Он находит доступные ключи (программные или аппаратные) и «раздает» их подключающимся пользователям. Главная особенность здесь — лицензия тратится на каждый сеанс. Если один пользователь откроет три разные базы (или три раза одну и ту же), сервер заберет из общего пула 3 лицензии.
  2. Лицензию получает клиентское приложение самостоятельно. В этом случае в строке лицензии будет написано: Клиент, ORGL8.... Здесь программа 1cv8.exe сама находит лицензию (локальный USB-ключ, файл программной лицензии .lic на диске или сетевой ключ через HASP License Manager). Особенность этой схемы — лицензия тратится на рабочее место (компьютер или терминальную сессию). Один пользователь в рамках одного сеанса может запустить неограниченное количество баз, израсходовав всего 1 лицензию.

Рассмотрим ситуацию автора: терминальные пользователи получают лицензии от сервера (способ №1), поэтому 10 запущенных приложений полностью исчерпывают лимит. Автор же, работая непосредственно на сервере, где физически лежат файлы лицензий, получает лицензию по способу №2. Его клиент видит лицензию как «локальную», захватывает одну единицу и позволяет открывать сколько угодно окон.

Почему программная лицензия называется «ORGL8 Локальный 10»?

Часто возникает путаница, когда в системе нет ни одного USB-ключа (особенно на виртуальных машинах), но 1С пишет ORGL8 или HASP. Это происходит из-за особенностей платформы (характерно для версий 8.3.8 и близких к ним). Программные лицензии часто отображаются с использованием тех же обозначений серий, что и аппаратные ключи, для сохранения единообразия.

Разберем, что означает эта надпись:

Проанализируем ситуацию с виртуальными серверами

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

Проверьте следующие каталоги на сервере:

Если вы обнаружили там несколько файлов, вполне вероятно, что у вас установлена комбинация лицензий. Например, одна многопользовательская на 10 мест (которую раздает сервер терминальным пользователям) и одна однопользовательская (которую случайно активировали на этом же сервере). Это объясняет, почему администратор на сервере «не мешает» остальным десяти пользователям.

Как точно проверить состав лицензий с помощью утилиты Ring

Для детального анализа программных лицензий воспользуемся стандартной утилитой 1ce-installer-util (часто называемой ring), которая входит в состав современной платформы. Она позволяет «заглянуть» внутрь зашифрованных файлов .lic.

Рассмотрим порядок действий для диагностики:

  1. Убедитесь, что на сервере установлена Java (JRE), так как утилита ring требует её для работы. Настройте переменную среды JAVA_HOME, указав путь к папке установки Java.
  2. Запустите командную строку и выполните команду для поиска лицензий:

ring license list

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

ring license info --name <ИмяЛицензии>

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

Подведем итоги и сделаем выводы

Посмотрим на общую картину: ситуация, описанная в теме, — это не баг и не признак взлома. Это классическое поведение 1С при смешанном способе доступа.

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

Почему администратор заходит 11-м: Когда администратор запускает 1С прямо на сервере приложений, его клиент 1cv8.exe первым делом сканирует локальные папки C:\ProgramData\1C\licenses. Находя там файл лицензии, он захватывает её напрямую (как «Клиент»). Платформа считает, что лицензия уже получена локально, и не просит её у сервера приложений. А поскольку это локальный захват, внутри этой «админской» сессии можно открывать сколько угодно окон.

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

← На главную