Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Acest articol se aplică la Microsoft Dynamics NAV pentru toate țările și toate limbi regionale.

Simptome

Să presupunem că aveți un jurnal de activitate care are mai multe linii pentru un element din Microsoft Dynamics NAV 2009 de urmărire articol. Când publicați elementul în Jurnalul de activitate un de reciclare, intrările de depozit sunt actualizate numai ultimul element linia care este introdus de urmărire. De aceea, există un dezechilibru pentru elementul între depozit și registrul articolului.
Această problemă se produce în următoarele produse:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)


Rezolvare

Informații despre remedierea rapidă

Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, acesta este destinat numai corectării problemei descrise în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet service pack Microsoft Dynamics NAV sau versiunea Microsoft Dynamics NAV următoare, care conține această remediere rapidă.

Notă În cazuri speciale, costurile implicate de obicei pentru asistență apeluri pot fi anulate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produse asociate stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistenţă şi pentru probleme ce nu fac obiectul actualizării în cauză.



Informaţii despre instalare

Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri, dar nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară sau pentru a construi proceduri pentru a răspunde cerințelor dvs. specifice.

Notă Înainte de a instala această remediere rapidă, Verificați că toate Microsoft Navision client utilizatorii au făcut Log off sistemul. Aceasta include utilizatorii de client Microsoft Navision Application Services (NAS). Ar trebui să fie singurul client utilizatorului care este conectat când implementați această remediere rapidă.

Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltare.

Vă recomandăm că contul de utilizator în fereastra Conectări Windows sau în fereastra Conectări bază de date se atribuie "SUPER" rolul ID-ul. În cazul în care contul de utilizator nu poate fi atribuit ID-ul "SUPER" rolul, trebuie să verificați că contul de utilizator are următoarele permisiuni:

  • Modify permisiunea pentru obiectul care se va schimba.

  • Executare permisiunea pentru obiectul de sistem obiect ID 5210 și pentru obiectul de sistem obiect ID 9015 .



Notă Nu trebuie să aveți drepturi de la magazine de date decât dacă trebuie să efectuați o reparare de date.

Modificări de cod

