Показать сообщение отдельно
Старый 30.10.2008, 12:03   #7  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
В классе SalesFormLetter_Invoice в методе updateNow есть цикл по SalesFormLine (список SalesParmLine формируется в классе TradeTotals и записывается в recordListSalesParmLine)
X++:
while (salesParmLine)
{
..
if (! recordListSalesParmLine.next(salesParmLine))
 break;
}
{
Внутри этого цикла есть ветка
X++:
 if (SalesParameters::find().ReduceInvoice)
            {
                if (! lineValue)
                    continue;
                else
                    lineAmountExist = true;
            }
а lineAmount в рассматриваемом случае как раз 0.
т.е. возвращаемся к началу цикла с прежним курсором SalesParmLine
в итоге получаем ошибку в методе
X++:
protected void checkBeforePosting()
{
    if (salesParmLine.remainBefore != (salesLine.remainSalesFinancial + salesLine.remainSalesPhysical))
        throw error("@SYS23025");
...
}
т.к. кол-ва уже не совпадают (текущий SalesParmLine отработан)

Таким образом сняв галочку SalesParameters.ReduceInvoice (Автоматическое сокращение по накладной, Уменьшать строки сопоставления автоматически во время разноски накладной?) устраняем ошибку. (Назначение галочки не разбирал)

Похоже на баг