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

Значения перечисления добавляются на закладке Данные:

При добавлении нового значения в свойствах можно указать имя и синоним:

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

Перечисление не может быть иерархическим. Все значения находятся на одном уровне.
На уровне базы данных будет создана одна таблица с колонкой Значение, в которой будут храниться все значения:
Значение |
---|
Товар |
Услуга |
Формы перечисления
По умолчанию, при создании нового перечисления на закладке Поле Ввода установлен флаг Быстрый выбор в результате чего значение перечисления выбирается из выпадающего списка:


Если снять данный флаг, то значение перечисления можно выбирать из формы выбора:

На закладке Формы можно создать свою форму списка и форму выбора. Форма выбора будет использоваться для выбора значения, а форму списка можно использовать для печати всех значений перечисления.
ПеречисленияМенеджер
С помощью данного объекта можно получить доступ ко всем менеджерам перечислений конфигурации. Можно перебрать их в цикле:
1 2 3 4 5 6 7 8 9 |
//через имя перечисления МенПер = Перечисления.ТипыТоваров; //через квадратные скобки МенПер = Перечисления["ТипыТоваров"]; //перебор всех менеджеров Для Каждого МенПер Из Перечисления Цикл КонецЦикла; |
Также можно проверить ссылку — является она ссылкой на перечисление или нет:
1 2 3 4 5 6 7 8 9 10 |
//описание типов с перечислениями конфигурации ВсеПеречисленияКонфигурации = Перечисления.ТипВсеСсылки(); //проверяем //СсылкаНаПер - ссылка Если ВсеПеречисленияКонфигурации.СодержитТип(ТипЗнч(СсылкаНаПер)) Тогда //да, это перечисление Иначе //нет, это не перечисление КонецЕсли; |
Получение значения перечисления
Для получения значения перечисления нужно обратиться к нему по имени после имени перечисления. Для получения пустого перечисления используется метод ПустаяСсылка:
1 2 3 4 |
ПерТовар = Перечисления.ТипыТоваров.Товар; ПерУслуга = Перечисления.ТипыТоваров.Услуга; //пустое перечисление ПустоеПер = Перечисления.ТипыТоваров.ПустаяСсылка(); |
Также можно обратиться к значению перечисления по индексу или через квадратные скобки. Нумерация значений выполняется с нуля в порядке следования значений в конфигураторе. Через квадратные скобки можно указать как индекс, так и имя перечисления:
1 2 3 4 5 6 7 8 9 |
//товар ПерТовар = Перечисления.ТипыТоваров.Получить(0); ПерТовар = Перечисления.ТипыТоваров[0]; ПерТовар = Перечисления.ТипыТоваров["Товар"]; //услуга ПерУслуга = Перечисления.ТипыТоваров.Получить(1); ПерУслуга = Перечисления.ТипыТоваров[1]; ПерУслуга = Перечисления.ТипыТоваров["Услуга"]; |
Иногда требуется получить имя значения перечисления строкой от ссылки на перечисление. Это может использоваться при записи значения перечисления в файл. Если попытаться преобразовать ссылку на перечисление в строку, то будет получен синоним, а не имя. Для правильного получения имени перечисления по значению можно воспользоваться следующим способом:
1 2 3 4 5 6 7 8 9 10 11 12 |
ЗначПер = Перечисления.ТипыТоваров.Товар; //при преобразовании в строку будет получен синином СинонимПер = Строка(ЗначПер); //синоним //получаем индекс значения ИндексПер = Перечисления.ТипыТоваров.Индекс(ЗначПер); //через индекс получаем имя перечисления ИмяПер = Метаданные.Перечисления.ТипыТоваров.ЗначенияПеречисления[ИндексПер].Имя; //имя можно получить так ИмяПер = XMLСтрока(ЗначПер); //имя |
Перебор перечислений
Можно перебрать все значения перечисления в цикле:
1 2 3 4 5 6 7 8 9 |
Для Каждого ТипТовара Из Перечисления.ТипыТоваров Цикл Сообщить(ТипТовара); КонецЦикла; //метод Количество вернет количество всех значений КоличествоВсехЗначений = Перечисления.ТипыТоваров.Количество(); Для ё = 0 По КоличествоВсехЗначений - 1 Цикл Сообщить(Перечисления.ТипыТоваров[ё]); КонецЦикла; |
Перечисление на клиенте
Для получения значения перечисления на клиенте нужно использовать функцию ПредопределенноеЗначение. Параметром нужно передать полное имя перечисления, включая значение, причем слово «Перечисление» должно быть в единственном числе, в отличии от обращения через менеджер перечислений:
1 2 |
ПерТовар = ПредопределенноеЗначение("Перечисление.ТипыТоваров.Товар"); ПерУслуга = ПредопределенноеЗначение("Перечисление.ТипыТоваров.Услуга"); |