Показать сообщение отдельно
Старый 16.08.2010, 12:46   #2  
Skvorcal is offline
Skvorcal
Участник
 
36 / 10 (1) +
Регистрация: 16.08.2010
Цитата:
Сообщение от Gustav Посмотреть сообщение
См. класс RLedgerSheetEngine, метод query.

И еще Связи и Query
Хм, связи "==" реализуются посредством addLink, а все прочие связи - посредством "addRange".

Если я все правильно понял, то получается как-то вот так?

X++:
    query   = new Query();
    qbds    = query.addDataSource(tableNum(LedgerTrans));
    qbds.orderMode(OrderMode::GroupBy);

    qbds.addSelectionField(fieldNum(LedgerTrans, AmountMST), SelectionField::Sum);

    qbr = qbds.addRange(fieldNum(LedgerTrans, AccountNum));
    qbr.value("68.000");

    qbr = qbds.addRange(fieldNum(LedgerTrans, TransDate));
    qbr.value(SysQuery::range(01\01\2010, 31\03\2010));

    qbdsOffset = qbds.addDataSource(tableNum(LedgerTrans));
    qbdsOffset.addSelectionField(fieldNum(LedgerTrans, tableId));
    qbdsOffset.joinMode(JoinMode::INNERJOIN);
    qbdsOffset.relations(false);
    qbdsOffset.addLink(fieldnum(LedgerTrans, BondBatch_RU), fieldnum(LedgerTrans, BondBatch_RU));
    qbdsOffset.addLink(fieldnum(LedgerTrans, BondBatchTrans_RU), fieldnum(LedgerTrans, BondBatchTrans_RU));

    qbr = qbdsOffset.addRange(fieldNum(LedgerTrans, Crediting));
    qbr.value('(' + fieldStr(LedgerTrans, Crediting) + '!=' + qbds.name() + '.' + fieldStr(LedgerTrans, Crediting) +')');

    qbr = qbdsOffset.addRange(fieldNum(LedgerTrans, AccountNum));
    qbr.value("19.320");

    queryRun = new QueryRun(query);