Цитата:
Сообщение от
S.Kuskov
Наверное будет полезно в тексте ошибки вывести значение и ключ из мапа. Возможно это как-то поможет прояснить ситуацию.
Да смотрел все это дело. Он до этого собирает мапу так:
X++:
protected void addCheckBalance(LedgerTrans _ledgerTrans, Sign _sign = 1)
{
void addKey(TransDate _transDate, CurrencyCode _currencyCode, Amount _amount)
{
str key = strfmt("@SYS76785", _transDate, _currencyCode);
if (balanceMap.exists(key))
{
balanceMap.insert(key, balanceMap.lookup(key) + _amount);
}
else
{
balanceMap.insert(key, _amount);
}
}
if (! balanceMap)
{
balanceMap = new Map(Types::String, Types::Real);
}
addKey(_ledgerTrans.TransDate, _ledgerTrans.CurrencyCode, _ledgerTrans.AmountCur * _sign);
addKey(_ledgerTrans.TransDate, mstCode, _ledgerTrans.AmountMST * _sign);
addKey(_ledgerTrans.TransDate, mstSecondCode, _ledgerTrans.AmountMSTSecond * _sign);
}
Плюсует суммы по одинаковым ключам. Ключи имеют вид [Дата - Валюта].