Как исправить ошибку «Значение не является значением объектного типа (ПолноеИмя)» в 1С:Предприятие

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

При работе с типовыми конфигурациями 1С, использующими Библиотеку Стандартных Подсистем (БСП), пользователи и администраторы иногда сталкиваются с критической ошибкой: «Значение не является значением объектного типа (ПолноеИмя)». Эта ошибка чаще всего проявляется при попытке открыть стандартные отчеты, зайти в панель администрирования или во время выполнения регламентных заданий по сбору статистики. В этой статье мы подробно разберем причины возникновения данной проблемы и рассмотрим все доступные методы её решения.

Анализ причины возникновения ошибки

Прежде чем приступать к активным действиям, давайте проанализируем ситуацию и выясним причину сбоя. Исходя из стека вызовов, ошибка локализована в общем модуле ВерсионированиеОбъектов. Рассмотрим проблемную строку кода:

МодульЦентрМониторинга.ЗаписатьСтатистикуОбъектаКонфигурации("КоличествоВерсийОбъекта." + ОбъектМетаданных.ПолноеИмя(), Выборка.Количество);

Здесь система пытается вызвать метод ПолноеИмя() у переменной ОбъектМетаданных. Ошибка возникает в тот момент, когда переменная ОбъектМетаданных принимает значение Неопределено. Это происходит потому, что в регистре сведений ВерсииОбъектов (или связанных с ним таблицах статистики) содержатся записи об объектах, которые физически были удалены из конфигурации или их идентификаторы типов изменились после масштабного обновления базы данных.

Процесс сбора статистики (Центр мониторинга) перебирает данные, находит старую запись, пытается получить метаданные объекта по его внутреннему идентификатору типа функцией Метаданные.НайтиПоТипу(), и, не находя соответствия в текущей конфигурации, возвращает «пустоту». Обращение к свойству «пустого» объекта и вызывает аварийное завершение программы.

Способ 1: Проведение тестирования и исправления базы данных

Рассмотрим самый распространенный и зачастую наиболее эффективный метод — использование встроенных утилит платформы 1С. Тестирование и исправление (ТиИ) позволяет восстановить логическую целостность ссылок и очистить базу от «мусорных» данных.

Разберем по шагам алгоритм действий в Конфигураторе:

  1. Обязательно создадим архивную копию базы данных. Перед любыми манипуляциями с целостностью данных необходимо выгнать всех пользователей и сделать выгрузку информационной базы (.dt) или создать копию файла 1Cv8.1CD.
  2. Запустим 1С:Предприятие в режиме Конфигуратор.
  3. Перейдем в меню Администрирование — Тестирование и исправление....
  4. В открывшемся окне установим следующие флаги:
    • Реиндексация таблиц информационной базы;
    • Проверка логической целостности информационной базы;
    • Проверка ссылочной целостности информационной базы;
    • Пересчет итогов (опционально, но рекомендуется).
  5. В блоке «При наличии ссылок на несуществующие объекты» выберем вариант Очищать объекты.
  6. Нажмем кнопку «Выполнить» и дождемся завершения процесса.

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

Способ 2: Ручная очистка регистра «Версии объектов»

Если стандартное тестирование не помогло, проанализируем содержимое регистров напрямую. Нам необходимо найти записи, ссылающиеся на несуществующие типы объектов.

Рассмотрим подробнее этот процесс:

  1. Откроем базу в режиме «1С:Предприятие» под правами администратора.
  2. Перейдем в Функции для технического специалиста (ранее называлось «Все функции»).
  3. Найдем регистр сведений Версии объектов.
  4. Посмотрим на колонку Объект. Если в ней встречаются записи вида <Объект не найден> (...идентификатор...), это и есть причина нашей проблемы.
  5. Такие записи необходимо удалить. Если их много, рекомендуется воспользоваться обработкой «Поиск и удаление дублей» или написать небольшой программный скрипт для очистки «битых» записей.

Способ 3: Настройка подсистемы версионирования

Иногда ошибка кроется в настройках самой подсистемы БСП. Выясним, как это проверить через интерфейс:

  1. Перейдем в раздел Администрирование — Общие настройки.
  2. Развернем пункт История изменений.
  3. Нажмем гиперссылку Настройки хранения.
  4. Проанализируем список объектов, для которых включено версионирование. Если в списке присутствуют элементы с пометкой об удалении или некорректными именами, снимем для них флаги хранения истории или удалим их из настроек.

Способ 4: Отключение Центра мониторинга

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

Выполним следующие действия:

  1. Зайдем в раздел Администрирование — Поддержка и обслуживание.
  2. Найдем группу Центр мониторинга.
  3. Снимем галочку с пункта Разрешить отправку данных о производительности.

Это действие предотвратит запуск кода, в котором происходит обращение к методу ПолноеИмя(), и позволит пользователям беспрепятственно открывать отчеты.

Способ 5: Программная правка кода (для разработчиков)

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

Рассмотрим пример того, как можно модифицировать код в общем модуле ВерсионированиеОбъектов:


// В процедуре сбора статистики найдем строку обращения к методу ПолноеИмя()
// И заменим её на безопасный вариант:

Если ОбъектМетаданных <> Неопределено Тогда
    МодульЦентрМониторинга.ЗаписатьСтатистикуОбъектаКонфигурации(
        "КоличествоВерсийОбъекта." + ОбъектМетаданных.ПолноеИмя(), 
        Выборка.Количество);
Иначе
    // Если объект не найден, просто пропускаем запись в статистику
    ЗаписьЖурналаРегистрации("Версионирование.Ошибка", УровеньЖурналаРегистрации.Предупреждение, , , 
        "Обнаружена битая ссылка в статистике версионирования.");
КонецЕсли;

Такой подход делает систему более отказоустойчивой. Обратите внимание, что при обновлении конфигурации на новый релиз БСП данные изменения могут быть затерты, поэтому лучше использовать механизм Расширений конфигурации.

Дополнительные рекомендации

Посмотрим на ситуацию шире. Иногда причина кроется в «залипшем» серверном кэше. Если вы только что провели обновление и сразу столкнулись с этой ошибкой, попробуйте следующее:

  1. Остановите службу сервера 1С:Предприятия.
  2. Очистите папку srvinfo (временные файлы сеансов и кэша метаданных).
  3. Запустите службу заново.

Подведем итог: ошибка «Значение не является значением объектного типа (ПолноеИмя)» — это типичное следствие несоответствия данных в регистрах и структуры метаданных. Сочетание Тестирования и исправления с ручной очисткой регистра версий решает проблему в 99% случаев. Мы надеемся, что приведенные пошаговые инструкции помогли вам восстановить работоспособность вашей системы 1С.

← На главную