Почему после обновления 1С:Бухгалтерии перестает работать лицензирование УАТ с ошибкой "Значение не является значением объектного типа (Компонента)"?

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

Рассмотрим распространенную проблему, которая возникает в объединенных конфигурациях 1С:Бухгалтерия (БП) и 1С:Управление автотранспортом (УАТ). После очередного обновления БП система защиты УАТ перестает находить сервер лицензирования и при запуске выдает ошибку: {ВнешняяОбработка.Лицензирование.МодульОбъекта(198)}: Значение не является значением объектного типа (Компонента). При этом в копии базы до обновления все работает исправно.

Проанализируем причины этой ошибки и разберем по шагам, как можно диагностировать и решить данную проблему.

Шаг 1. Первичная диагностика

Прежде чем переходить к сложным решениям, необходимо исключить самые очевидные причины. Проведем несколько проверок.

  1. Проверка разрядности платформы. Одна из частых причин — несоответствие разрядности платформы 1С и компонент системы лицензирования. Старые версии системы защиты (СЛК), используемые в УАТ, часто предназначены только для 32-разрядной (x86) версии платформы. Если после обновления вы перешли на 64-разрядную (x64) платформу, компонента защиты просто не сможет загрузиться. Убедитесь, что вы используете 32-разрядный клиент 1С.
  2. Использование отладчика. Чтобы точно понять, что происходит в момент ошибки, воспользуемся отладчиком. Установите точку останова в конфигураторе на строке, указанной в сообщении об ошибке (в нашем случае это строка 198 в модуле объекта внешней обработки Лицензирование). Запустите 1С в режиме отладки и посмотрите, значение какой переменной или объекта не определено. Скорее всего, переменная, которая должна содержать объект внешней компоненты, окажется пустой (Неопределено). Это подтвердит, что компонента не была успешно загружена и инициализирована.

Шаг 2. Анализ основной причины — конфликт на уровне платформы

Если первичная диагностика не выявила проблем с разрядностью, то, скорее всего, мы столкнулись с более глубокой проблемой — несовместимостью старых модулей лицензирования УАТ с новыми версиями платформы 1С:Предприятие.

Ключевая причина ошибки кроется в конфликте имен функций.

Начиная с версии платформы 8.3.11, в состав встроенного языка 1С была добавлена глобальная процедура с именем ПроверитьБИТ(). Однако в закрытых модулях системы лицензирования старых версий УАТ уже существовала собственная одноименная функция. Когда обновленная конфигурация БП, требующая для работы платформу 8.3.11 или выше, пытается выполнить код инициализации лицензии УАТ, возникает конфликт. Система не может определить, какую из двух процедур ПроверитьБИТ() вызывать — встроенную платформенную или из модуля УАТ.

Этот конфликт приводит к сбою на этапе инициализации внешней компоненты. В результате объект компоненты не создается, а переменная, предназначенная для него, остается пустой. Именно поэтому при последующем обращении к методам этой переменной система выдает ошибку "Значение не является значением объектного типа (Компонента)".

Шаг 3. Варианты решения проблемы

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

Решение 1: Установка режима совместимости (временное решение)

Самый быстрый способ обойти конфликт имен — это "откатить" поведение конфигурации до версии платформы, в которой еще не было встроенной функции ПроверитьБИТ().

  1. Зайдите в конфигуратор вашей базы.
  2. Откройте свойства корневого узла конфигурации (правой кнопкой мыши по названию конфигурации -> Свойства).
  3. Найдите свойство "Режим совместимости".
  4. Установите значение ниже, чем 8.3.11, например, 8.3.10.
  5. Сохраните конфигурацию и обновите конфигурацию базы данных (F7).

Важно понимать: этот способ может решить проблему с лицензированием, но потенциально может вызвать ошибки в работе новых механизмов 1С:Бухгалтерии, которые рассчитаны на более свежие версии платформы. Используйте это решение как временное.

Решение 2: Обновление УАТ (оптимальный вариант)

Наиболее правильным решением является обновление конфигурации УАТ до актуальной версии. В новых версиях используются современные компоненты системы лицензирования СЛК 3.0, которые:

Если полное обновление невозможно, можно попробовать обратиться в техническую поддержку разработчика ("1С-Рарус") с просьбой предоставить обновленные модули лицензирования для вашей старой версии. Однако, скорее всего, вам порекомендуют полное обновление продукта.

Решение 3: Разделение конфигураций (стратегическое решение)

Нужно учитывать, что разработчик УАТ ("1С-Рарус") официально прекратил поддержку объединенных конфигураций "Бухгалтерия + Управление автотранспортом". Это означает, что новые обновления не тестируются и не адаптируются для совместной работы в одной базе.

В долгосрочной перспективе единственным надежным и поддерживаемым решением является разделение баз:

  1. Создать две отдельные информационные базы: одну с актуальной версией 1С:Бухгалтерия, вторую — с актуальной версией 1С:Управление автотранспортом.
  2. Настроить между ними типовой обмен данными. Правила обмена поддерживаются и обновляются разработчиком.

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

Подведем итог: ошибка "Значение не является значением объектного типа (Компонента)" в данном случае — это симптом несовместимости старой системы защиты с новой платформой 1С. Для исправления ситуации необходимо либо обновить компоненты защиты, либо, что более правильно в долгосрочной перспективе, перейти на рекомендованную разработчиком схему работы с двумя отдельными базами данных.

← На главную