Последняя версия кода (для RU8 + KB 2677302):
\Data Dictionary\Tables\FactureJour_RU\Methods\document
X++:
server public container document()
{
DocumentNum docNum;
DocumentDate docDate;
FactureTrans_RU tmpFactureTrans;
LedgerJournalTrans ledgerJournalTrans;
Set docNumSet = new Set(Types::String);
switch (this.FactureType)
{
case FactureType_RU::TaxCorrection :
if (this.vatTaxAgent && !this.DocumentNum && !this.DocumentDate)
{
while select ledgerJournalTrans
group by DocumentDate, DocumentNum
join tmpFactureTrans
where tmpFactureTrans.MarkupRefRecId == ledgerJournalTrans.RecId &&
tmpFactureTrans.Module == this.Module &&
tmpFactureTrans.FactureId == this.FactureId
{
docNumSet.add(ledgerJournalTrans.DocumentNum);
if (docNumSet.elements() > 1)
{
docNum = '';
docDate = dateNull();
break;
}
docNum = ledgerJournalTrans.DocumentNum;
docDate = ledgerJournalTrans.DocumentDate;
}
}
break;
// begin
case FactureType_RU::Invoice:
[docNum, docDate] = this. getPaymentInfo();
break;
}
return [ docNum, docDate ];
}
X++:
container getPaymentInfo()
{
RecordSortedList rst;
CustVendInvoiceJour custVendInvoiceJour;
CustVendTrans custVendTrans, custVendTransPayment;
CustVendSettlement custVendSettlement;
CustInvoiceJour custInvoiceJour;
VendInvoiceJour vendInvoiceJour;
CustTrans custTrans, custTransPayment;
VendTrans vendTrans, vendTransPayment;
CustSettlement custSettlement;
VendSettlement vendSettlement;
DocumentNum docuNum;
DocumentDate docDate;
;
switch (this.Module)
{
case FactureModule_RU::Cust :
custVendInvoiceJour = custInvoiceJour;
custVendTrans = custTrans;
custVendTransPayment = custTransPayment;
custVendSettlement = custSettlement;
break;
case FactureModule_RU::Vend :
custVendInvoiceJour = vendInvoiceJour;
custVendTrans = vendTrans;
custVendTransPayment = vendTransPayment;
custVendSettlement = vendSettlement;
break;
default :
throw error(Error::wrongUseOfFunction(funcname()));
}
rst = this.invoiceJourSortedList_CustVend();
while (rst.next(custVendInvoiceJour))
{
custVendTrans = custVendInvoiceJour.CustVendInvoiceJour::custVendTrans(custVendTrans);
while select custVendSettlement
where custVendSettlement.TransCompany == custVendTrans.dataAreaId
&& custVendSettlement.TransRecId == custVendTrans.RecId
&& custVendSettlement.AccountNum == custVendTrans.AccountNum
{
while select custVendTransPayment
where custVendTransPayment.AccountNum == custVendSettlement.AccountNum
&& custVendTransPayment.Voucher == custVendSettlement.OffsetTransVoucher
&& custVendTransPayment.Recid == custVendSettlement.OffsetRecid
{
docuNum += ((docuNum ? ', ' : '') + custTransPayment.Txt);
docDate = max(docDate, custTransPayment.TransDate);
}
}
}
return [docuNum, docDate];
}