Рассмотрим распространенную проблему, которая возникает в объединенных конфигурациях 1С:Бухгалтерия (БП) и 1С:Управление автотранспортом (УАТ). После очередного обновления БП система защиты УАТ перестает находить сервер лицензирования и при запуске выдает ошибку: {ВнешняяОбработка.Лицензирование.МодульОбъекта(198)}: Значение не является значением объектного типа (Компонента). При этом в копии базы до обновления все работает исправно.
Проанализируем причины этой ошибки и разберем по шагам, как можно диагностировать и решить данную проблему.
Прежде чем переходить к сложным решениям, необходимо исключить самые очевидные причины. Проведем несколько проверок.
Лицензирование). Запустите 1С в режиме отладки и посмотрите, значение какой переменной или объекта не определено. Скорее всего, переменная, которая должна содержать объект внешней компоненты, окажется пустой (Неопределено). Это подтвердит, что компонента не была успешно загружена и инициализирована.
Если первичная диагностика не выявила проблем с разрядностью, то, скорее всего, мы столкнулись с более глубокой проблемой — несовместимостью старых модулей лицензирования УАТ с новыми версиями платформы 1С:Предприятие.
Ключевая причина ошибки кроется в конфликте имен функций.
Начиная с версии платформы 8.3.11, в состав встроенного языка 1С была добавлена глобальная процедура с именем ПроверитьБИТ(). Однако в закрытых модулях системы лицензирования старых версий УАТ уже существовала собственная одноименная функция. Когда обновленная конфигурация БП, требующая для работы платформу 8.3.11 или выше, пытается выполнить код инициализации лицензии УАТ, возникает конфликт. Система не может определить, какую из двух процедур ПроверитьБИТ() вызывать — встроенную платформенную или из модуля УАТ.
Этот конфликт приводит к сбою на этапе инициализации внешней компоненты. В результате объект компоненты не создается, а переменная, предназначенная для него, остается пустой. Именно поэтому при последующем обращении к методам этой переменной система выдает ошибку "Значение не является значением объектного типа (Компонента)".
Существует несколько путей решения, которые различаются по сложности, надежности и долгосрочным перспективам. Рассмотрим их от самого простого до наиболее правильного.
Самый быстрый способ обойти конфликт имен — это "откатить" поведение конфигурации до версии платформы, в которой еще не было встроенной функции ПроверитьБИТ().
8.3.11, например, 8.3.10.Важно понимать: этот способ может решить проблему с лицензированием, но потенциально может вызвать ошибки в работе новых механизмов 1С:Бухгалтерии, которые рассчитаны на более свежие версии платформы. Используйте это решение как временное.
Наиболее правильным решением является обновление конфигурации УАТ до актуальной версии. В новых версиях используются современные компоненты системы лицензирования СЛК 3.0, которые:
Если полное обновление невозможно, можно попробовать обратиться в техническую поддержку разработчика ("1С-Рарус") с просьбой предоставить обновленные модули лицензирования для вашей старой версии. Однако, скорее всего, вам порекомендуют полное обновление продукта.
Нужно учитывать, что разработчик УАТ ("1С-Рарус") официально прекратил поддержку объединенных конфигураций "Бухгалтерия + Управление автотранспортом". Это означает, что новые обновления не тестируются и не адаптируются для совместной работы в одной базе.
В долгосрочной перспективе единственным надежным и поддерживаемым решением является разделение баз:
Этот подход полностью исключает конфликты при обновлениях, упрощает сопровождение каждой из систем и является рекомендованным методом интеграции.
Подведем итог: ошибка "Значение не является значением объектного типа (Компонента)" в данном случае — это симптом несовместимости старой системы защиты с новой платформой 1С. Для исправления ситуации необходимо либо обновить компоненты защиты, либо, что более правильно в долгосрочной перспективе, перейти на рекомендованную разработчиком схему работы с двумя отдельными базами данных.