11.10.2007, 14:22 | #1 |
Участник
|
Dict and Dimension
Как сделать так , чтобы можно было поставить условие на значение одной из аналитик
X++: static void Arahnid(Args _args) { Dictionary dict = new Dictionary(); DictTable dictTable; DictField dictField; int i, k; str 300 names; extendedTypeId _type; common common; Dimension dim; ; dim[2] = '0200'; for (i=1; i<=dict.tableCnt(); i++) { dictTable = new DictTable(dict.tableCnt2Id(i)); names = dictTable.name(); for (k=1; k<=dictTable.fieldCnt(); k++) { dictField = new DictField(dictTable.id(),dictTable.fieldCnt2Id(k)); _type = dictField.typeid(); if (_type == 132) { common = dictTable.makeRecord(); info (names+' Это таблица!'); // info(extendedTypeId2name(_type)); ttsbegin; while select forupdate common //вот так не работает where (common.(dictField.id()) == dim) { info(common.(dictField.id()) ); } ttscommit; } } } } X++: common = dictTable.makeRecord(); // info (names+' Это таблица!'); // info(extendedTypeId2name(_type)); ttsbegin; while select forupdate common // where (_dim[2] == dim[2]) { _dim = common.(dictField.id()); if (_dim[2] == dim [2]) info(_dim[2] ); } ttscommit; } Последний раз редактировалось Arahnid; 11.10.2007 в 14:51. |
|
11.10.2007, 14:59 | #2 |
MCTS
|
where ( common.(dictField.id()+idx) == dim)
где idx - индекс аналитики
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
11.10.2007, 15:02 | #3 |
MCTS
|
Кстати, что вы там ваяете
Не проще ли X++: SalesTable salesTable; ; while select salesTable where salesTable.Dimension[2] == '00001' { info(strFmt("%1", salesTable.Dimension[2])); }
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
11.10.2007, 15:05 | #4 |
Участник
|
не вышло
X++: ttsbegin; while select forupdate common where (common.(dictField.id()+2) == dim[2]) { /* _dim = common.(dictField.id()); if (_dim[2] == dim [2])*/ info(_dim[2] ); } ttscommit; |
|
11.10.2007, 15:07 | #5 |
Программатор
|
Фигня какаято то...Используйте FieldId2Ext для работы с полями типа массив
/* Returns an extended FieldId, based on the fieldId and the Array index (an extended FieldId is a fieldId including the array index) */ static fieldId fieldId2Ext(fieldId fieldId, ArrayIdx arrayIndex ) Последний раз редактировалось Sada; 11.10.2007 в 15:10. |
|
11.10.2007, 15:10 | #6 |
Участник
|
Используйте функцию fieldId2Ext:
X++: while select forupdate common where (common.(fieldId2Ext(dictField.id()), 2) == dim[2]) { info(_dim[2] ); } ttscommit; X++: if (_type == 132) X++: if (_type == extendedTypeNum(Dimension)) Последний раз редактировалось Peter Savintsev; 11.10.2007 в 15:18. |
|
11.10.2007, 15:15 | #7 |
Участник
|
спасибо |
|
11.10.2007, 15:49 | #8 |
Программатор
|
Дело даже и не в том, что индекс явно числом указан. А если его индекс изменится когда нить потом, то что делать? + соглашусь с Петром.
|
|
11.10.2007, 16:01 | #9 |
Участник
|
Цитата:
X++: int idx = SysDimension::Center + 1; while select forupdate common where (common.(fieldId2Ext(dictField.id(), idx)) == dim[idx]) { info(_dim[idx] ); } |
|
16.10.2007, 10:09 | #10 |
Участник
|
Можно посмотреть вот это
http://blogs.msdn.com/palle_agermark...imensions.aspx |
|
16.10.2007, 12:30 | #11 |
Участник
|
X++: #localmacro.dimNo (SysDimension::%1 + 1) #endmacro while select forupdate common where (common.(fieldId2Ext(dictField.id(), #dimNo(Center))) == dim[#dimNo(Center)]) |
|
17.10.2007, 11:17 | #12 |
Участник
|
В Ax40 на таблице Dimensions реализован статический метод code2arrayIdx().
В Ax30 такого стандартного метода нет. Вместо макроса лучше наверное все-таки использовать то, что уже есть. Ну, а если таки токого метода нет, то его можно написать. PHP код:
|
|
|
За это сообщение автора поблагодарили: lev (2). |
17.10.2007, 11:22 | #13 |
Участник
|
X++: Dimensions::code2ArrayIdx(SysDimension::Division) X++: #dimNo(Division) |
|
17.10.2007, 11:31 | #14 |
Участник
|
Нет, ну я совсем не против.
Это кому как удобнее |
|
17.10.2007, 12:24 | #15 |
Участник
|
Цитата:
#dimNo(Division)
|
|
17.10.2007, 12:28 | #16 |
Участник
|
не знаю, наверное, да - вроде перекрестные ссылки юзают ScannerClass - а он автоматически разворачивает макросы
|
|
17.10.2007, 12:40 | #17 |
Участник
|
Потом попробую - напишу.
Но мне все равно конструкция Код: #dimNo(Division) В конструкции Код: Dimensions::code2ArrayIdx(SysDimension::Division) Но у каждого, конечно, свои предпочтения |
|