Мой запрос заключается в том, что клиент хочет указать диапазон дат (обычно месяц) и получить все журналы главной книги, в которых есть хотя бы одна строка, опубликованная в этом диапазоне дат. Например, они будут публиковать журналы в марте за январский период и хотят знать, в каких журналах есть эти данные.
Основная идея состоит в том, чтобы 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));
}
}