Notă Întotdeauna test cod remediază într-un mediu controlat înainte de a aplica remedieri pentru computerele de producție.
Pentru a rezolva această problemă, urmați acești pași: creați următoarele variabile locale:

  1. Adăugați o nouă variabilă globală în tabelul de linie de jurnal de lucrare (210) și apoi specificați variabila după cum urmează:

    • Nume: WMSManagement

    • Tip de date: Codeunit

    • Subtip: WMS Management (7302)

  2. Ștergeți următorul cod în proprietate TableRelation Bin cod de câmp (5403) în tabelul de linie de jurnal lucrare (210):

    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Modificare codul în trigger OnValidate pentru reciclare cod câmp (5403) în tabelul de linie de jurnal de lucrare (210) după cum urmează:
    Cod existent

    ...// Delete the following lines.
    TESTFIELD("Location Code");
    CheckItemAvailable;
    // End of the lines.
    ...

    Cod de înlocuire

    ...// Add the following lines.
    TESTFIELD("Location Code");
    IF "Bin Code" <> '' THEN BEGIN
    GetLocation("Location Code");
    Location.TESTFIELD("Bin Mandatory");
    END;
    TESTFIELD(Type,Type::Item);
    CheckItemAvailable;
    WMSManagement.FindBinContent("Location Code","Bin Code","No.","Variant Code",'')
    // End of the lines.
    ...
  4. Adăugați o nouă variabilă locală în Cod Bin - OnLookup triggerin tabelul de linie de jurnal lucrare (210) și apoi specificați variabila după cum urmează:

    • Nume: BinCode

    • Tip de date: cod

    • Lungime: 20

  5. Adăugaţi următorul cod în Cod de reciclare - OnLookup declanşa în tabelul de linie de jurnal lucrare (210):

    TESTFIELD("Location Code");TESTFIELD(Type,Type::Item);
    BinCode := WMSManagement.BinContentLookUp("Location Code","No.","Variant Code",'',"Bin Code");
    IF BinCode <> '' THEN
    VALIDATE("Bin Code",BinCode);
  6. Modificați valoarea în proprietatea OptionString câmpul Document sursă (25) în tabelul de linie de jurnal depozit (7311) cu următoarele:
    OptionString=, S. comandă, S. factură, notă de S. Credit, S. Return ordinea, ordinea P., P. factură, notă de P. Credit, P. Return ordinea, Inb. Transfer, Outb. Transfer, Prod. Consum, elementul jurnal. stoc fizic. Jurnal., reclasificate. Jurnal., jurnal de consum., Ieșire jurnal., jurnal LM., Serv ordine, jurnal de muncă.

  7. Modificați valoarea în proprietatea OptionString câmpul de Referință Document (60) în tabelul de linie de jurnal depozit (7311) cu următoarele:
    OptionString= , publicate recepţie postat P. Inv., publicate Rtrn. recepţie, postat P. sume notă, publicate de livrare, postat Inv. S., publicate Rtrn. transport, postat S. sume notă, postat T. chitanță, postat T. livrărilor, elementul jurnal, Prod., înmagazinare, alegeți, deplasarea, jurnal LM, Jurnalul lucrare

  8. Modificați valoarea în proprietatea OptionString câmpul Document sursă (25) în tabelul de intrare depozit (7312) cu următoarele:
    OptionString=, S. comandă, S. factură, notă de S. Credit, S. Return ordinea, ordinea P., P. factură, notă de P. Credit, P. Return ordinea, Inb. Transfer, Outb. Transfer, Prod. Consum, elementul jurnal. stoc fizic. Jurnal., reclasificate. Jurnal., jurnal de consum., Ieșire jurnal., jurnal LM., servicii ordine, jurnal de muncă.

  9. Modificați valoarea în proprietatea OptionString câmpul de referință Document (60) în tabelul de intrare depozit (7312) cu următoarele:
    OptionString= , publicate recepţie postat P. Inv., publicate Rtrn. recepţie, postat P. sume notă, publicate de livrare, postat Inv. S., publicate Rtrn. transport, postat S. sume notă, postat T. chitanță, postat T. livrărilor, elementul jurnal, Prod., înmagazinare, alegeți, deplasarea, jurnal LM, Jurnalul lucrare

  10. Modificați vizibile proprietatea de control Cod locaţie (60) în formularul de jurnal lucrare (201) după cum urmează:
    Cod existent

    Visible = Yes

    Cod de înlocuire

    Visible = No
  11. Adaugă câmpul De reciclare cod între câmpul Cod locaţie şi Codul de tip de lucru în formularul de jurnal lucrare (201) și apoi specificați câmpul ca urmaţi:

    ...{ 61 ;Label ;0 ;0 ;0 ;0 ;ParentControl=60;
    InColumnHeading=Yes }

    // Add the following lines.
    { 102 ;TextBox ;35507;1650 ;1700 ;440 ;ParentControl=1;
    InColumn=Yes;
    SourceExpr="Bin Code" }
    { 103 ;Label ;0 ;0 ;0 ;0 ;ParentControl=102;
    InColumnHeading=Yes }
    // End of the lines.

    { 48 ;TextBox ;11430;2530 ;1650 ;440 ;ParentControl=1;
    ...
  12. Adăugați o nouă variabilă globală în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

    • Nume: locație

    • TipDate: înregistrare

    • Subtip: locație (14)

  13. Creați o nouă funcție GetLocation în jurnal-Post linie codeunit (1012) după cum urmează:

    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Adăugaţi următorul cod în funcția GetLocation în jurnal-Post linie codeunit (1012):

    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Creați o funcție nouă PostWhseJnlLine în jurnal-Post linie codeunit (1012) după cum urmează:

    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Creați următoarele variabile locale în funcția PostWhseJnlLine în jurnal-Post linie codeunit (1012):

    1. Adăugați o variabilă locală în funcţie de PostWhseJnlLine în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

      • Nume: WarehouseJournalLine

      • TipDate: înregistrare

      • Subtip: linie de jurnal depozit (7311)

    2. Adăugați o variabilă locală în funcţie de PostWhseJnlLine în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

      • Nume: TempWarehouseJournalLine

      • Tip de date: temporare înregistrare

      • Subtip: linie de jurnal din depozit (7311)

    3. Adăugați o variabilă locală în funcţie de PostWhseJnlLine în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

      • Nume: ItemTrackingManagement

      • Tip de date: Codeunit

      • Subtip: Management de urmărire articol (6500)

    4. Adăugați o variabilă locală în funcţie de PostWhseJnlLine în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

      • Nume: WMSManagement

      • Tip de date: Codeunit

      • Subtip: WMS Management (7302)

    5. Adăugați o variabilă locală în funcţie de PostWhseJnlLine în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

      • Nume: WhseJnlRegisterLine

      • TipDate: Codeunit

      • Subtip: DEP. . Jurnal-înregistrați linie (7301)

  17. Adăugaţi următorul cod în funcția PostWhseJnlLine în jurnal-Post linie codeunit (1012) după cum urmează:

    WITH ItemJnlLine DO BEGINIF "Entry Type" IN ["Entry Type"::Consumption,"Entry Type"::Output] THEN
    EXIT;
    Quantity := OriginalQuantity;
    "Quantity (Base)" := OriginalQuantityBase;
    GetLocation("Location Code");
    IF Location."Bin Mandatory" THEN
    IF WMSManagement.CreateWhseJnlLine(ItemJnlLine,0,WarehouseJournalLine,FALSE,FALSE) THEN BEGIN
    TempTrackingSpecification.MODIFYALL("Source Type",DATABASE::"Job Journal Line");
    ItemTrackingManagement.SplitWhseJnlLine(WarehouseJournalLine,TempWarehouseJournalLine,TempTrackingSpecification,FALSE);
    IF TempWarehouseJournalLine.FIND('-') THEN
    REPEAT
    WMSManagement.CheckWhseJnlLine(TempWarehouseJournalLine,1,0,FALSE);
    WhseJnlRegisterLine.RUN(TempWarehouseJournalLine);
    UNTIL TempWarehouseJournalLine.NEXT = 0;
    END;
    END;
  18. Adăugați o nouă variabilă locală în funcţie de cod în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

    • Nume: TempTrackingSpecification

    • Tip de date: temporare înregistrare

    • Subtip: urmărirea Specification (336)

  19. Adăugați o nouă variabilă locală în funcţie de cod în jurnal-Post linie codeunit (1012), apoi specificați variabila după cum urmează:

    • Nume: ItemJnlLine2

    • TipDate: înregistrare

    • Subtip: linie de jurnal articol (83)

  20. Modificați codul din funcția de cod în jurnal-Post linie codeunit (1012) după cum urmează:
    Cod existent 1

    ...ItemJnlLine.INIT;
    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Cod de înlocuire 1

    ...ItemJnlLine.INIT;

    // Add the following line.
    ItemJnlLine."Line No." := "Line No.";

    ItemJnlLine."Item No." := JobJnlLine2."No.";
    ...

    Cod existent 2

    ...ItemLedgEntry.LOCKTABLE;
    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);
    END;
    ...

    Înlocuirea cod 2

    ...ItemLedgEntry.LOCKTABLE;

    // Add the following line.
    ItemJnlLine2 := ItemJnlLine;

    ItemJnlPostLine.RunWithCheck(ItemJnlLine,TempJnlLineDim);

    // Add the following lines.
    ItemJnlPostLine.CollectTrackingSpecification(TempTrackingSpecification);
    PostWhseJnlLine(ItemJnlLine2,ItemJnlLine2.Quantity,ItemJnlLine2."Quantity (Base)",TempTrackingSpecification);
    // End of the lines.
    ...
  21. Modificați valoarea în proprietatea OptionString parametrul de referință documentul în funcția GetSourceDocument în depozit. Gestionare codeunit (5775) cu următoarele:
    OptionString=, S. comandă, S. factură, notă de S. Credit, S. Return ordinea, ordinea P., P. factură, notă de P. Credit, P. Return ordinea, Inb. Transfer, Outb. Transfer, Prod. Consum, elementul jurnal. stoc fizic. Jurnal., reclasificate. Jurnal., jurnal de consum., Ieșire jurnal., jurnal LM., servicii ordine, muncă jurnal.

  22. Modificați codul din funcția GetSourceDocument în depozit. Gestionare codeunit (5775) după cum urmează:
    Cod existent

    ...EXIT;
    END;
    END;
    ERROR(Text000);
    ...

    Cod de înlocuire

    ...EXIT;
    END;

    // Add the following lines.
    DATABASE::"Job Journal Line":
    BEGIN
    SourceDocument := SourceDocument::"Job Jnl.";
    EXIT;
    END;
    // End of the lines.

    END;
    ERROR(Text000);
    ...
  23. Modificați codul din funcția CreateWhseJnlLine în codeunit WMS Management (7302), urmați:
    Cod existent

    ...WhseJnlLine."Source Line No." := "Line No.";
    END;
    WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Delete the following line.
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal";

    WhseJnlLine."Reference No." := "Document No.";
    ...

    Cod de înlocuire

    ...WhseJnlLine."Source Line No." := "Line No.";

    // Add the following lines.
    END ELSE
    IF "Job No." <> '' THEN BEGIN
    WhseJnlLine."Source Type" := DATABASE::"Job Journal Line";
    WhseJnlLine."Source Subtype" := ItemJnlTemplateType;
    WhseMgt.GetSourceDocument(WhseJnlLine."Source Document",WhseJnlLine."Source Type",WhseJnlLine."Source Subtype");
    WhseJnlLine."Source No." := "Document No.";
    WhseJnlLine."Source Line No." := "Line No.";
    // End of the lines.
    END;WhseJnlLine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...ine."Source Code" := "Source Code";
    WhseJnlLine."Reason Code" := "Reason Code";
    WhseJnlLine."Registering No. Series" := "Posting No. Series";
    WhseJnlLine."Whse. Document Type" := WhseJnlLine."Whse. Document Type"::" ";

    // Add the following lines.
    IF "Job No." = '' THEN
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Item Journal"
    ELSE
    WhseJnlLine."Reference Document" := WhseJnlLine."Reference Document"::"Job Journal";
    // End of the lines.

    WhseJnlLine."Reference No." := "Document No.";
    ...

Cerințe preliminare

Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Eliminare informaţii

Nu se poate elimina această remediere rapidă.

Stare

Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".

Notă Acesta este un articol "rapid publicat" creat direct în cadrul organizației de asistență Microsoft. Informațiile conținute în acest document sunt furnizate ca răspuns la problemele care apar. Ca rezultat al vitezei în a-l face disponibil, materialele pot include erori tipografice și pot fi revizuite în orice moment, fără notificare. Consultați Termenii de utilizare pentru alte considerații.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×