|
Как получить все значения перечисления, имея только тип значения? |
☑ |
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).
|
|