25.08.2004, 15:48 | #1 |
Участник
|
Не работает relation
Создал таблицу
table1 { DimensionCode (наследует DimensionCode) Num (наследует SysDim) ... } relation table1.DimensionCode = Dimensions.DimensionCode table1.num = Dimensions.Num Создаю запись выбираю определенный DimensionCode Lookup на поле num не фильтрует записи из таблица аналитик по выбранному DimensionCode???? |
|
25.08.2004, 16:06 | #2 |
Участник
|
Походил отладчиком:
В форме DimensionLookUp.run() есть код callerFieldId = callerControl.dataField(); sysDimension = callerFieldId >> 16 - 1; callerFieldId = callerFieldId & 0x7FFF; if (!callerFieldId) { sysDimension = callerControl.arrayIndex() - 1; } похоже дело в нем буду разбираться |
|
25.08.2004, 18:17 | #3 |
Участник
|
Создал все то же самое. Lookup отрабатывает. Попробуй индексы перестроить. (Из серии: "монитор тряпочкой протереть" )
|
|
10.01.2008, 12:32 | #4 |
Участник
|
значение callerFieldId на форме DimensionsLookup
Доброго времени суток.
В таблицу LedgerJournalTrans добавлено поле DimensionOffset (ID 40002) необходимо сдлеать специфический выбор аналитик код в форме DimensionLookUp.run() X++: callerFieldId = callerControl.dataField(); sysDimension = callerFieldId >> 16 - 1; callerFieldId = callerFieldId & 0x7FFF; в чем может быть причина этого глюка ??? на сколько критично если я руками поменяю номер ID для поля в таблице ??? |
|
10.01.2008, 12:58 | #5 |
Участник
|
Ниче не понял.
Что вы понимаете под "необходимо сделать специфический выбор аналитик"? В Classes\Global есть методы fieldExt2Idx, fieldExt2Id и замечу, что они отличаются от вашей "прямой" реализации. Вот кусочек кода из 5ки: X++: calledFieldId = calledControl.dataField();
sysDimension = Dimensions::arrayIdx2Code(fieldExt2Idx(callerFieldId));
callerFieldId = fieldExt2Id(calledFieldId);
if (!callerFieldId)
{
sysDimension = Dimensions::arrayIdx2Code(callerControl.arrayIndex());
} |
|
11.01.2008, 08:45 | #6 |
Участник
|
выражение callerControl.dataField() & 0x7FFF возвращет 7234, а должно возвращать 40002, если изменить номер ID поля в таблице, например на 145 то код работает нормально
стоит AX 3 SP 4 |
|
11.01.2008, 09:23 | #7 |
Участник
|
А почему 0x7FFF? FieldId хранится в младших двух байтах идентификатора, а это 0xFFFF.
Да и посмотрите на пример из совета Ивана - там как раз реализовано то, что вам требуется
__________________
Axapta v.3.0 sp5 kr2 |
|
11.01.2008, 09:33 | #8 |
Участник
|
fieldid2ext(40002,2) & 0x7FFF; выдаст 7234
fieldid2ext(40002,2) & 0xFFFF; выдаст 40002 7 - это ошибка в стандартном коде, для полей добаленных на sys слое она не проявляется, т.к. ИД - маленький Последний раз редактировалось dn; 11.01.2008 в 09:36. |
|
|
За это сообщение автора поблагодарили: veps (1). |