Показать сообщение отдельно
Старый 21.10.2014, 10:51   #1  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
! Ошибка при выводе сведений о платеже (AX 2012)
Не знаю, в чью "светлую" голову пришло так выводить данные о платеже, но ...
(ниже выдержка из метода FactureJour_RU.getPaymentInfo())
X++:
while (rst.next(custVendInvoiceJour))
    {
        custVendTrans = custVendInvoiceJour.CustVendInvoiceJour::custVendTrans(custVendTrans);

        infolog.clear();

        while select DocumentNum, TransDate from custVendTransPayment
            order by custVendTransPayment.DocumentNum
            where custVendTransPayment.DocumentNum
        exists join custVendSettlement
            where custVendSettlement.AccountNum         == custVendTransPayment.AccountNum
               && custVendSettlement.OffsetTransVoucher == custVendTransPayment.Voucher
               && custVendSettlement.OffsetRecid        == custVendTransPayment.Recid
               && custVendSettlement.TransCompany       == custVendTrans.DataAreaId
               && custVendSettlement.TransRecId         == custVendTrans.RecId
               && custVendSettlement.AccountNum         == custVendTrans.AccountNum
        {
            docuNumSet.add(custVendTransPayment.DocumentNum);
            docDate = max(docDate, custVendTransPayment.TransDate);
        }
    }
Мало того, что DocumentDate не выбирается из map и не присваивается переменной, так еще и сравнение идет по максимальной дате.
Т.е. вместо того, чтобы сравнить с пустой датой (забыли указать в платеже), и только в этом случае взять дату проводки, всегда берут максимальную. Клиент оплатил в пятницу, в выписке компании платеж прошел в понедельник, но пятничную дату в печатных формах я не получу.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.