Попытка присоединиться сначала только с использованием объекта запроса AX

Мой запрос заключается в том, что клиент хочет указать диапазон дат (обычно месяц) и получить все журналы главной книги, в которых есть хотя бы одна строка, опубликованная в этом диапазоне дат. Например, они будут публиковать журналы в марте за январский период и хотят знать, в каких журналах есть эти данные.

Основная идея состоит в том, чтобы LedgerJournalTable превратилась в firstonly LedgerJournalTrans. Я не лучший с объектом запроса. Почему мой запрос не работает? Он возвращает несколько журналов вместо одного. Я думал, что смогу сгруппироваться и все будет в порядке, но я думаю, что это сработает.

static void Job38(Args _args)
{
    Query                   q;
    QueryRun                queryRun;
    QueryBuildDatasource    qbd;
    QueryBuildDatasource    qbd2;
    QueryBuildRange         qbr;
    LedgerJournalTable      ledgerJournalTable;
    ;

    info(strfmt("%1", date2strxpp(str2date('10/01/2011', 213))));

    q = new Query();
    qbd = q.addDataSource(tablenum(LedgerJournalTable));
    qbd2    = qbd.addDataSource(tableNum(LedgerJournalTrans));
    qbd2.relations(true);
    qbd2.firstOnly(true);
    qbd2.joinMode(JoinMode::InnerJoin);
    qbr = qbd2.addRange(fieldNum(LedgerJournalTrans, TransDate));
    qbr.value(strfmt('(TransDate > %1) && (TransDate < %2)', Date2StrXpp(str2date('10/01/2011', 213)), Date2StrXpp(str2date('10/31/2011', 213))));

    queryRun = new QueryRun(q);

    while (queryRun.next())
    {
        ledgerJournalTable = queryRun.get(tableNum(LedgerJournalTable));

        info(strfmt("%1", ledgerJournalTable.JournalNum));
    }
}

person Alex Kwitny    schedule 22.03.2012    source источник


Ответы (1)


Вы пробовали JoinMode::ExistsJoin?

person Jan B. Kjeldsen    schedule 22.03.2012
comment
Это заставляет его работать правильно. Я надеялся, что смогу выполнить qbd2.firstonly(true), и это сработает. - person Alex Kwitny; 23.03.2012