Синхронизация данных между конфигурациями «Зарплата и управление персоналом» (ЗУП) и «Бухгалтерия предприятия» (БП) является критически важным процессом. Однако при использовании COM-соединения в среде с удаленными рабочими столами (RDP) и смешанным парком лицензий (аппаратные HASP-ключи и программные лицензии) часто возникает ошибка: «Произошла исключительная ситуация (V83.COMConnector.1): Не обнаружено свободной лицензии!». Рассмотрим подробно, почему это происходит и как настроить систему для стабильной работы.
Проблема кроется в алгоритме поиска лицензий компонентой V83.COMConnector. Когда инициируется синхронизация, система создает COM-объект, который должен получить лицензию точно так же, как и обычный клиентский сеанс. В среде RDP ситуация осложняется тем, что аппаратные однопользовательские ключи, установленные непосредственно в сервер, видятся системой как локальные для первой активной сессии.
Проанализируем стандартный порядок поиска лицензий для 64-разрядного COM-соединения:
HASP LM).Если в сервер вставлен аппаратный ключ ORGL8, и пользователь подключается по RDP, этот ключ зачастую захватывается его сессией как «локальный». При попытке выполнить синхронизацию COMConnector «упирается» в этот занятый ключ и не переходит к поиску свободных программных лицензий, которые находятся в распоряжении сервера 1С. В результате мы получаем отказ в доступе, даже если программных лицензий достаточно.
Выясним, какая библиотека используется для соединения. Часто администраторы регистрируют 32-битную версию comcntr.dll, находящуюся в папке SysWOW64, в то время как сервер работает в 64-битном режиме. Это может приводить к тому, что соединитель не видит лицензии, выданные 64-битным сервером.
Попробуем перерегистрировать библиотеку нужной разрядности. Для этого выполним команду в консоли от имени администратора. Для 64-битной платформы путь будет выглядеть так:
regsvr32 "C:\Program Files\1cv8\8.3.22.2239\bin\comcntr.dll"
Перед регистрацией обязательно остановим службу Агент сервера 1С:Предприятия, а после успешного выполнения команды запустим её снова. Это гарантирует, что система будет использовать актуальную версию компоненты.
Рассмотрим настройку информационной базы в консоли администрирования серверов 1С. Одним из ключевых параметров является флаг «Разрешить выдачу лицензий сервером 1С:Предприятия». Если этот параметр выключен, то COMConnector будет пытаться найти лицензию только на стороне клиента (в данном случае — локально на сервере RDP).
Выполним следующие шаги:
Это позволит серверу самостоятельно распределять имеющиеся программные лицензии из общего пула (например, из комплекта на 5 или более пользователей) для нужд COM-соединения, игнорируя занятые аппаратные ключи.
Если система продолжает «цепляться» за аппаратный ключ, мы можем принудительно запретить его поиск или изменить приоритеты через конфигурационные файлы. Посмотрим на файл conf.cfg, расположенный в папке C:\Program Files\1cv8\conf.
Добавим параметр, отключающий использование аппаратных ключей для определенных процессов (если это допустимо в вашей инфраструктуре):
Hasps=0
Также проанализируем настройки nethasp.ini. Этот файл управляет тем, как менеджер лицензий ищет аппаратные ключи. Чтобы 1С не тратила время на опрос локальных USB-портов и не блокировала сессию на занятом ключе, можно жестко прописать адрес менеджера лицензий или отключить локальный поиск:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10 ; Укажите IP вашего сервера лицензий
NH_USE_BROADCAST = Disabled
Проанализируем ситуацию, когда лицензия «залипает» за конкретным пользователем RDP. 1С сохраняет информацию о последней успешной лицензии в профиле пользователя. Если один раз был получен аппаратный ключ, система будет пытаться получить его снова в приоритетном порядке.
Рекомендуется выполнить очистку следующих каталогов в профиле пользователя, под которым запускается синхронизация:
%AppData%\Local\1C\1cv8%AppData%\Roaming\1C\1cv8Особое внимание уделим файлам с расширением .lic. Удаление старых файлов лицензий заставит систему инициировать новый поиск и корректно получить программную лицензию из пула сервера.
Рассмотрим наиболее современный и стабильный способ решения проблемы. Платформа 1С постепенно отказывается от технологии COM в пользу обмена через Web-сервисы и формат Enterprise Data. Этот метод лишен проблем с лицензированием COM-объекта, так как взаимодействие происходит по протоколу HTTP.
Преимущества перехода на Web-сервисы:
comcntr.dll и их регистрации в реестре Windows.Для настройки в базе-приемнике (например, БП) необходимо опубликовать базу на веб-сервере (IIS или Apache) и в настройках синхронизации данных выбрать вариант «Синхронизация через веб-сервис».
Важный момент: если вы используете аппаратный серверный ключ, убедитесь, что его наличие не конфликтует с программными лицензиями. В некоторых случаях 1С может отдавать приоритет аппаратному ключу защиты сервера, что косвенно влияет на распределение клиентских лицензий. Регулярное обновление платформы до актуальных релизов (например, ветки 8.3.22 и выше) также помогает избежать старых ошибок механизма лицензирования.