Имя: Пароль:
1C
 
Получить Имя перечисления по его значению?
0 Point
 
14.10.08
10:09
Собственно все в теме, как можно получить Имя перечисления по его значению?
1 butterbean
 
14.10.08
10:10
(0)
.Метаданные().Имя
2 Point
 
14.10.08
10:18
(1) может я не много не правильно написал...
Есть значение конкретного перечисления, например
Перечисление.ИмяПеречисления:
1.ИмяЗн1 - Значение1
2.ИмяЗн2 - Значение2
3.ИмяЗн3 - Значение3
и т.д.
Так вот нужно получить, например ИмяЗн1 по его Значение1.
3 butterbean
 
14.10.08
10:21
(2) имя по синониму что-ли???
4 Krom
 
14.10.08
10:23
(2), это же перечисление! ИмяЗн1 и Значение1 одно и то же!
5 Point
 
14.10.08
10:23
(3) Да.
6 ДенисЧ
 
14.10.08
10:24
зн = Перечисления.Происхождение.Закупка;
   Сообщить(зн.Метаданные().Имя);
7 Ursus maritimus
 
14.10.08
10:26
(6) Пробовал?
8 Point
 
14.10.08
10:26
(6) вот как раз "Закупка" и нужно получить.
9 ДенисЧ
 
14.10.08
10:26
Сообщить(Строка(зн))
10 asady
 
14.10.08
10:27
11 butterbean
 
14.10.08
10:27
(5) видимо только перебором
Метаданные.Перечисления.ИмяПеречисления.ЗначенияПеречисления)
12 Долорес И
 
14.10.08
10:29
вот так, например:
ИмяЗначенияПеречисления = XMLСтрока(ПеречислениеСсылка);
13 Point
 
14.10.08
10:29
(9) Данные которые есть:
1. Перечисление.Происхождение
2. СинонимЗакупка
Данные которые нужно получить;
1.Закупка
14 ДенисЧ
 
14.10.08
10:31
тады перебор.
15 Долорес И
 
14.10.08
10:32
или во:
Период_ = ссылканазначение.Метаданные().ЗначенияПеречисления.Получить( Перечисления.имяперечисления.Индекс(ссылканазначение)).Имя;
16 Ursus maritimus
 
14.10.08
10:33
Метаданные.Перечисления.ABCКлассификация.ЗначенияПеречисления[Перечисления.ABCКлассификация.Индекс(Перечисления.ABCКлассификация.AКласс)].Имя

ABCКлассификация - Заменить на имя перечисления
AКласс - заменить на имя значения
17 ДенисЧ
 
14.10.08
10:34
(16) У него нет, как я понял имени значения. У него есть строка со значением

Надо что-то вроде зн - Перечисление.ПолучитАтрибут("Происхождение").ЗначениеПоИдентификатору("Закупка")
18 Point
 
14.10.08
10:37
(10) спасибо.
Есть ссылкаНаПеречисление - т.е. Синоним- Тип Ссылка
Индекс = Перечисления[ИмяПеречисления].Индекс(СсылкаНаПеречисление);
Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;
19 Hitcher
 
14.10.08
10:43
Все придумано до нас. В типовых конфигурациях, во всяком случае.


// Предназначена для получения имени элемента перечисления по значению.
//
// Параметры:
//  Элемент перечисления.
//
// Возвращаемое значение:
//  Строка - имя элемента перечисления в метаданных.
//
Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления) Экспорт
   
   ИмяЭлемента = Строка(ЗначениеПеречисления);
   Для каждого ЭлементПеречисления Из Метаданные.Перечисления[ЗначениеПеречисления.Метаданные().Имя].ЗначенияПеречисления Цикл
       Если ЭлементПеречисления.Синоним = Строка(ЗначениеПеречисления) Тогда
           ИмяЭлемента = ЭлементПеречисления.Имя;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   Возврат ИмяЭлемента;
   
КонецФункции // ПолучитьПериодичностьДляЗапросаПоЗначениюПеречисления()
20 Point
 
14.10.08
10:51
(15) рулит, сразу не заметил )
21 Ursus maritimus
 
14.10.08
10:59
(19) Мегалажа. Если два значения перечисления с одинаковыми синонимами будут, все пропало...
22 Долорес И
 
14.10.08
11:03
(20)угу. (12) по идее тоже должно работать
23 Point
 
14.10.08
16:56
(21) а кто это интересно будет вносить в перечисления два одинаковых значения, как мне кажется Перечисление, как объект конфигурации -это набор значений для одного вида....(как-то типа так)