Почему в терминальном доступе 1С не видит свободные программные лицензии?

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

Работа в терминальном режиме — это стандарт де-факто для многих компаний, использующих 1С:Предприятие. Однако системные администраторы часто сталкиваются с парадоксальной ситуацией: по документам куплено и активировано, например, четыре лицензии, в диспетчере задач мы видим только трех активных пользователей, но четвертый войти не может из-за ошибки «Ключ защиты не обнаружен» или «Нет свободных лицензий». В этой статье мы подробно разберем, почему «залипают» лицензии, как операционная система Windows влияет на их удержание и что нужно настроить, чтобы программные лицензии освобождались вовремя.

Особенности работы программных лицензий в терминальном режиме

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

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

  1. Зависшие или отключенные RDP-сессии: Пользователи часто закрывают окно терминала «крестиком», не нажимая кнопку «Выход». Сессия переходит в состояние «Disconnected», но процесс 1cv8.exe продолжает удерживать лицензию.
  2. Влияние подсистемы печати Windows: На 64-битных серверах процесс SplWOW64.exe может блокировать завершение процессов 1С, удерживая лицензию неограниченное время.
  3. Фоновые задания в файловых базах: В файловом режиме для выполнения регламентных операций платформа может запускать невидимые сеансы, которые потребляют лицензии.
  4. Некорректное расположение файлов лицензий: Если файлы .lic находятся в профиле конкретного пользователя, другие могут их просто не «видеть».

Решение проблемы с процессом SplWOW64 на 64-разрядных системах

Одной из самых неочевидных причин удержания лицензии является работа службы печати. Проанализируем ситуацию: Windows Server 64-bit использует процесс SplWOW64.exe для поддержки 32-битных приложений печати. Часто этот процесс не закрывается после печати из 1С и «цепляет» родительский процесс 1cv8.exe, не давая лицензии освободиться. Разберем по шагам, как исправить это через реестр.

Во-первых, нам необходимо уменьшить тайм-аут завершения процесса SplWOW64.exe. Перейдем в ветку реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

Создадим там параметр SplWOW64TimeOut типа DWORD (32 бита) и установим значение 1. Это заставит систему закрывать процесс практически сразу после завершения печати.

Во-вторых, заставим сервер принудительно завершать SplWOW64.exe при закрытии терминальной сессии. Перейдем в раздел:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\SysProcs

Добавим новый параметр SPLWOW64.EXE со значением 0. Это гарантирует, что лицензия не останется в «подвешенном» состоянии из-за очереди печати.

Оптимизация фоновых заданий в файловом режиме

Если ваша информационная база файловая, то фоновые задания (индексация, обмен данными, обновление полнотекстового поиска) могут запускаться автоматически. Выясним причину нехватки лицензий: если у вас ровно 4 лицензии и 3 человека работают активно, а в этот момент стартует автоматический обмен — 4-й пользователь получит отказ. Рассмотрим, как это можно регулировать.

В конфигураторе перейдем в меню Администрирование — Параметры информационной базы. Нам важны следующие параметры:

Также проанализируем настройки самих регламентных заданий. По возможности перенесите тяжелые обмены и обслуживание базы на ночное время, чтобы они не конкурировали с пользователями за лицензии в рабочие часы.

Настройка автоматического завершения сессий RDP

Часто проблема решается административными мерами на уровне операционной системы. Проанализируем поведение пользователей: если сессия «висит» в статусе отключенной более часа, она бесполезно занимает лицензию. Настроим групповые политики (GPO) сервера для автоматической очистки.

Выполним следующие шаги:

  1. Откроем Редактор локальной групповой политики (gpedit.msc).
  2. Перейдем в Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Ограничение времени сеансов.
  3. Найдем параметр Задать предел времени для отключенных сеансов.
  4. Включим его и установим значение, например, 15 минут.

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

Проверка корректности установки лицензий

Иногда 1С не видит лицензию, потому что она установлена «не там». Программные лицензии могут быть установлены на компьютер (всем пользователям) или на текущего пользователя. На терминальном сервере крайне важно, чтобы лицензии были доступны всем.

Проверим папку: C:\ProgramData\1C\licenses. Именно здесь должны лежать файлы с расширением .lic. Если вы находите их в %AppData%\1C\1cv8\conf, значит, они активированы только под одним профилем. Рекомендуется перенести файлы в общую папку ProgramData и убедиться, что у группы «Пользователи» есть права на чтение этой директории. Рассмотрим пример прав доступа: если файл лицензии заблокирован для чтения системой или антивирусом, 1С проигнорирует его и выдаст ошибку отсутствия ключа.

Диагностика: как увидеть, кто занял лицензию?

Чтобы понять, какая именно лицензия сейчас используется, воспользуемся встроенными средствами 1С. В запущенной программе перейдем в меню Справка — О программе. В самом низу раздела «Лицензия» будет указано:

Если же база клиент-серверная, проанализируем список сеансов через Консоль администрирования серверов 1С. Там в колонке «Лицензия» наглядно видно, какой сеанс потребляет программный ключ, а какой — аппаратный (HASP).

Стоит ли менять программные лицензии на USB-ключ?

Существует мнение, что аппаратные ключи (USB) стабильнее работают в терминале. Действительно, USB-ключ более устойчив к изменению параметров «железа» (например, после обновления Windows или изменения объема оперативной памяти программная лицензия может «слететь»), но в вопросе «залипания» сессий они ведут себя схожим образом. Однако аппаратная лицензия считается на пользователя (один ключ — один человек), в то время как программная в терминале также считается на сессию. Если у вас часто происходят сбои активации, рассмотрите вариант апгрейда на USB-ключ, но помните, что это потребует физического доступа к серверу и дополнительных затрат.

Подводя итог, можно сказать, что в 90% случаев проблема «нехватки лицензий» на терминале при свободном диспетчере задач решается настройкой тайм-аутов SplWOW64 в реестре и жестким ограничением времени жизни разорванных RDP-сессий. Проверьте эти настройки, и стабильность работы ваших пользователей значительно возрастет.

← На главную