При печати авансового отчета система выдала ошибку, — 'Итератор указывает на некорректный элемент.' При разборе полетов было обнаруженен, ИМХО, не совсем корректный код:
PHP код:
class EmplAdvanceReport_Settle_RU
protected boolean checkPrePayment(EmplTrans_RU _emplTrans,EmplAdvanceId_RU _advanceId)
{
EmplTrans_RU emplTrans;
boolean ret = false;
Set set = New Set(Types::Container);
SetEnumerator setEnumerator;
;
while select checkSettle
where (checkSettle.DebitRecId == _emplTrans.RecId)
{
emplTrans = EmplTrans_RU::findRecId(checkSettle.CreditRecId);
if (emplTrans.AdvanceId && emplTrans.TransDate >= _emplTrans.TransDate)
{
set.add([emplTrans.TransDate,emplTrans.AdvanceId]);
}
}
setEnumerator = set.getEnumerator();
setEnumerator.moveNext();
if (conpeek(setEnumerator.current(),1) == headerTransDate &&
conpeek(setEnumerator.current(),2) == _advanceId)
{
ret = true;
}
return ret;
}
получается, что контейнер, при некоторых условиях, может не заполниться, а при попытке считать из него данные получаем вышеуказанную ошибку. Поправте меня, если я не прав.
p. s. Axapta 3.0 sp3, трехзвенка .