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