Проверка существования значения перечисления
Чтобы программно проверить, существует ли перечисление с конкретным именем и существует ли у него конкретное значение, достаточно обратиться через переменную Метаданные.Перечисления
В ней содержится массив всех видов перечислений текущей конфигурации 1С.
Чтобы проверить существование какого-либо значения у конкретного перечисления, нужно обратиться к свойству ЗначенияПеречисления. Например, это может выглядеть так:
Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления.Найти("НДС5")
Метод Найти вернет значение Неопределено, если в перечислении СтавкиНДС нет значения НДС5.
Когда программная проверка перечислений нужна на практике
Разработали и продаем готовые переносы данных 1С. Начиная с 2025 года появились ставки НДС 5% и 7% для организаций на системе налогообложения УСН.
Однако старые конфигурации 1С, такие как 1С:Комплексная автоматизация 8 ред 1.1 или 1С:Управление торговлей ред.10.3 уже сняты с поддержки и в них таких ставок не появится.
Чтобы написать унифицированный код для нескольких конфигураций 1С, нам потребовалось проверять значения перечислений.
В итоге получился код, приводим его ниже:
…
ИначеЕсли Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления.Найти("НДС5") <> Неопределено И Источник = Перечисления.СтавкиНДС.НДС5 Тогда
Значение = "5%";
ИначеЕсли Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления.Найти("НДС5_105") <> Неопределено И Источник = Перечисления.СтавкиНДС.НДС5_105 Тогда
Значение = "5% / 105%";
ИначеЕсли Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления.Найти("НДС7") <> Неопределено И Источник = Перечисления.СтавкиНДС.НДС7 Тогда
Значение = "7%";
ИначеЕсли Метаданные.Перечисления.СтавкиНДС.ЗначенияПеречисления.Найти("НДС7_107") <> Неопределено И Источник = Перечисления.СтавкиНДС.НДС7_107 Тогда
Значение = "7% / 107%";
…