|
![]() |
#1 |
Участник
|
Возможная избыточность цикла
Цитата:
Сообщение от lev
![]() если речь идёт просто о том какие фин аналитики есть в системе, то можно вот так:
X++: SysDictEnum dictEnum = new SysDictEnum(enumnum(SysDimension)); int i, cnt, iSearch; ; cnt = dictEnum.lastValue(); for(i=dictEnum.firstValue(); iSearch <= cnt; i = dictEnum.nextValue(i)) { iSearch++; info(dictEnum.value2Label(i)); } Мастером финансовых аналитик (или просто в AOT) добавляем новый элемент со значением 101 (т.е. не последовательно 0,1,2,3,4,...) в enum SysDimension - в итоге цикл начинает отрабатывать 102 итерации т.к. сравнение идет iSearch <= 101 начиная с 0. Если необходим список активных значений, то дополнительно можно проверить на предмет активности конфигурационного ключа на значении enum'а, что-то в таком духе: X++: static void jbDimensionListByEnum(Args _args) { DictEnum dictEnum = new DictEnum( enumNum( SysDimension ) ) ; Counter enumIdx ; #define.OnlyActive ; for( enumIdx = 0; enumIdx < dictEnum.values(); enumIdx++ ) { #if.OnlyActive if( !isConfigurationKeyEnabled( dictEnum.index2ConfigurationKey( enumIdx ) ) ) continue ; #endif info( dictEnum.index2Label(enumIdx)); } } |
|
|
За это сообщение автора поблагодарили: jiller (1). |
![]() |
#2 |
Участник
|
И еще такой вопрос: как получить информацию о EDT, используемых в массиве типа Dimension?
|
|
![]() |
#3 |
Ищущий знания...
|
Согласен.
Просто в разрезе описанной задачи посчитал, что такого кода достаточно, т.к. сомневаюсь что в финансовых аналитиках, кто то добавит элемент со значением 101.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#4 |
Участник
|
Всем огромное спасибо за помощь!
|
|