|
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???? |
|
10.01.2008, 12:58 | #2 |
Участник
|
Ниче не понял.
Что вы понимаете под "необходимо сделать специфический выбор аналитик"? В 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 | #3 |
Участник
|
выражение callerControl.dataField() & 0x7FFF возвращет 7234, а должно возвращать 40002, если изменить номер ID поля в таблице, например на 145 то код работает нормально
стоит AX 3 SP 4 |
|
11.01.2008, 09:23 | #4 |
Участник
|
А почему 0x7FFF? FieldId хранится в младших двух байтах идентификатора, а это 0xFFFF.
Да и посмотрите на пример из совета Ивана - там как раз реализовано то, что вам требуется
__________________
Axapta v.3.0 sp5 kr2 |
|
11.01.2008, 09:33 | #5 |
Участник
|
fieldid2ext(40002,2) & 0x7FFF; выдаст 7234
fieldid2ext(40002,2) & 0xFFFF; выдаст 40002 7 - это ошибка в стандартном коде, для полей добаленных на sys слое она не проявляется, т.к. ИД - маленький Последний раз редактировалось dn; 11.01.2008 в 09:36. |
|
|
За это сообщение автора поблагодарили: veps (1). |