В классе
CustVendAutoSettlement_Cust_RU в методе
query
существует код инициализации query:
X++:
protected Query query()
{
Query query = new Query();
QueryBuildDatasource qbds;
QueryBuildRange qr;
// CustTransOpen -->
qbds = query.addDataSource(tableNum(CustTransOpen));
qbds.addRange(fieldNum(CustTransOpen, DueDate)).value(SysQuery::range(dateFrom, dateTo));
qbds.addRange(fieldNum(CustTransOpen, AccountNum));
qbds.addSortField(fieldNum(CustTransOpen, AccountNum));
qbds.addSortField(fieldNum(CustTransOpen, DueDate));
qbds.orderMode(OrderMode::ORDERBY);
// CustTrans -->
qbds = qbds.addDataSource(tableNum(CustTrans));
qbds.relations(true);
qbds.joinMode(JoinMode::INNERJOIN);
qr = qbds.addRange(fieldNum(CustTrans, Invoice));
qr.value(SysQuery::valueNotEmptyString());
qr.status(RangeStatus::LOCKED);
qr = qbds.addRange(fieldNum(CustTrans, RContractCode));
qr.status(autoSettleType == AutoSettleType_RU::Contract ? RangeStatus::OPEN : RangeStatus::LOCKED);
qr = qbds.addRange(fieldNum(CustTrans, RContractAccount));
qr.status(autoSettleType == AutoSettleType_RU::Contract ? RangeStatus::OPEN : RangeStatus::LOCKED);
qr = qbds.addRange(fieldNum(CustTrans, AccountNum));
qr.status(RangeStatus::HIDDEN);
return query;
}
у меня возник вопрос к условию :
X++:
qr = qbds.addRange(fieldNum(CustTrans, Invoice));
qr.value(SysQuery::valueNotEmptyString());
qr.status(RangeStatus::LOCKED);
Ведь если не указывать номера накладных, к примеру в общих журналах ГК,
по поступлениям и выбытиям ДС по конкретному клиенту, то периодическое сопоставление никогда не сопоставит такие проводки.
Мне интересно, какой потаенный смысл был заложен в это условие.