Не уверен, что это верно, но вроде можно обойтись одним датасорсом CustTable, в init которого
X++:
public void init()
{
QueryBuildDataSource qb;
super();
qb = CustTable_ds.query().dataSourceName('CustTable');
qb.clearLinks();
qb.fetchMode(QueryFetchMode::One2One);
qb.addLink(fieldNum(CustInvoiceJour,InvoiceAccount),fieldNum(CustTable,AccountNum));
qb.addLink(fieldNum(CustInvoiceJour,OrderAccount ),fieldNum(CustTable,AccountNum));
qb.addSelectionField(fieldNum(CustTable,RecId));
qb.addSelectionField(fieldNum(CustTable,Name));
}
При этом полученный запрос выглядит следующим образом:
Цитата:
Информация:
SELECT RecId, SalesId
FROM CustInvoiceJour
WHERE ((InvoiceDate>={ts '2008-08-08 00:00:00.000'} AND InvoiceDate<={ts '2008-08-08 00:00:00.000'}))
JOIN RecId FROM CustTable
WHERE
CustInvoiceJour.InvoiceAccount = CustTable.AccountNum AND
CustInvoiceJour.OrderAccount = CustTable.AccountNum
Вопрос в том равносильно ли это предыдущему запросу (в плане джойнов)
Цитата:
SELECT * FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-05-01 00:00:00.000'} AND InvoiceDate<={ts '2008-05-31 00:00:00.000'}))
JOIN * FROM CustTable WHERE CustInvoiceJour.OrderAccount = CustTable.AccountNum
JOIN * FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum
upd
судя по данным - равносильно и можно обойтись без addSelectionField, выбирая сразу все поля.