Работа с перечислениями
Для работы с перечислениями предназначена ветвь Перечисления дерева конфигурации.
Перечисление является объектом метаданных ссылочного типа и поэтому метод ПустаяСсылка() возвращает пустое значение ссылки на перечисление данного вида.
Пример:
ВидКонтрагента = Перечисления.ВидыКонтрагентов.ПустаяСсылка();
Как получить имя значения перечисления заданное в метаданных?
Чтобы определить имя значения перечисления заданное в метаданных, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя:
ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация; ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
Как получить индекс значения перечисления заданное в метаданных?
Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления.
Метод Индекс возвращает порядковый номер (индекс) перечисления в списке перечислений. Если не найдено, то возвращается -1.
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления:
ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;
Свойство ЗначенияПеречисления содержит коллекцию объектов метаданных, описывающих значения данного перечисления.
Если известно имя самого перечисления и имя его значения, то получить ссылку которая будет являться значением, например субконто, можно следующим образом:
ПеречислениеСсылка = Перечисления[ИмяПречисления][ИмяЗначения];
Данную операцию целесообразно выполнить внутри оператора попытки :
Функция ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения ) Экспорт
Попытка
Возврат Перечисления[пИмяПеречисления][пИмяЗначения];
исключение
Сообщить("Ошибка получения ссылки на значение перечисления. " + пИмяПеречисления + " :: " + пИмяЗначения);
Возврат неопределено;
КонецПопытки;
КонецФункции
КАК ИСПОЛЬЗОВАТЬ ПЕРЕЧИСЛЕНИЕ В ЗАПРОСЕ ?
Запрос.Текст = "
|ВЫБРАТЬ
// ...
|ГДЕ
| ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)
// ...
|";
Кто писал этот текст? вообще ничего не понятно
Был простой вопрос у меня, как по ПеречислениеСсылка получить значение. И вроде бы в начале статьи есть фраза, а дале………. сущий кошмар. Ни слово про ссылку