|
Подскажите пожалуйста, как получить имя значения перечисления? |
☑ |
0
batmansoft
10.03.14
✎
16:39
|
Тоесть, существует какое то значение, например, ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия.
Точнее, переменная, имеющая данное значение. Понятно как получить его индекс. А как имя в виде строки? И как по этому имени потом получить значение из менеджера перечисления?
Дело в том, что я выгружаю данные из БП 2.0 в БП 3.0.
Делаю так:
удПеречисление=АБаза.Перечисления[АОбъект.Метаданные().Имя];
лПеречисление=Перечисления[АОбъект.Метаданные().Имя];
лИндекс=лПеречисление.Индекс(АОбъект);
удЗначение=удПеречисление.Получить(лИндекс);
но это не прокатывает, потому что в БП 2.0 и 3.0 разный порядок значений. Надо по сопоставлять по имени. Подскажите пожалуйста, как?
|
|
1
Добрый хачик
10.03.14
✎
16:48
|
Перечисления.важность.Высокая.Метаданные().Имя
|
|
2
zak555
10.03.14
✎
16:50
|
обмен через правила ?
|
|
3
batmansoft
10.03.14
✎
16:55
|
(2) нет
|
|
4
Torquader
10.03.14
✎
16:56
|
Порядок, насколько я помню, не меняется, то есть можно по метаданным получить имя через индекс значения.
лчИндекс=Перечисление.ИмяПеречисления.Индекс(лпрчЗначениеПеречисления);
лстрИмяЗначения=Метаданные.Перечисления["ИмяПеречисления"].Значения[лчИндекс].Имя;
|
|
5
batmansoft
10.03.14
✎
17:01
|
АОбъект.Метаданные().Имя в отладчике равен "ВидыОперацийПоступлениеТоваровУслуг"
а сам АОбъект равен "Покупка, комиссия" тип ПеречислениеСсылка.ВидыОперацийПоступлениеТоваровУслуг
И как быть?
|
|
6
batmansoft
10.03.14
✎
17:02
|
(4) Это разные конфигурации, там порядок другой. Но вот имена практически везде совпадают.
|
|
7
Mitriy
10.03.14
✎
17:05
|
XMLСтрока(ЗначениеПеречисления)
|
|
8
zak555
10.03.14
✎
17:07
|
(3) а как ?
|
|
9
Torquader
10.03.14
✎
17:07
|
(6) Порядок метаданных в конфигурации совпадает с порядком значений - и можно получить значение через метаданные по индексу (собственно, что я и написал).
|
|
10
zak555
10.03.14
✎
17:07
|
в 2.0 ВидыОперацийПоступлениеТоваровУслуг нет у ртиу
заполняй на стороне бп3
|
|
11
batmansoft
10.03.14
✎
17:17
|
(9) Дык к БП 2.0 один порядок, в 3.0 другой. Если я буду искать по индексу, значения путаются
|
|
12
batmansoft
10.03.14
✎
17:17
|
(8) Через ОЛЕ
|
|
13
batmansoft
10.03.14
✎
17:18
|
(7) Спасибо, XMLСтрока(АОбъект) действительно дает "ПокупкаКомиссия"
|
|
14
batmansoft
10.03.14
✎
17:31
|
(13) PS. Вот такой код работает:
удПеречисление=АБаза.Перечисления[АОбъект.Метаданные().Имя];
лПеречисление=Перечисления[АОбъект.Метаданные().Имя];
//лИндекс=лПеречисление.Индекс(АОбъект);
//удЗначение=удПеречисление.Получить(лИндекс);
удЗначение=удПеречисление[XMLСтрока(АОбъект)];
возврат удЗначение;
|
|
15
zak555
10.03.14
✎
21:26
|
(14) можно было через соответствие
|
|
16
batmansoft
10.03.14
✎
23:22
|
(15) Это как?
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший