Показать сообщение отдельно
Старый 28.02.2016, 02:18   #8  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
сделал таблетку
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};