1. Ещё в куске
X++:
...
select firstonly Voucher,AccountNum,SettleAmountCur,TransDate,AmountCur from custTrans
while select Voucher, AccountNum, SettleAmountCur, TransDate, AmountCur from custTrans
index hint AccountDateIdx
where custTrans.Voucher == qLedgerTrans.Voucher && //dspic: ledgerTrans --> qLedgerTrans
custTrans.AccountNum == qLedgerTrans.AccountNum //dspic: ledgerTrans --> qLedgerTrans
...
Можно поменять местами порядок полей в условии на:
X++:
...
where custTrans.AccountNum == qLedgerTrans.AccountNum //dspic: ledgerTrans --> qLedgerTrans
&& ustTrans.Voucher == qLedgerTrans.Voucher && //dspic: ledgerTrans --> qLedgerTrans
(Это приведет условия в соответствие с индексом)
2. Было бы ещё неплохо в кверю GroupFinancLedgerJournalTrans на самый верхний уровень загнать таблицу LedgerJournalTable (Получится лесенка LedgerJournalTable-->LedgerJournalTrans-->RContractTable), там же наложить условие на Posted=Yes. Возможно, бы работало ещё чуть быстрее. И тогда этот артефакт можно вообще убрать
X++:
if (qLedgerTrans.ledgerJournalTable().posted)