При переносе защищенных конфигураций 1С, использующих Систему лицензирования и защиты конфигураций (СЛК), в новую среду, особенно в облачную, можно столкнуться с неприятной ошибкой: "Тип не определен (AddIn.Licence.LicenceExtension20)". Она возникает в момент, когда система пытается обратиться к защищенному функционалу, и говорит о том, что не удалось подключить компоненту СЛК. Проблема может быть коварной, поскольку проявляется даже тогда, когда внешняя компонента не установлена, и конфигурация должна использовать свою внутреннюю, "зашитую" версию.
Давайте подробно разберем, почему возникает эта ошибка и какие шаги предпринять для ее решения, основываясь на реальном примере и дополнительных методах диагностики.
Рассмотрим ситуацию, с которой столкнулся автор исходной темы. При переносе конфигурации с локального сервера на облачный виртуальный сервер с идентичными характеристиками (Windows Server, MS SQL) возникла данная ошибка. После долгих поисков выяснилось, что корень проблемы лежал в операционной системе.
Облачный провайдер предоставил виртуальную машину с англоязычной версией Windows Server, на которую был установлен русский языковой пакет. Этой полумеры оказалось недостаточно. Некоторые системные компоненты, включая COM-объекты, к которым относится и компонента СЛК, могут быть чувствительны к системной локали, кодовым страницам и настройкам реестра, которые языковой пакет изменяет не полностью.
Решение оказалось простым, но неочевидным:
Вывод: если вы столкнулись с подобной ошибкой в облачной или виртуализированной среде, в первую очередь убедитесь, что у вас установлена полноценная, а не "русифицированная" версия операционной системы, если ваша конфигурация рассчитана на работу в русскоязычной среде.
Если смена локализации не ваш случай или не помогла, ошибка "Тип не определен" чаще всего указывает на проблемы с регистрацией или доступностью COM-компоненты. Давайте проанализируем другие возможные причины и методы их устранения.
Это самая частая причина подобных ошибок. Сервер 1С и компонента СЛК должны иметь одинаковую разрядность.
Суть проблемы: Если ваш сервер "1С:Предприятия" работает как 64-разрядный процесс (rphost.exe x64), он не сможет загрузить 32-разрядную (x86) DLL-библиотеку компоненты, и наоборот. В результате система не сможет создать COM-объект и выдаст ошибку "Тип не определен".
Как проверить и решить:
rphost.exe. Посмотрите, есть ли у него пометка "(32 бит)". Если нет — процесс 64-битный.LicenceAddIn) соответствующей разрядности. Дистрибутивы обычно содержат обе версии.Иногда в процессе установки компонента не регистрируется в системе должным образом из-за недостатка прав или по другим причинам.
Суть проблемы: Чтобы система могла найти и создать объект AddIn.Licence.LicenceExtension20, информация о нем должна присутствовать в реестре Windows. Если ее там нет, возникает ошибка.
Как решить:
LicenceAddIn.dll и находится в папке установки СЛК (например, C:\Program Files\1C\Licence\3.0\bin).cmd) от имени администратора.regsvr32 из System32, а для 32-битной — из SysWOW64.
Пример для 64-битной компоненты:
regsvr32 "C:\Program Files\1C\Licence\3.0\bin\LicenceAddIn.dll"
Пример для 32-битной компоненты:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1C\Licence\3.0\bin\LicenceAddIn.dll"
Для корректной работы системы лицензирования должны быть запущены соответствующие службы, а у пользователя сервера 1С должны быть необходимые права.
Какие службы проверить: В зависимости от версии и типа защиты (например, от "Рарус") могут требоваться разные службы. Стандартный набор для СЛК 3.0 включает:
licenceaddin-loader-service.exe)licenceserver.exe)Убедитесь, что эти службы установлены и запущены в консоли "Службы" (services.msc).
Проверка прав: Очень важно, от имени какого пользователя работает служба "Агент сервера 1С:Предприятия 8". По умолчанию это USR1CV8. Этот пользователь должен иметь права на чтение и выполнение для папки с компонентами СЛК и для самих файлов DLL.
Ошибка может возникать из-за того, что код пытается подключить компоненту не в том контексте (на клиенте вместо сервера).
Суть проблемы: Компонента СЛК, как правило, устанавливается на сервере 1С. Если вызов функции ПодключитьВнешнююКомпоненту() происходит в коде, который выполняется на клиенте (например, в модуле формы без серверных вызовов), то клиентская машина попытается найти компоненту у себя. Если она там не установлена и не зарегистрирована, вы получите ошибку "Тип не определен".
Как проверить: Убедитесь, что код, отвечающий за подключение компоненты, выполняется в серверном модуле или в процедуре с директивой &НаСервере.
Внешние факторы также могут мешать загрузке компоненты.
Антивирусы и файрволы: Проверьте, не блокирует ли антивирусное ПО или брандмауэр доступ к файлам СЛК или сетевые порты, которые использует сервер СЛК (по умолчанию 9099 для консоли управления).
Системные библиотеки: Компонента СЛК может зависеть от библиотек Microsoft Visual C++ Redistributable. Убедитесь, что на сервере установлены необходимые версии этих пакетов, причем как x86, так и x64, так как разные компоненты системы могут требовать разные версии.
Подводя итог, можно сказать, что ошибка "Тип не определен (AddIn.Licence.LicenceExtension20)" — это сигнал о системной проблеме на уровне взаимодействия 1С с операционной системой. Начинайте диагностику с самых вероятных причин — разрядности и регистрации компоненты, но не забывайте про такие неочевидные, но критичные факторы, как правильная локализация ОС, особенно в облачных средах.