![]() |
|
Как получить все значения перечисления, имея только тип значения? | ☑ | ||
---|---|---|---|---|
0
xaozai
20.03.14
✎
09:41
|
Имеется ИмяДокумента из метаданных конфигурации.
У этого документа есть реквизит ВидОперации, типа перечисление. Нужно заполнить список всеми значениями этого перечисления. Сделал вот так: ИмяДокумента = "ПлатежноеПоручениеИсходящее"; Список = Новый СписокЗначений; Для Каждого Зн Из Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().ЗначенияПеречисления Цикл Список.Добавить(Перечисления[Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().Имя][Зн.Имя]); КонецЦикла; Вопрос: можно ли сделать это как-то иначе, чтобы было быстрее и красивее? |
|||
1
Cube
20.03.14
✎
09:44
|
(0) Явно быстрее:
ИмяДокумента = "ПлатежноеПоручениеИсходящее"; Список = Новый СписокЗначений; = Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().Имя; Для Каждого Зн Из Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().ЗначенияПеречисления Цикл Список.Добавить(Перечисления[ВыбПеречисление][Зн.Имя]); КонецЦикла; |
|||
2
butterbean
20.03.14
✎
09:44
|
если тип перечисления нужно обязательно доставать из реквизита, то по другому никак
для красоты можешь метаданные перечисления в переменную пихнуть |
|||
3
Cube
20.03.14
✎
09:46
|
+(1) Ой, очепятка. Исправляюсь:
ИмяДокумента = "ПлатежноеПоручениеИсходящее"; Список = Новый СписокЗначений; ВыбПеречисление = Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().Имя; Для Каждого Зн Из Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().ЗначенияПеречисления Цикл Список.Добавить(Перечисления[ВыбПеречисление][Зн.Имя]); КонецЦикла; |
|||
4
Cube
20.03.14
✎
09:47
|
Ещё вместо Перечисления[ВыбПеречисление][Зн.Имя] лучше использовать ПредопределенноеЗначение("Перечисление." + ВыбПеречисление + "." + Зн.Имя)
|
|||
5
barrgand
20.03.14
✎
09:47
|
(0) чем плох запрос?
|
|||
6
butterbean
20.03.14
✎
09:48
|
хотя можно и так:
Для Каждого Зн Из Перечисления[Метаданные.Документы[ИмяДокумента].Реквизиты["ВидОперации"].Тип.ПривестиЗначение().Метаданные().Имя] Цикл Список.Добавить(Зн); КонецЦикла; |
|||
7
Cube
20.03.14
✎
09:48
|
Ах, да, забыл совсем: можно же ещё заюзать XMLТипЗнч() или как там его...
|
|||
8
xaozai
20.03.14
✎
10:26
|
Всем спасибо!
Пока остановился на варианте (6). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |