Если джойнить 2 таблицы - всё замечательно, когда пытаюсь приджойнить третью - qbds валится в null.
X++:
Queryrun main_query(boolean _count_query = false)
{
Query query = new Query();
QueryBuildDataSource qbds;
;
qbds = query.addDataSource(tablenum(VendInvoiceTrans));
qbds.addSortField(fieldnum(VendInvoiceTrans,ItemId));
qbds.addSortField(fieldnum(VendInvoiceTrans,InternalSp));
qbds.addSelectionField(fieldnum(VendInvoiceTrans,Qty), SelectionField::Sum);
qbds.orderMode(OrderMode::GroupBy);
qbds = qbds.addDataSource(tablenum(VendSpListTrans));
qbds.addLink(fieldnum(VendSpListTrans,InternalSp),fieldnum(VendInvoiceTrans,InternalSp));
qbds.joinMode(JoinMode::InnerJoin);
qbds = query.dataSourceTable(tableNum(VendSpListJour));
qbds.addLink(fieldnum(VendSpListTrans,InternalSp),fieldnum(VendSpListJour,InternalSP));
qbds.joinMode(JoinMode::InnerJoin);
if (datefromstr && datetostr)
{
qbds.addRange(fieldnum(VendSpListJour,SpDate)).value(SysQuery::range(datefrom.value(),dateto.value()));
}
if (vendaccountstr)
{
qbds.addRange(fieldnum(VendSpListJour,OrderAccount)).value(SysQuery::value(vendaccountstr));
}
//если введён регистранионный номер договора
if (rcontractaccountstr)
{
qbds.addRange(fieldnum(VendSpListJour, RcontractAccount)).value(SysQuery::value(rcontractaccount.value()));
}
//если введён Владелец
if (emplidstr)
{
qbds.addRange(fieldnum(VendSpListJour, Emplid)).value(SysQuery::value(emplid.value()));
}
switch(spclosedstr)
{
case (AllOpenPosted::All):
qbds.addRange(fieldnum(VendSpListJour,SpClosed));
break;
case (AllOpenPosted::Open):
qbds.addRange(fieldnum(VendSpListJour,SpClosed)).value('1');
break;
case (AllOpenPosted::Posted):
qbds.addRange(fieldnum(VendSpListJour,SpClosed)).value('0');
break;
default:
break;
}
qbds = query.dataSourceTable(tablenum(VendInvoiceTrans));
if (_count_query)
{
qbds.addSelectionField(fieldnum(VendinvoiceTrans,RecId), SelectionField::Count);
}
qbds = query.dataSourceTable(tablenum(VendSpListTrans));
return (new QueryRun(query));
}
валится на qbds = query.dataSourceTable(tableNum(VendSpListJour));
qbds.addLink(fieldnum(VendSpListTrans,InternalSp),fieldnum(VendSpListJour,InternalSP));
Если заккоментировать весь кусок от qbds = query.dataSourceTable(tableNum(VendSpListJour));
и до конца switch - всё замечательно работает.
Уважаемый
maldini, не знаете, в чём причина?