Перейти к содержанию

Обращение к несуществующему значению перечисления

В 1С:Предприятие обращение к несуществующему значению перечисления приводит к возникновению ошибки Поле объекта не обнаружено.

Причины возникновения ошибки могут быть различны:

  • Опечатка в имени значения перечисления;
  • Значение перечисления было удалено или переименовано;

Пример ошибки:

// Значения перечисления НеБелый не существует
ЗначениеПеречисления = WebЦвета.НеБелый;

Область действия проверки:

  • Системные глобальные перечисления. В синтакс-помощнике это разделы Системные наборы значений и Системные перечисления.
  • Перечисления из конфигурации (расширения конфигурации).

Составные перечисления (их значения состоят из системных и значений объектов конфигурации) временно исключены из анализа:

  • БиблиотекаКартинок
  • ШрифтыСтиля
  • ЦветаСтиля
  • РамкиСтиля

Особенности:

  • Параметр Проверять существование по всех конфигурациях проекта (учитывать сводный контекст) включает проверку значений перечислений конфигурации по сводному контексту проекта. Если проект содержит несколько конфигураций и расширений, при значении параметра true имя значениея перечисления считается верным, если присутствует хотя бы в одной из конфигураций проекта (в любой). При значении false (по умолчанию) объект метаданных должен обязательно присутствовать в той конфигурации, которой принадлежит вызывающий модуль.
  • Расчет сводного контекста отключается параметром sonar.bsl.denyCumulativeContextComputation.

Экранирование кода

// sonar:EnumValueExist:off
// sonar:EnumValueExist:on