Как решить проблему с нехваткой лицензий при COM-синхронизации ЗУП и Бухгалтерии?

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

Синхронизация данных между конфигурациями «Зарплата и управление персоналом» (ЗУП) и «Бухгалтерия предприятия» (БП) является критически важным процессом. Однако при использовании COM-соединения в среде с удаленными рабочими столами (RDP) и смешанным парком лицензий (аппаратные HASP-ключи и программные лицензии) часто возникает ошибка: «Произошла исключительная ситуация (V83.COMConnector.1): Не обнаружено свободной лицензии!». Рассмотрим подробно, почему это происходит и как настроить систему для стабильной работы.

Разберем причину возникновения конфликта лицензий

Проблема кроется в алгоритме поиска лицензий компонентой V83.COMConnector. Когда инициируется синхронизация, система создает COM-объект, который должен получить лицензию точно так же, как и обычный клиентский сеанс. В среде RDP ситуация осложняется тем, что аппаратные однопользовательские ключи, установленные непосредственно в сервер, видятся системой как локальные для первой активной сессии.

Проанализируем стандартный порядок поиска лицензий для 64-разрядного COM-соединения:

  1. Поиск локальных клиентских лицензий (аппаратные ключи, воткнутые в компьютер).
  2. Локальная серверная лицензия (только для 64-разрядных систем).
  3. Сетевые аппаратные ключи (через HASP LM).
  4. Клиентские лицензии на сервере «1С:Предприятия».

Если в сервер вставлен аппаратный ключ ORGL8, и пользователь подключается по RDP, этот ключ зачастую захватывается его сессией как «локальный». При попытке выполнить синхронизацию COMConnector «упирается» в этот занятый ключ и не переходит к поиску свободных программных лицензий, которые находятся в распоряжении сервера 1С. В результате мы получаем отказ в доступе, даже если программных лицензий достаточно.

Решение 1: Проверка разрядности и перерегистрация COM-соединителя

Выясним, какая библиотека используется для соединения. Часто администраторы регистрируют 32-битную версию comcntr.dll, находящуюся в папке SysWOW64, в то время как сервер работает в 64-битном режиме. Это может приводить к тому, что соединитель не видит лицензии, выданные 64-битным сервером.

Попробуем перерегистрировать библиотеку нужной разрядности. Для этого выполним команду в консоли от имени администратора. Для 64-битной платформы путь будет выглядеть так:

regsvr32 "C:\Program Files\1cv8\8.3.22.2239\bin\comcntr.dll"

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

Решение 2: Настройка выдачи лицензий сервером 1С

Рассмотрим настройку информационной базы в консоли администрирования серверов 1С. Одним из ключевых параметров является флаг «Разрешить выдачу лицензий сервером 1С:Предприятия». Если этот параметр выключен, то COMConnector будет пытаться найти лицензию только на стороне клиента (в данном случае — локально на сервере RDP).

Выполним следующие шаги:

  1. Откроем консоль администрирования серверов 1С.
  2. Найдем нашу информационную базу в списке.
  3. Зайдем в «Свойства».
  4. Убедимся, что установлена галочка «Разрешить выдачу лицензий сервером 1С:Предприятия».

Это позволит серверу самостоятельно распределять имеющиеся программные лицензии из общего пула (например, из комплекта на 5 или более пользователей) для нужд COM-соединения, игнорируя занятые аппаратные ключи.

Решение 3: Управление поиском через conf.cfg и nethasp.ini

Если система продолжает «цепляться» за аппаратный ключ, мы можем принудительно запретить его поиск или изменить приоритеты через конфигурационные файлы. Посмотрим на файл 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

Решение 4: Очистка кэша лицензий пользователя

Проанализируем ситуацию, когда лицензия «залипает» за конкретным пользователем RDP. 1С сохраняет информацию о последней успешной лицензии в профиле пользователя. Если один раз был получен аппаратный ключ, система будет пытаться получить его снова в приоритетном порядке.

Рекомендуется выполнить очистку следующих каталогов в профиле пользователя, под которым запускается синхронизация:

  1. %AppData%\Local\1C\1cv8
  2. %AppData%\Roaming\1C\1cv8

Особое внимание уделим файлам с расширением .lic. Удаление старых файлов лицензий заставит систему инициировать новый поиск и корректно получить программную лицензию из пула сервера.

Решение 5: Переход на синхронизацию через Web-сервисы (Enterprise Data)

Рассмотрим наиболее современный и стабильный способ решения проблемы. Платформа 1С постепенно отказывается от технологии COM в пользу обмена через Web-сервисы и формат Enterprise Data. Этот метод лишен проблем с лицензированием COM-объекта, так как взаимодействие происходит по протоколу HTTP.

Преимущества перехода на Web-сервисы:

Для настройки в базе-приемнике (например, БП) необходимо опубликовать базу на веб-сервере (IIS или Apache) и в настройках синхронизации данных выбрать вариант «Синхронизация через веб-сервис».

Важный момент: если вы используете аппаратный серверный ключ, убедитесь, что его наличие не конфликтует с программными лицензиями. В некоторых случаях 1С может отдавать приоритет аппаратному ключу защиты сервера, что косвенно влияет на распределение клиентских лицензий. Регулярное обновление платформы до актуальных релизов (например, ветки 8.3.22 и выше) также помогает избежать старых ошибок механизма лицензирования.

← На главную