сделал таблетку
Rec это запись 17-й книжки, отсортированной по нужному счету
перед запуском находим последнюю операцию в детальной книжке поставщиков и суем ее в dVLEEntryNo.
у меня все только в локальной валюте, если у вас валюты разные - это еще гемор дополнительный.
p.s.
это все для Нава 2009 и ниже, в 2015 измерения другие! (с ними кстати проще)
ну вот как-то так
Код:
WITH Rec DO BEGIN
IF VLE.GET("Entry No.") THEN
EXIT;
// создаем книжку поставщика
VLE.INIT;
VLE."Entry No." := "Entry No.";
VLE."Vendor No." := "Source No.";
VLE."Posting Date" := "Posting Date";
VLE."Document Type" := "Document Type";
VLE."Document No." := "Document No.";
VLE.Description := Description;
IF "Document Type" IN ["Document Type"::Invoice, "Document Type"::"Credit Memo"] THEN
VLE."Purchase (LCY)" := Amount;
VLE."Buy-from Vendor No." := "Source No.";
VLE."Vendor Posting Group" := 'ПОДОТЧЕТ'; // зря помеченная учетная группа
VLE."Global Dimension 1 Code" := "Global Dimension 1 Code";
VLE."Global Dimension 2 Code" := "Global Dimension 2 Code";
VLE."User ID" := "User ID";
VLE.Open := TRUE;
VLE.Positive := Amount > 0;
VLE."Due Date" := "Posting Date";
VLE."Journal Batch Name" := "Journal Batch Name";
VLE."Bal. Account Type" := "Bal. Account Type";
VLE."Bal. Account No." := "Bal. Account No.";
VLE."Transaction No." := "Transaction No.";
VLE."Document Date" := "Posting Date";
VLE."External Document No." := "External Document No.";
VLE."No. Series" := "No. Series";
VLE."Agreement No." := "Agreement No.";
VLE."Payment Purpose" := "Payment Purpose";
VLE.INSERT;
// создаем детальную книжку поставщика
dVLEEntryNo +=1;
dVLE.INIT;
dVLE."Entry No." := dVLEEntryNo;
dVLE."Vendor Ledger Entry No." := "Entry No.";
dVLE."Entry Type" := dVLE."Entry Type"::"Initial Entry";
dVLE."Posting Date" := "Posting Date";
dVLE."Document Type" := "Document Type";
dVLE."Document No." := "Document No.";
dVLE.Amount := Amount; // только для локальной валюты!!!
dVLE."Amount (LCY)" := Amount;
dVLE."Vendor No." := "Source No.";
dVLE."User ID" := "User ID";
dVLE."Transaction No." := "Transaction No.";
dVLE."Journal Batch Name" := "Journal Batch Name";
dVLE."Debit Amount" := "Debit Amount"; // только для локальной валюты!!!
dVLE."Credit Amount" := "Credit Amount"; // только для локальной валюты!!!
dVLE."Debit Amount (LCY)" := "Debit Amount";
dVLE."Credit Amount (LCY)" := "Credit Amount";
dVLE."Initial Entry Due Date" := "Posting Date";
dVLE."Initial Entry Global Dim. 1" := "Global Dimension 1 Code";
dVLE."Initial Entry Global Dim. 2" := "Global Dimension 2 Code";
dVLE."Initial Document Type" := "Document Type";
dVLE."Vendor Posting Group" := 'ПОДОТЧЕТ'; // зря помеченная учетная группа
dVLE."Initial Entry Posting Date" := "Posting Date";
dVLE."Agreement No." := "Agreement No.";
dVLE."Initial Entry Positive" := Amount > 0;
dVLE.Description := Description;
dVLE.INSERT;
// создаем измерения
LEDim.SETRANGE("Table ID", DATABASE::"G/L Entry");
LEDim.SETRANGE("Entry No.", "Entry No.");
IF LEDim.FINDSET THEN REPEAT
LEDim1.COPY(LEDim);
LEDim1."Table ID" := DATABASE::"Vendor Ledger Entry";
IF LEDim1.INSERT(FALSE) THEN;
UNTIL LEDim.NEXT = 0;
END{WITH};