Ну как бы решил....
надо получается на каждом датасорсе что на одном уровне ставить
fetchMode(QueryFetchMode::One2One);
только потом сделать Map и проверять уже выведен ли vendInvoiceJour или нет - а то так получается что печатается столько раз сколько VendTrans (vendInvoiceTrans)
X++:
//TE-rko
static void testDatasource(Args _args)
{
Query query = new query();
QueryBuildDataSource qbds, qbds1, qbds2;
querybuildrange qbr;
QueryRun qr;
VendInvoiceJour VendInvoiceJour;
;
qbds = query.addDataSource(tablenum(VendInvoiceJour));
qbds1 = qbds.addDataSource(tablenum(VendTrans));
qbds1.relations(true);
qbds1.fetchMode(QueryFetchMode::One2One);
qbr = qbds1.addRange(fieldnum(VendTrans,Recid));
// qbr.value(strfmt("%1",1));//-2082064522));
qbds2 = qbds.addDataSource(tablenum(VendInvoiceTrans));
qbds2.relations(true);
qbds2.fetchMode(QueryFetchMode::One2One);
qbr = qbds2.addRange(fieldnum(VendInvoiceTrans,InvoiceId));
// qbr.value("TI00005951");
qbr.value("RV300654228");
qr = new QueryRun(query);
while (qr.next())
{
if (qr.changed(tablenum(VendInvoiceJour)))
{
VendInvoiceJour = qr.get(tablenum(VendInvoiceJour));
info(VendInvoiceJour.InvoiceId);
}
}
}
Цитата:
Поэтому я не совсем понимаю, где у вас на данный момент OR и откуда вы хотите его убрать?
OR по умолчанию в аксапте между датасорсами на одном уровне. А когда ставишь
fetchMode(QueryFetchMode::One2One); на каждом датасоурсе - то получается именно AND.