Цитата:
Сообщение от
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)); и посмотрите, что получается