При запуске 1С:Предприятие разработчики и системные администраторы нередко сталкиваются с ситуацией, когда платформа отказывается видеть лицензию: мастер запуска требует повторной активации, программные комьюнити-лицензии выдают ошибки о превышении лимитов, а физически вставленные локальные USB-ключи игнорируются системой. Разберем детально, почему возникают подобные сбои и как последовательно вернуть работоспособность среды разработки и рабочих баз данных.
Проанализируем механику работы аппаратной защиты. Локальные однопользовательские USB-ключи HASP HL Pro (обычно фиолетового цвета) предназначены исключительно для работы непосредственно за тем компьютером, в который они физически установлены.
Если мы подключаемся к компьютеру через стандартный протокол удаленного рабочего стола Windows (RDP / mstsc), платформа 1С намеренно блокирует использование локального аппаратного ключа:
GetSystemMetrics(SM_REMOTESESSION) возвращает положительное значение, сигнализируя о терминальном сеансе.http://localhost:1947) ключ определяется корректно, платформа 1С в терминальной сессии его игнорирует. Это не является технической неисправностью — таковы условия лицензирования однопользовательских ключей.HASP LM предназначена исключительно для сетевых многопользовательских ключей (красного цвета). Установка менеджера лицензий для локального однопользовательского ключа не позволит раздать его по сети или внутри сеанса удаленного рабочего стола.0 полностью изолирована для системных служб. Ключ /admin или /console больше не подключает пользователя к физической консоли оборудования, сеанс все равно остается удаленным, поэтому платформа не подхватывает локальный ключ.Если для работы требуется использовать именно локальный аппаратный ключ, рассмотрим рабочие альтернативы:
Рассмотрим вторую распространенную проблему: при наличии ранее полученной программной или комьюнити-лицензии 1С внезапно сообщает, что лицензия не обнаружена, а при попытке повторной привязки выдает ошибки о превышении лимита или конфликте пинкодов.
Выясним, какие факторы приводят к поломке программной привязки:
.lic могут записываться в разные каталоги. Если в одном каталоге остался старый заблокированный файл, а в другой записался новый, платформа попытается прочитать оба, зафиксирует одновременное использование одного комплекта лицензий и заблокирует запуск.1cv8.exe. Если процесс завершился аварийно, зависший процесс может монопольно удерживать единственный доступный слот сеанса комьюнити-лицензии.Разберем по шагам, как очистить систему от конфликтующих данных и успешно активировать лицензию заново:
1cv8.exe, 1cv8c.exe и фоновые скрипты автоматизации полностью завершены.*.lic из следующих стандартных каталогов хранения лицензий 1С:
C:\ProgramData\1C\licenses\C:\ProgramData\1C\1Cv8\conf\C:\Users\<ИмяПользователя>\AppData\Local\1C\1Cv8\licenses\C:\Program Files\1cv8\conf\ (или Program Files (x86))%APPDATA%\1C\1Cv8\ и %LOCALAPPDATA%\1C\1Cv8\. При глубоких сбоях привязки рекомендуется полностью переустановить платформу 1С с удалением системных конфигурационных файлов..lic.Посмотрим на пример работы с хранилищем конфигурации через скрипты автоматизации OneScript. Чтобы скрипты не блокировали лицензии разработчика и не приводили к утечке сеансов, важно корректно обрабатывать временные файлы и корректно освобождать ресурсы:
// Подключение библиотеки v8storage
#использовать v8storage
// Инициализация менеджера хранилища
Менеджер = Новый МенеджерХранилищаКонфигурации();
Менеджер.УстановитьПутьКХранилищу("tcp://ИМЯ_СЕРВЕРА/ИМЯ_ХРАНИЛИЩА");
Менеджер.УстановитьПараметрыАвторизации("ЛОГИН", "ПАРОЛЬ");
// Чтение общей истории версий
Менеджер.ПрочитатьХранилище();
ТаблицаВерсий = Менеджер.ПолучитьТаблицуВерсий();
ИскомаяЗадача = "#123";
Для Каждого СтрокаВерсии Из ТаблицаВерсий Цикл
Если Найти(СтрокаВерсии.Комментарий, ИскомаяЗадача) > 0 Тогда
Сообщить("Найдена версия: " + СтрокаВерсии.Номер + " от " + СтрокаВерсии.Автор);
// Создаем временный текстовый файл для получения детального отчета
ИмяФайлаОтчета = ПолучитьИмяВременногоФайла("txt");
// Выгружаем отчет по версии
Менеджер.ПолучитьОтчетПоВерсиям(ИмяФайлаОтчета, СтрокаВерсии.Номер, СтрокаВерсии.Номер, "txt");
// Считываем данные отчета
ФайлОтчета = Новый ТекстовыйДокумент();
ФайлОтчета.Прочитать(ИмяФайлаОтчета, КодировкаТекста.UTF8);
Для НомерСтроки = 1 По ФайлОтчета.КоличествоСтрок() Цикл
ТекущаяСтрока = ФайлОтчета.ПолучитьСтроку(НомерСтроки);
Если Найти(ТекущаяСтрока, " ") = 1 Или Найти(ТекущаяСтрока, Символы.Таб) = 1 Тогда
СтрокаОбъекта = СокрЛП(ТекущаяСтрока);
Если ЗначениеЗаполнено(СтрокаОбъекта) Тогда
Сообщить(" - Изменен объект: " + СтрокаОбъекта);
КонецЕсли;
КонецЕсли;
КонецЦикла;
// Обязательно удаляем временный файл после обработки
УдалитьФайлы(ИмяФайлаОтчета);
КонецЕсли;
КонецЦикла;
Соблюдение правил изоляции RDP-сессий для аппаратных ключей и своевременная очистка дубликатов лицензионных файлов позволяют полностью исключить ошибки поиска лицензий платформой 1С.