В моей практике периодически возникает потребность в поиске значения Перечисления по его Имени. Например, это нужно, когда требуется перенос данных между базами, который производится не типовым обменом, а внешней обработкой, создаваемой под тип файла данных заказчика. Как часто встречающийся вариант - Excel файл произвольной конфигурации.
Получить Имя элемента Перечисления по Ссылке можно следующим образом:
&НаСервере
Функция ПолучитьИмяПеречисления(Знач ПеречислениеСсылка)
ИмяМетаданных = ПеречислениеСсылка.Метаданные().Имя;
НазваниеМенеджера = "ПеречислениеМенеджер." + ИмяМетаданных;
Менеджер = Новый (НазваниеМенеджера);
Имя = ПеречислениеСсылка.Метаданные().ЗначенияПеречисления[Менеджер.Индекс(ПеречислениеСсылка)].Имя;
Возврат Имя;
КонецФункции
Имя метаданных самого Перечисления мы тоже получаем в первой строке кода функции, если оно нужно, его можно использовать.
Получить Ссылку на элемент Перечисления по Имени можно так:
&НаСервере
Функция ПолучитьПеречислениеПоИмени(Знач Наименование, Знач Тип)
Если Тип <> "" Тогда
ПеречислениеСсылка = Неопределено;
СтрокаВыполнить = "ПеречислениеСсылка = Перечисления." + Тип + "." + Наименование;
Попытка
Выполнить СтрокаВыполнить;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Иначе
ПеречислениеСсылка = Неопределено;
КонецЕсли;
Возврат ПеречислениеСсылка;
КонецФункции
Собственно, таким простым способом можно реализовать подобную манипуляцию. Публикация не претендует на решение высокой сложности, скорее - это шпаргалка для простой, но не так часто встречающейся задачи, чтобы сэкономить время.