Получение имени значения перечисления из ссылки

Функция ЗначениеПеречисленияИмя(ЗначениеПеречисления)

В процессе разработки в 1С, часто бывают ситуации, когда нужно по ссылке на значение перечисления определить его Имя (как оно задано в конфигураторе).
Проблема в том, что штатные средства 1С позволяют легко получить пользовательское представление (Синоним) значения перечисления, но для получения Имени значения перечисления приходится написать достаточно вычурный хитро-закрученный код.
Для этих целей я один раз написал соответствующую функцию, и использую ее в своих проектах. Вот. Сейчас делюсь ею с другими.

Самое забавное, что данную функцию я написал еще во времена, то ли 8.0, то ли 8.1. На дворе уже 8.3, и даже ознакомительные версии 8.4 уже появляются, а эта простая и удобная функция до сих пор не реализована на уровне платформы.

Данную функцию лучше всего поместить в какой-нибудь кэшируемый общий модуль с расположением:

// НазаренкоСергій 2011-11-01
//
// Получить имя значения перечисления, как оно задано в конфигураторе.
//
//Параметры:
// ЗначениеПеречисления – ПеречислениеСсылка.* – Ссылка на значение перечисления, имя которого необходимо получить.
//
//Возвращаемое значение:
// Строка – Имя переданного значения перечисления.
//
Функция ЗначениеПеречисленияИмя(ЗначениеПеречисления) Экспорт
	Если НЕ ЗначениеПеречисления.Пустая() Тогда
		ПеречислениеМетаданные = ЗначениеПеречисления.Метаданные();
		Результат = ПеречислениеМетаданные.ЗначенияПеречисления[Перечисления[ПеречислениеМетаданные.Имя].Индекс(ЗначениеПеречисления)].Имя;
	Иначе
		Результат = "";
	КонецЕсли;
	Возврат Результат;
КонецФункции