При работе с сервером 1С:Предприятие часто возникает ситуация, когда на одной машине сосуществуют и программные, и аппаратные лицензии. Если регламентное задание запускается через планировщик задач, а аппаратный ключ по какой-то причине временно недоступен, система выводит диалоговое окно с вопросом о поиске или отключении использования аппаратного ключа. Поскольку задание выполняется в автоматическом режиме, нажать кнопку некому. В результате сеанс остается «зависшим», лицензии расходуются впустую, а сервер начинает терять производительность из-за накопления пустых процессов 1cv8.exe.
В этой статье мы подробно разберем, как полностью автоматизировать процесс запуска и избавиться от подобных сообщений, используя различные уровни настроек системы.
Самый быстрый и эффективный способ решить проблему для конкретного задания в планировщике — это добавить специальные ключи в строку запуска 1С. Рассмотрим подробнее, за что они отвечают:
Если мы добавим эти ключи, то при отсутствии лицензии 1С не будет выводить окно с вопросом, а просто завершит работу с кодом ошибки. Это позволит планировщику задач корректно завершить процесс, не оставляя его «висеть» в памяти. Пример строки запуска может выглядеть следующим образом:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "Server\BaseName" /N "Admin" /P "Password" /DisableStartupMessages /DisableStartupDialogs
Проанализируем также использование ключа /UseHwLicenses. Если вы точно знаете, что для выполнения конкретного задания аппаратные ключи не нужны (достаточно программных), вы можете принудительно запретить их поиск:
/UseHwLicenses- — отключает поиск аппаратного ключа для данного сеанса.
/UseHwLicenses+ — принудительно включает поиск аппаратного ключа.
Если вам необходимо изменить поведение системы для всех баз конкретного пользователя или для всех пользователей сервера сразу, мы воспользуемся редактированием файла 1cestart.cfg. Этот файл представляет собой текстовый документ в кодировке UTF-16LE.
Выясним, где находятся эти файлы:
%APPDATA%\1C\1CEStart\1cestart.cfg%ALLUSERSPROFILE%\1C\1CEStart\1cestart.cfgРазберем параметр UseHwLicenses. Нам необходимо добавить или изменить строку в этом файле:
UseHwLicenses=0
Значение 0 отключает поиск аппаратного ключа, а 1 (установлено по умолчанию) — включает его. Важно помнить о приоритетах: настройки в профиле пользователя имеют преимущество над общими настройками компьютера.
Существует еще один уровень настроек, который часто упускают из виду. В каталоге установленной платформы (например, C:\Program Files\1cv8\8.3.XX.XXXX\conf) находится файл conf.cfg. В нем можно прописать параметр, который радикально решит проблему с аппаратными ключами на данном сервере:
Protection=0
Установка Protection=0 полностью отключает поиск аппаратных ключей (HASP) для данной версии платформы. Посмотрите внимательно: этот метод подходит только в том случае, если вы планируете использовать исключительно программные лицензии для всех баз, запускаемых этой версией платформы.
Иногда сообщение об ошибке возникает не потому, что ключа нет, а потому, что 1С тратит слишком много времени на его поиск в сети (broadcasting), и этот поиск завершается по таймауту. Мы можем ускорить процесс, жестко прописав адрес сервера лицензий в файле nethasp.ini.
Найдем секцию [NH_TCPIP] и укажем IP-адрес сервера, где установлен аппаратный ключ:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.50
NH_TCPIP_METHOD = TCP
NH_USE_IPV4 = Enabled
Такая настройка исключит фазу широковещательного опроса всей локальной сети, что значительно повысит стабильность обнаружения ключа и предотвратит появление лишних диалоговых окон.
Если запуск осуществляется через список баз, мы можем отредактировать файл описания информационных баз с расширением .v8i. Каждая секция базы в этом файле может содержать свои параметры. Разберем пример добавления параметра:
[Название_Базы]
Connect=Srvr="ServerName";Ref="BaseName";
ID=...
OrderInList=...
Folder=/
OrderInTree=...
External=0
ClientConnectionSpeed=Normal
App=Auto
UpdateByCfg=1
UseHWLicenses=0
Указав UseHWLicenses=0 именно здесь, вы примените настройку точечно к одной конкретной базе, не затрагивая поведение платформы в других случаях.
Проанализируем техническую сторону вопроса: иногда аппаратный ключ «отваливается» из-за того, что операционная система Windows в целях экономии энергии отключает USB-порты. Для сервера это недопустимо. Проверьте следующие настройки:
Эти действия помогут минимизировать случаи, когда аппаратный ключ становится недоступным для платформы 1С.
Для надежной работы автоматических заданий мы рекомендуем комбинировать подходы:
1. В планировщике задач обязательно использовать ключи /DisableStartupMessages /DisableStartupDialogs.
2. В профиле пользователя Windows, от имени которого работает планировщик, создать файл 1cestart.cfg с параметром UseHwLicenses=0.
3. Проверить код возврата после завершения процесса. Если 1С вернула код, отличный от 0, значит произошла ошибка (в том числе лицензирования), и скрипт должен отправить уведомление системному администратору.