Показать сообщение отдельно
Старый 22.07.2014, 14:00   #20  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Sergikrus Посмотреть сообщение
Немного не так.
Метод выглядит executeQuery вот так:
public void executeQuery()
{
;
queryDimensionTypeAllRange.value(queryValue(sysDimension));

super();
}

инициализация sysDimension происходит в run и в getLookupType при условии что, element.args().dataset() будет равен Dimensions, LedgerControlDimension, TmpSysQuery
X++:
public void run()
{
    boolean             filterLookup;
    ;

    callerControl   = SysTableLookup::getCallerStringControl(element.args());
    callerFieldId   = callerControl.dataField();

    sysDimension    = Dimensions::arrayIdx2Code(fieldExt2Idx(callerFieldId));
    callerFieldId   = fieldExt2Id(callerFieldId);
    if (!callerFieldId)
    {
        sysDimension = Dimensions::arrayIdx2Code(callerControl.arrayIndex());
    }
.....

В нашем случае мы запускаем расширенный фильтр на любой форме, где есть фин. аналитика по клавише CTRL + F3:

Вложение 8930

И ни одно из условий не выполняется. видимо значение по умолчания для enum, если он не инициализирован 255, я так это понимаю.

Но как то чудно это, функциональность эта на gls слое, неужели у всех так работает?

Значение присваивается только в run().
info(enum2str(sysDimension)); показывает "Пусто"
Значение по-умочанию - это 0 (и не важно, есть такое значение в енуме или нет)

У вас могут быть две проблемы.
Либо неправильно определяется индекс массива и передается в Dimensions::arrayIdx2Code() - смотрите, какой индекс приходит в этот метод и что он возвращает (т.е., какое значение присваивается sysDimension на форме)
Либо что-то с меткой для значения Department - запустите info(queryValue(SysDimension:: Department)); и посмотрите, что получается
__________________
Axapta v.3.0 sp5 kr2