Почему возникает ошибка «Нет свободных лицензий» в 1С и как её устранить?

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

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

Разберем логику распределения лицензий: Сервер против Клиента

Первым делом нам необходимо понять, кто именно выдает лицензию пользователю в вашей системе. В 1С:Предприятие 8 существует два принципиально разных механизма работы программных лицензий в клиент-серверном варианте. Рассмотрим подробнее каждый из них:

  1. Выдача лицензии клиентским приложением: В этом случае программа ищет файл лицензии (.lic) или USB-ключ непосредственно на локальном компьютере пользователя или в сети через HASP License Manager. Если лицензия найдена «клиентом», то пользователь может запустить неограниченное количество окон 1С (разные базы, разные сеансы) в рамках одного компьютера, и это будет стоить всего одну лицензию.
  2. Выдача лицензий сервером 1С:Предприятие: Если в настройках информационной базы на сервере включена опция «Разрешить выдачу лицензий сервером 1С:Предприятия», сервер берет на себя роль «раздатчика». В этом случае лицензии считаются не по компьютерам, а по сеансам. Проанализируем ситуацию: если один и тот же сотрудник открыл три разные базы (или три окна одной базы), сервер 1С спишет из общего пула три лицензии. Это самая частая причина внезапной нехватки прав доступа.

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

Проблема «подвисших» сессий в терминальном режиме

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

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

  1. Настройте автоматическое завершение (Logoff) отсоединенных сессий в настройках групповых политик или профиля пользователя RDP.
  2. Проверьте тайм-ауты завершения работы или настройте автоматический перезапуск рабочих процессов в настройках сервера 1С.
  3. Убедитесь, что пользователи выходят из программы через меню «Файл — Выход», а не просто закрывают окно терминала.

Очистка кэша и локальных файлов лицензий

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

Рассмотрим алгоритм очистки:

  1. Закройте все окна 1С.
  2. Проанализируем содержимое папок %AppData%\1C\1Cv8\ и %ProgramData%\1C\licenses.
  3. Удалите файлы с расширением .lic, которые точно не являются актуальными (предварительно сделайте бэкап!).
  4. Перезапустите службу Agent 1C:Enterprise.

Технические ограничения и файл nnhasp.ini

Если вы используете сетевые USB-ключи вместе с программными лицензиями, может возникнуть конфликт. Проанализируем работу конфигурационного файла nnhasp.ini. По умолчанию 1С пытается найти ключи везде, где только можно, что создает задержки и ошибки.

Рекомендуем явно указать адрес сервера лицензий. Посмотрим на пример настройки файла nnhasp.ini (обычно находится в папке conf внутри каталога установки платформы):


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; Укажите IP вашего сервера с ключами
NH_TCPIP_METHOD = UDP
NH_USE_BROADCAST = Disabled

Это заставит 1С обращаться напрямую к конкретному серверу, минуя широковещательные запросы, которые часто блокируются антивирусами или маршрутизаторами.

Влияние виртуализации и изменения «железа»

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

Важный момент: если вы используете динамическое распределение памяти в Hyper-V или VMware, сервер 1С может решить, что он запущен на новом компьютере, и аннулировать привязку лицензии. В этом случае вы получите сообщение об отсутствии лицензий, хотя файл физически присутствует. Установите фиксированный объем памяти для виртуальной машины с сервером 1С.

Лимиты одного файла лицензии

Малоизвестный факт: один файл многопользовательской программной лицензии (например, на 500 рабочих мест) имеет ограничение — к нему не может быть более 256 одновременных обращений в рамках одной сессии ОС. Если у вас очень крупная инсталляция и все пользователи работают на одном терминальном сервере, рассмотрите возможность активации лицензии несколькими файлами (по 100 или 50 мест), чтобы распределить нагрузку на файловую систему и обойти этот лимит.

Подведем итог

Для стабильной работы и исключения ошибки «Нет свободных лицензий» мы рекомендуем:

  1. Четко определить стратегию: либо лицензии раздает сервер (удобно для веб-клиентов), либо клиенты забирают их сами (экономия лицензий при открытии нескольких баз).
  2. Мониторить список сеансов в консоли 1С, выявляя «лишние» подключения.
  3. Настроить автоматическое завершение спящих RDP-сеансов.
  4. Следить за тем, чтобы аппаратные настройки сервера (особенно виртуального) оставались неизменными.

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

← На главную