Разберемся с одной из самых запутанных тем в администрировании «1С:Предприятие 8» — механизмом распределения клиентских лицензий. Часто возникает ситуация, когда системные администраторы видят противоречивую картину: на терминальном сервере пользователи получают отказ при превышении лимита в 10 человек, а на сервере приложений тот же самый администратор может запускать неограниченное количество сеансов. Проанализируем, почему так происходит, и как программа «понимает», сколько лицензий нужно расходовать.
Первое, на что нам нужно обратить внимание, — это текст в окне «О программе» (раздел «Лицензия»). Именно там скрыт ответ на вопрос о расходовании ресурсов. В 1С существует два принципиально разных способа захвата лицензии:
Сервер, ORGL8.... При такой схеме сервер берет на себя роль диспетчера. Он находит доступные ключи (программные или аппаратные) и «раздает» их подключающимся пользователям. Главная особенность здесь — лицензия тратится на каждый сеанс. Если один пользователь откроет три разные базы (или три раза одну и ту же), сервер заберет из общего пула 3 лицензии.Клиент, ORGL8.... Здесь программа 1cv8.exe сама находит лицензию (локальный USB-ключ, файл программной лицензии .lic на диске или сетевой ключ через HASP License Manager). Особенность этой схемы — лицензия тратится на рабочее место (компьютер или терминальную сессию). Один пользователь в рамках одного сеанса может запустить неограниченное количество баз, израсходовав всего 1 лицензию.Рассмотрим ситуацию автора: терминальные пользователи получают лицензии от сервера (способ №1), поэтому 10 запущенных приложений полностью исчерпывают лимит. Автор же, работая непосредственно на сервере, где физически лежат файлы лицензий, получает лицензию по способу №2. Его клиент видит лицензию как «локальную», захватывает одну единицу и позволяет открывать сколько угодно окон.
Часто возникает путаница, когда в системе нет ни одного USB-ключа (особенно на виртуальных машинах), но 1С пишет ORGL8 или HASP. Это происходит из-за особенностей платформы (характерно для версий 8.3.8 и близких к ним). Программные лицензии часто отображаются с использованием тех же обозначений серий, что и аппаратные ключи, для сохранения единообразия.
Разберем, что означает эта надпись:
ORGL8 — стандартная серия многопользовательских клиентских лицензий на 10, 20, 50 и более рабочих мест.Локальный — в данном контексте означает, что лицензия была найдена клиентским приложением на том же компьютере, где оно запущено, без обращения к кластеру серверов 1С за помощью.10 — номинал лицензии (количество рабочих мест).Если ваша «1С» развернута на виртуальной машине, аппаратных ключей там быть не может (если они не проброшены специальным софтом). Скорее всего, используются программные лицензии (файлы с расширением .lic). Выясним, где они могут находиться:
Проверьте следующие каталоги на сервере:
C:\ProgramData\1C\licensesC:\Users\All Users\1C\licensesC:\Program Files\1cv8\conf (иногда файлы лицензий кладут сюда)Если вы обнаружили там несколько файлов, вполне вероятно, что у вас установлена комбинация лицензий. Например, одна многопользовательская на 10 мест (которую раздает сервер терминальным пользователям) и одна однопользовательская (которую случайно активировали на этом же сервере). Это объясняет, почему администратор на сервере «не мешает» остальным десяти пользователям.
Для детального анализа программных лицензий воспользуемся стандартной утилитой 1ce-installer-util (часто называемой ring), которая входит в состав современной платформы. Она позволяет «заглянуть» внутрь зашифрованных файлов .lic.
Рассмотрим порядок действий для диагностики:
ring требует её для работы. Настройте переменную среды JAVA_HOME, указав путь к папке установки Java.
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, если ключи аппаратные.