X++:
Query q;
QueryBuildDataSource qbdsCustInvoiceJour;
QueryBuildDataSource qbdsCustInvoiceTrans;
QueryBuildDataSource qbdsInventTrans;
QueryBuildRange range;
Str600 value;
;
q = new Query();
qbdsCustInvoiceJour = q.addDataSource(tableNum(CustInvoiceJour), "CJTable");
qbdsCustInvoiceJour.addSelectionField(fieldNum(CustInvoiceJour, InvoiceAccount));
qbdsCustInvoiceJour.addSelectionField(fieldNum(CustInvoiceJour, InvoiceId));
qbdsCustInvoiceJour.addSelectionField(fieldNum(CustInvoiceJour, SalesId));
range = qbdsCustInvoiceJour.addRange(fieldNum(CustInvoiceJour, InvoiceAccount));
range.value("39");
qbdsCustInvoiceTrans= qbdsCustInvoiceJour.addDataSource(tableNum(CustInvoiceTrans));
qbdsCustInvoiceTrans.addLink(fieldNum(CustInvoiceJour, InvoiceId),fieldNum(CustInvoiceTrans, InvoiceId));
qbdsCustInvoiceTrans.addLink(fieldNum(CustInvoiceJour, SalesId), fieldNum(CustInvoiceTrans, SalesId));
qbdsCustInvoiceTrans.addLink(fieldNum(CustInvoiceJour, InvoiceDate), fieldNum(CustInvoiceTrans, InvoiceDate));
qbdsCustInvoiceTrans.addLink(fieldNum(CustInvoiceJour, numberSequenceGroup), fieldNum(CustInvoiceTrans, numberSequenceGroup));
qbdsInventTrans = qbdsCustInvoiceTrans.addDataSource(tableNum(InventTrans),"ITTable");
qbdsInventTrans.addLink(fieldNum(qbdsCustInvoiceTrans, InventTransId),fieldNum(InventTrans, InventTransId));
qbdsInventTrans.addLink(fieldNum(qbdsCustInvoiceTrans, InvoiceId),fieldNum(InventTrans, InvoiceId));
qbdsInventTrans.addLink(fieldNum(qbdsCustInvoiceTrans, InvoiceDate),fieldNum(InventTrans, DateFinancial));
qbdsInventTrans.addSelectionField(fieldNum(InventTrans, RecId));