Показать сообщение отдельно
Старый 30.08.2007, 14:16   #1  
maze is offline
maze
Участник
Аватар для maze
 
39 / 10 (1) +
Регистрация: 21.02.2003
Адрес: Одесса
почему на работает 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);
}
Не работает конструкция strfmt( "%1", thisCommon.(fieldId)[i]); с сообщением "Ошибка времени выполнения : Неправильный тип аргумента функции". Причем, сообщение не во время компиляции, а во время выполнения

И более общий вопрос...Каким же образом доступится к элементам поля, который является массивом ( пример dimension) в общем случае (не приводя к определенному типу).

Последний раз редактировалось maze; 30.08.2007 в 14:20. Причина: нашел опечатку в коде ни изменяющую суть вопроса