Слетели программные лицензии 1С на виртуальном сервере: как найти причину и всё исправить?

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

Рассмотрим типичную и очень неприятную ситуацию, с которой сталкиваются системные администраторы: пользователи начинают жаловаться, что не могут войти в 1С, так как «нет свободных лицензий», хотя вы точно знаете, что они есть. Временным решением становится перезапуск службы «Агент сервера 1С:Предприятия», но через некоторое время проблема повторяется. Часто подозрение падает на недавние изменения, например, установку тестовой Community-лицензии. Давайте разберемся, как правильно диагностировать эту проблему и найти её истинную причину, не полагаясь на догадки.

Шаг 1. Отказываемся от догадок и собираем факты

Первая мысль автора проблемы была о том, что всё сломалось из-за установленной и затем удаленной Community-лицензии. Это логичное предположение, основанное на совпадении событий. Однако в мире 1С совпадение — не всегда причина. Чтобы не тратить время на ошибочные гипотезы, нам нужны точные данные о том, что происходит в момент, когда клиент не может получить лицензию.

Главный инструмент для такой диагностики — Технологический журнал (ТЖ). Нам необходимо настроить его так, чтобы он фиксировал события, связанные с лицензированием.

  1. Найдите на сервере 1С файл конфигурации ТЖ `logcfg.xml`. Обычно он находится в папке `conf` каталога установки платформы (например, `C:\Program Files\1cv8\8.3.x.x\bin\conf\`).
  2. Настройте его на сбор событий `LIC`. Этого будет достаточно, чтобы отследить весь процесс поиска и выдачи лицензий.
  3. Дождитесь повторения ошибки и изучите сгенерированные логи.

Именно этот шаг позволяет перейти от гаданий к анализу фактов.

Шаг 2. Анализируем лог поиска лицензии

После того как ошибка была поймана, в логе мы увидим подробную картину происходящего. В нашем случае ключевой фрагмент лога выглядит так:


Не найдена лицензия. Не обнаружен ключ защиты программы или полученная программная лицензия!
...
Поиск лицензии на сервере:
Ошибка программного лицензирования. Ошибка привязки программной лицензии к компьютеру: file://C:/ProgramData/1C/licenses/20190827174045.lic
После получения лицензии удалены:
DISK_0: Microsoft Virtual Disk, ..., 64420392960
BIOS_0: Microsoft Corporation, 20121126000000.000000+000, Hyper-V UEFI Release v1.0, 2, 4
В текущей конфигурации компьютера имеются:
DISK_0: Microsoft Virtual Disk, ..., 128849011200
Phis Mem_0: 31456260096
BIOS_0: Microsoft Corporation, 20240620000000.000000+000, Hyper-V UEFI Release v4.1, 3, 1
...
(аналогичные сообщения для других файлов лицензий)

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

Проанализируем две части лога:

Вывод: Причина сбоя — изменение аппаратной (в данном случае — виртуальной) конфигурации сервера. Скорее всего, было произведено обновление гипервизора Hyper-V, или изменены параметры самой виртуальной машины (например, размер диска). Система лицензирования 1С расценила это как попытку переноса лицензии на другой компьютер и аннулировала её. Перезапуск службы временно помогает, потому что сеансы, которые уже "захватили" лицензию до сбоя, могут продолжать работать, но новые сеансы не могут получить уже "слетевшую" лицензию.

Шаг 3. Разбираемся с мифом о Community-лицензии

Теперь, когда мы знаем настоящую причину, вернемся к первоначальному подозрению. Почему в окне «О программе» осталась запись о Community-лицензии, даже после её удаления?

Окно «О программе» содержит несколько разделов с информацией о лицензиях:

Появление Community-лицензии в разделе «Информационная база» означает лишь то, что кто-то один раз успешно подключился к этой базе данных, используя эту лицензию. Эта запись не оказывает никакого влияния на текущий процесс лицензирования на сервере. Таким образом, установка и удаление Community-лицензии было просто совпадением по времени с обновлением виртуальной среды.

Шаг 4. Решение проблемы: переактивация лицензий

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

Действуем по следующему плану:

  1. Подготовка. Найдите все комплекты документов от ваших программных лицензий 1С. Вам понадобятся резервные пин-коды для повторной активации. Убедитесь, что они у вас есть, прежде чем что-либо удалять!
  2. Остановка службы. Остановите службу «Агент сервера 1С:Предприятия» (1C:Enterprise 8 Server Agent).
  3. Резервное копирование. Перейдите в каталог, где хранятся файлы лицензий. Обычно это `C:\ProgramData\1C\licenses\`. Сделайте резервную копию всей этой папки.
  4. Очистка. Удалите из папки `C:\ProgramData\1C\licenses\` все файлы с расширением `.lic`, которые соответствуют аннулированным лицензиям (в нашем примере это файлы, указанные в логе). Для полной уверенности можно удалить все `.lic` файлы, чтобы активировать всё с чистого листа.
  5. Запуск службы. Запустите службу «Агент сервера 1С:Предприятия».
  6. Повторная активация. Теперь необходимо активировать лицензии заново. Это можно сделать через диалог запуска 1С (при попытке входа в базу) или с помощью утилиты `ring.exe`. В процессе активации укажите, что вы выполняете её повторно, и введите резервный пин-код из вашего комплекта. Повторите процедуру для всех ваших лицензий (серверной и клиентских).

После выполнения этих шагов сервер 1С снова начнет корректно получать и раздавать валидные, привязанные к текущей конфигурации сервера, лицензии.

Как избежать подобных проблем в будущем?

← На главную