|
![]() |
#1 |
Участник
|
255 - это __ILLEGAL_VALUE__
Это уже следствие Надо разбираться, почему queryValue(sysDimension:: Department) возвращает пусто (а пусто ли?). Смотрите под отладчиком, что в этом методе происходит. Проверьте метку или значение, которое прописано в Label SysDimension:: Department. Можно, на всякий случай, пересохранить это значение
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от AndyD
![]() 255 - это __ILLEGAL_VALUE__
Это уже следствие Надо разбираться, почему queryValue(sysDimension:: Department) возвращает пусто (а пусто ли?). Смотрите под отладчиком, что в этом методе происходит. Проверьте метку или значение, которое прописано в Label SysDimension:: Department. Можно, на всякий случай, пересохранить это значение Метод выглядит 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: И ни одно из условий не выполняется. видимо значение по умолчания для enum, если он не инициализирован 255, я так это понимаю. Но как то чудно это, функциональность эта на gls слое, неужели у всех так работает? Значение присваивается только в run(). info(enum2str(sysDimension)); показывает "Пусто" Последний раз редактировалось Sergikrus; 22.07.2014 в 12:10. Причина: проверил |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от 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)); показывает "Пусто" У вас могут быть две проблемы. Либо неправильно определяется индекс массива и передается в Dimensions::arrayIdx2Code() - смотрите, какой индекс приходит в этот метод и что он возвращает (т.е., какое значение присваивается sysDimension на форме) Либо что-то с меткой для значения Department - запустите info(queryValue(SysDimension:: Department)); и посмотрите, что получается
__________________
Axapta v.3.0 sp5 kr2 |
|
Теги |
dimension, аналитика, фильтр |
|
![]() |
||||
Тема | Ответов | |||
AX2012 - Финансовые аналитики в строках общего журнала ГК | 4 | |||
Финансовые аналитики | 2 | |||
Платежи и финансовые аналитики | 8 | |||
Финансовые аналитики | 18 | |||
финансовые аналитики в диалог | 6 |
|