glibs, спасибо огромной за наводку на параметр, он нашелся на закладке "Sales tax" в параметрах главной книги и называется "Settlement / Latest date for closing" .

И теперь дата закрытия всегда дата последнего платежа.
Работает действительно АОТ\Classes\CustVendSettle.settleNow() .
Mazzy, спасибо за объяснение по поводу использования CustTransOpen . Логично.
По поводу того, почему отчет не работает в случае, когда дата закрытия не равна дате последнего платежа.
Например, мы закрыли инвойс платежами от 10 октября и от 15 сентября и формируем отчет на 30 сентября. Для отчета выбираются все проводки по клиенту, проведенные ДО даты отчета, закрытые ПОСЛЕ даты отчета, сопоставленные ПОСЛЕ даты отчета. Смотрим CustBalanceList.queryRunClosedTransactions.
X++:
queryRun.query().dataSourceTable(tablenum(CustTrans)).findRange(fieldnum(CustTrans, AccountNum)).value(queryValue(_custTable.AccountNum));
queryRun.query().dataSourceTable(tablenum(CustTrans)).findRange(fieldnum(CustTrans, TransDate)) .value(queryRange(dateNull(),transactionDate));
queryRun.query().dataSourceTable(tablenum(CustTrans)).findRange(fieldnum(CustTrans, Closed)).value(SysQuery::valueEmptyString() + ',' + queryRange(transactionDate, dateMax()));
if (!printReversed)
{
...
}
queryRun.query().dataSourceTable(tablenum(CustSettlement)).findRange(fieldnum(CustSettlement, TransDate)).value(queryRange(transactionDate, dateMax()));
Дата закрытия инвойса - 15 сентября, то есть он не попадает в выборку для отчета. Между тем, по нему по состоянию на 30 сентября еще есть задолженность, ведь платеж от 10 октября еще физически не пришел.
Таким образом, баланс по клиенту (простая сумма всех проводок до определенного числа) будет расходиться с Aging Report.
Так ведь?
Вторая проблема с exchange adjustments. Тоже пришлось корректировать ручками.