Это еще не все. Вы взгляните на строки в методе settleForDifferentProfilesOrPrepayment:
X++:
if (exchRateDiffCalcType == ExchRateDiffCalcType_W::Standard || firstCustVendTrans.RecId == custVendTransCredit.RecId)
{
closeAmountMST = _settleAmountMstDebit;
}
сопоставил предоплату 3100 руб. с валютной отгрузкой 100$ по курсу 30. При таком алгоритме в основной валюте получается сумма 3000, хотя сумма в валюте проводки 3100 и валюта проводки - рубли.