30.08.2007, 14:16 | #1 |
Участник
|
почему на работает common.(fieldId)[idx]
Привет всезнающий ALL
AX3SP3KR3 MSSQL2005 X++: static void ggvdimensions(Args _args) { LedgerJournalTrans ledgerJournalTrans; Common thisCommon; DictTable DictTable; FieldId fieldId; int i, j; str ret; str value; ; //берем любую запись ledgerjournaltrans select ledgerJournalTrans where ledgerJournalTrans.RecId == 17816743; thisCommon = ledgerJournalTrans; DictTable = new DictTable( thisCommon.TableId); for( i=1; i<=dictTable.fieldCnt(); i++) { fieldId = dictTable.fieldCnt2Id(i); if( dimof( thisCommon.(fieldId)) > 1) { for( j = 1; j<= dimof( thisCommon.(fieldId)); j++) { value += value ? "-" : ""; //НЕ РАБОТАЕТ value += strfmt( "%1", thisCommon.(fieldId)[j]); } } else value = strfmt( "%1", thisCommon.(fieldId)); ret += strfmt( "%1 : %2;", fieldId2Name( thisCommon.TableId, fieldId), value); } info( ret); } И более общий вопрос...Каким же образом доступится к элементам поля, который является массивом ( пример dimension) в общем случае (не приводя к определенному типу). Последний раз редактировалось maze; 30.08.2007 в 14:20. Причина: нашел опечатку в коде ни изменяющую суть вопроса |
|
30.08.2007, 14:26 | #2 |
Мрачный тип
|
Используйте
X++: (fieldid2ext(fieldId),j) X++: (fieldId)[j]) Все массивы в таблицах - как правило EDT. Обычным fieldNum'ом их не возьмешь . Последний раз редактировалось TasmanianDevil; 30.08.2007 в 14:28. |
|
30.08.2007, 14:37 | #3 |
Участник
|
Спасибо большое!
Действительно помогло. Интересно что в стандарте есть получение значения массива как common.(fieldId)[idx] Это метод keyValue класса LedgerReference X++: while (idx2 < dimof(fieldId2Name(common.tableId,dictIndex.field(idx)))) { keyValue = keyValue + fieldId2Name(common.tableId,dictIndex.field(idx))+':' + strFmt('%1',common.(dictIndex.field(idx))[idx2]); idx2 += 1; } |
|
31.08.2007, 06:48 | #4 |
Мрачный тип
|
Скобки, скобки, скобки и еще раз скобки
посмотрите внимательно пример из этого класса и свой код Последний раз редактировалось TasmanianDevil; 31.08.2007 в 06:59. |
|