В практике администрирования решений на платформе 1С:Предприятие часто возникает необходимость модернизации ИТ-инфраструктуры: переименование серверов, перенос баз данных или замена рабочих станций. Однако после изменения сетевого имени компьютера, на котором установлен ключ защиты, пользователи могут столкнуться с ошибкой запуска программы. На клиентских компьютерах продолжает всплывать старое имя сервера, и система отказывается запускаться, несмотря на то, что физически ключ исправен и служба лицензирования работает.
В этой статье мы подробно разберем, почему возникает эта проблема, почему стандартные файлы конфигурации HASP не помогают в ее решении, и как по шагам восстановить работоспособность системы при использовании СЛК (Системы лицензирования конфигураций).
При возникновении проблем с поиском ключа защиты системные администраторы первым делом начинают проверять сетевые настройки HASP-клиента. Они редактируют файл nethasp.ini, прописывают новые IP-адреса в файле hosts или проверяют настройки брандмауэра. Однако эти действия не принесут результата, если в вашей конфигурации используется специализированная защита — СЛК (разработка компании «1С-Рарус» или ВДГБ, часто применяемая в отраслевых решениях, таких как ЖКХ, Ломбард, Общепит и др.).
В отличие от классических аппаратных ключей защиты HASP от компании Sentinel, система СЛК работает по собственному программному протоколу через TCP-порт (обычно 9099). Параметры подключения клиентов к серверу лицензий СЛК хранятся не в файлах операционной системы, а непосредственно внутри самой информационной базы 1С — в специальной константе.
Проанализируем программный код конфигурации, отвечающий за связь с сервером лицензирования:
Процедура ПрочитатьПараметрыСвязи()
СтрокаПараметровСвязи = НаборКонстант.СЗК_ПараметрыСвязи;
ИмяАдресКомпьютера = ПолучитьНастройкуИзКонстанты("host=", СтрокаПараметровСвязи);
СетевойПорт = ПолучитьНастройкуИзКонстанты("port=", СтрокаПараметровСвязи);
Если ПустаяСтрока(СтрокаПараметровСвязи) И ЭтоФайловыйВариантИБ Тогда
ВариантСвязи = 2;
ИначеЕсли НРег(ИмяАдресКомпьютера) = "localhost" Тогда
ВариантСвязи = 0;
Иначе
ВариантСвязи = 1;
КонецЕсли;
КонецПроцедуры
Как мы видим из кода, обработка защиты считывает настройки из константы СЗК_ПараметрыСвязи (Система Защиты Конфигурации). В ней в виде строки хранится адрес хоста и порт, например: host=BELEOKS;port=9099;. Когда имя компьютера-сервера меняется в локальной сети, старое имя остается записанным в этой константе внутри базы данных. Именно поэтому на всех клиентских компьютерах при запуске продолжает отображаться ошибка со старым именем хоста.
Ниже мы подробно рассмотрим четыре практических способа решения этой проблемы, начиная от самых простых интерфейсных методов и заканчивая низкоуровневой настройкой файлов конфигурации.
Самый правильный и безопасный способ — изменить настройки СЛК непосредственно из режима «1С:Предприятие» под пользователем с полными правами. В зависимости от конкретного отраслевого решения меню настройки может располагаться в разных местах.
Выполним следующие шаги для изменения параметров связи:
9099).Если интерфейсный пункт меню по какой-то причине недоступен (например, программа не запускается у администратора из-за жесткой блокировки при отсутствии связи с ключом), мы можем отредактировать константу напрямую.
Разберем этот процесс по шагам:
СЗК_ПараметрыСвязи).host=СТАРОЕ_ИМЯ;port=9099;.host=192.168.1.50;port=9099;.Если у вас есть доступ к Конфигуратору, но запустить режим Предприятия для редактирования константы не удается из-за ошибок лицензирования, вы можете обновить значение константы программно с помощью короткого скрипта.
Для этого выполните следующие действия:
&НаСервере
Процедура ИзменитьНастройкиСЛКНаСервере()
// Задаем параметры подключения к новому серверу лицензирования
НовыеПараметры = "host=ИМЯ_НОВОГО_КОМПЬЮТЕРА;port=9099;";
// Записываем значение напрямую в константу
Константы.СЗК_ПараметрыСвязи.Установить(НовыеПараметры);
Сообщить("Параметры связи СЛК успешно обновлены на: " + НовыеПараметры);
КонецПроцедуры
Альтернативно, если база данных файловая, вы можете временно отключить проверку лицензионного ключа в коде модуля управляемого приложения (в процедуре ПриНачалеРаботыСистемы), запустить Предприятие, изменить константу стандартным способом и вернуть код в исходное состояние.
Бывают ситуации, когда база данных является распределенной (РИБ) или используется в разных филиалах, где установлены свои локальные серверы лицензирования СЛК. В таком случае централизованное изменение константы в базе данных не подходит, так как у каждого офиса должен быть свой адрес сервера лицензий.
Для решения этой задачи разработчики СЛК предусмотрели механизм локального переопределения через файлы конфигурации на клиентских рабочих станциях:
%ProgramData%\1C\licence\3.0\ (в операционной системе Windows этот путь ведет в скрытую папку C:\ProgramData\1C\licence\3.0\).licenceaddin.conf.
{
"host": "ИМЯ_НОВОГО_КОМПЬЮТЕРА",
"port": 9099
}
licenceaddin.conf, проигнорировав значение общей константы СЗК_ПараметрыСвязи из базы данных. Это позволит гибко настроить подключение индивидуально для каждого рабочего места.После того как вы изменили имя компьютера в настройках 1С, убедитесь, что сам сервер лицензирования СЛК работает корректно на новом месте. СЛК версии 3.0 и выше имеет удобную встроенную веб-консоль управления.
Чтобы проверить статус сервера лицензий:
http://localhost:9099.http://ИМЯ_НОВОГО_СЕРВЕРА:9099 (или его IP-адрес).admin, пароль admin (если они не были изменены ранее).9099 в брандмауэре Windows на сервере для входящих подключений по протоколу TCP.Используя приведенные инструкции, вы сможете быстро локализовать и устранить проблемы с доступностью лицензий 1С при любых изменениях в сетевой инфраструктуре вашего офиса.