14.02.2007, 15:09 | #1 |
Участник
|
Вопрос к знатокам алгоритма периодического сопоставления
В классе 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); по поступлениям и выбытиям ДС по конкретному клиенту, то периодическое сопоставление никогда не сопоставит такие проводки. Мне интересно, какой потаенный смысл был заложен в это условие. |
|