Почему при терминальной работе с файловой базой 1С возникает ошибка «Лицензия не обнаружена» и как ее исправить?

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

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

Проанализируем архитектурные причины такого поведения платформы 1С:Предприятие и разберем по шагам практические способы устранения проблемы.

Причины коллизий и «зависания» программных лицензий

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

  1. Неделимость и невозможность суммирования однопользовательских лицензий. Однопользовательские программные лицензии (поставляемые в индивидуальных коробках или комплектах на 1 рабочее место) рассчитаны на привязку к конкретному компьютеру для одного локального сеанса. При активации нескольких таких лицензий на одном терминальном сервере клиентские приложения разных RDP-сессий начинают обращаться к первому найденному файлу лицензии с расширением .lic. Платформа фиксирует, что файл рассчитан на один сеанс, и блокирует доступ последующим подключениям вместо того, чтобы брать следующий доступный файл.
  2. Зависшие RDP-сессии и блокировка файлов. Когда пользователь закрывает окно удаленного рабочего стола «крестиком», сеанс Windows переходит в состояние Disconnected (Отключен). Процессы 1cv8.exe или 1cv8c.exe продолжают выполняться в памяти сервера, удерживая лицензионные дескрипторы и файлы блокировок информационной базы (1Cv8.1cl, файлы *.cfl). В результате лицензия остается занятой фоновым процессом.
  3. Ограничения прав доступа к каталогу лицензий. Если активация программных лицензий выполнялась из-под учетной записи администратора или конкретного пользователя в каталог профиля %USERPROFILE%\AppData\Local\1C\..., другие терминальные пользователи не имеют прав на чтение этих файлов.
  4. Задержки при поиске аппаратного ключа (HASP). Если в настройках информационной базы или стартера включен поиск аппаратного ключа, а ключ физически отсутствует или занят, платформа тратит время на опрос сетевых портов и драйвера защиты, что при таймауте приводит к падению сеанса с ошибкой поиска лицензии.

Способ 1. Переход на единый многопользовательский комплект лицензий

Разберем основной и наиболее надежный способ лицензирования терминального сервера:

  1. Суть решения. В отличие от однопользовательских, многопользовательская программная лицензия (на 5, 10 или более рабочих мест) активируется единым многопользовательским пин-кодом. При активации необходимо выбрать режим установки «На этот компьютер» (для всех пользователей данного компьютера).
  2. Принцип работы. В этом случае файл лицензии сохраняется в общий системный каталог и позволяет платформе 1С отслеживать число активных терминальных сессий из единого общего пула без взаимных блокировок.
  3. Апгрейд лицензий. Если у вас уже куплено несколько однопользовательских коробок, можно оформить процедуру апгрейда лицензий через партнеров фирмы «1С» на одну многопользовательскую лицензию необходимого номинала.

Способ 2. Настройка политик терминального сервера (RDS / GPO)

Чтобы исключить зависание процессов 1cv8.exe при некорректном завершении работы пользователями, настроим групповые политики Windows Server:

  1. Откроем редактор локальной групповой политики (gpedit.msc).
  2. Перейдем в раздел: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Ограничения по времени сеанса.
  3. Включим и настроим параметр «Задать ограничение по времени для отключенных сеансов» (Set time limit for disconnected sessions), установив интервал автоматического завершения, например, 10–15 минут.
  4. Включим параметр «Завершать сеанс при достижении предела времени» (End session when time limits are reached). Это гарантирует, что брошенные сессии будут корректно завершаться на уровне ОС с выгрузкой процессов и освобождением файлов лицензий.

Способ 3. Проверка расположения файлов лицензий и прав доступа

Проверим корректность размещения файлов программных лицензий на сервере:

  1. Убедимся, что действующие файлы с расширением .lic расположены в общедоступном системном каталоге C:\ProgramData\1C\licenses (или C:\ProgramData\1C\1CE\licenses для платформы 1С:Предприятие 8.3).
  2. Проверим права безопасности на папку licenses: группа «Пользователи» (Users) должна иметь полные права на чтение и выполнение файлов в этом каталоге.
  3. Удалим из каталога недействительные, устаревшие или поврежденные файлы лицензий, чтобы платформа не тратила время на их валидацию при каждом запуске.
  4. В окне запуска информационных баз перейдем в «Настройка» и отключим флаг «Использовать аппаратную лицензию (HASP)», если в инфраструктуре используются только программные лицензии.

Альтернативные архитектурные решения

Если специфика работы требует сохранения текущего набора лицензий, рассмотрим альтернативные варианты организации доступа:

  1. Публикация файловой базы на веб-сервере (IIS / Apache). База данных публикуется на веб-сервере, развернутом на том же компьютере. Пользователи работают через тонкий клиент или веб-браузер по протоколу HTTP/HTTPS без входа на терминальный сервер. Веб-сервер самостоятельно обращается к файлам лицензий и централизованно распределяет сеансы.
  2. Переход на клиент-серверный вариант (Сервер 1С:Предприятия + СУБД). Кластер серверов 1С централизованно управляет пулом лицензий (при включенной опции «Разрешить выдачу лицензий сервером 1С:Предприятия» в свойствах базы), что полностью устраняет проблемы конкуренции лицензий на уровне файловой системы.
← На главную