Показать сообщение отдельно
Старый 20.01.2012, 18:58   #44  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от mazzy Посмотреть сообщение
поле К расчетно-платежному документу должно заполняться автоматически на основании сопоставлений. Если сопоставлений несколько, то должно выводиться несколько документов с датами через запятую.

Как мило, что все мы наступаем на одни и те же заботливо расставленные мины. Предлагаю следующий код, сделано в Австрии:
X++:
//BP deviation documented
display str getPaymentInfo()
{
    Object              factureCalcAdj;
    RecordSortedList    rst;
    CustInvoiceJour     invoiceJour;
    CustTrans           custTrans, custTransPayment;
    CustSettlement      custSettlement;
    str                 txt, ret;
    date                d;

    if (classidget(caller) == classnum(FactureCalcAmountAdjustments_RU))
    {
        factureCalcAdj = caller;
        return factureCalcAdj.getPaymentInfo();
    }
    else
    {
        rst = factureJour.invoiceJourSortedList_CustVend();
        while (rst.next(invoiceJour))
        {
            custTrans = invoiceJour.custTrans();
            while select custSettlement
                where custSettlement.TransCompany   == custTrans.dataAreaId
                   && custSettlement.TransRecId     == custTrans.RecId
                   && custSettlement.AccountNum     == custTrans.AccountNum
            {
                while select custTransPayment
                    where custTransPayment.AccountNum   == custSettlement.OffsetAccountNum
                       && custTransPayment.Voucher      == custSettlement.OffsetTransVoucher
                {
                    txt += ((txt ? ', ' : '') + custTransPayment.Txt);
                    d    = max(d, custTransPayment.TransDate);
                }
            }
        }
        ret = strfmt("%1: %2 %3: %4",
                     element.txtInLanguage(literalStr("@SYS2060")), txt,
                     element.txtInLanguage(literalStr("@SYS77627")), d);
    }

    return ret;
}