Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Ten artykuł dotyczy systemu Microsoft Dynamics NAV dla wszystkich krajów i ustawień regionalnych języka.

Objawy

Założono, że dziennika zlecenia, który ma więcej niż jeden wiersze śledzenia zapasu dla elementu w systemie Microsoft Dynamics NAV 2009. Po zaksięgowaniu zapasu w dzienniku zlecenia do zasobnika zapisy magazynowe są aktualizowane wyłącznie z ostatniego wiersza, wprowadzonym śledzenia zapasu. W związku z tym istnieje nierównowaga dla elementu magazynu i księgi zapasów.
Ten problem występuje w następujących produktach:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 z dodatkiem Service Pack 1 (SP1)


Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics NAV lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.

Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.



Informacje dotyczące instalacji

Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. To obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna demonstrowany język programowania oraz narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać funkcjonalności i konstruować procedur w celu zaspokojenia określonych potrzeb użytkownika.

Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta Microsoft Navision są wylogowani systemu. Dotyczy to również użytkowników klienta Microsoft Navision Application Services (NAS). Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę.

Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską.

Firma Microsoft zaleca, aby do konta użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być przypisany identyfikator roli "SUPER". Jeśli konto użytkownika nie można przypisać Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:

  • Uprawnienie Modyfikacja dla obiektu, który będzie zmieniany.

  • Uprawnienie Execute obiektu 5210 identyfikator obiektu systemu i dla obiektu 9015 identyfikator obiektu systemu .



Uwaga Nie trzeba mieć prawa do magazynów danych, chyba że konieczne jest przeprowadzenie naprawy danych.

Zmiany kodu

Uwaga Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.
Aby rozwiązać ten problem, wykonaj następujące czynności: Utwórz następujące zmienne lokalne:

  1. Dodawanie nowej zmiennej globalnej w tabeli Wiersz dziennika zlecenia (210), a następnie określ zmienną w następujący sposób:

    • Nazwa: WMSManagement

    • Typ danych: Codeunit

    • Podtyp: Zarządzanie WMS (7302)

  2. Usuń następujący kod we właściwości TableRelation Pola Kod pojemnika w polu (5403) w tabeli Wiersz dziennika zlecenia (210):

    Bin.Code WHERE (Location Code=FIELD(Location Code));
  3. Zmień kod w wyzwalaczu OnValidate dla kodu pojemnika pola (5403) w tabeli Wiersz dziennika zlecenia (210), jak następuje:
    Istniejący kod

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

    Kod zastępczy

    ...// 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. Dodawanie nowej zmiennej lokalnej w Kod pojemnika - OnLookup triggerin w tabeli Wiersz dziennika zlecenia (210), a następnie określ zmienną w następujący sposób:

    • Nazwa: Wmsmanagement

    • Typ danych: Kod

    • Długość: 20

  5. Dodaj poniższy kod w polu Kod pojemnika - OnLookup wyzwalacz w tabeli Wiersz dziennika zlecenia (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. Zmień wartość w polu OptionString właściwość pola Dokumentu źródłowego (25) w tabeli Wiersz dziennika magazynowego (7311) do następującego:
    Właściwość OptionString= S., zamówienia, faktury S., S. faktura korygująca, zamówienie zwrotu S., str. zamówienia, Faktura, str. faktura korygująca, zamówienie, kor. SP., Zamówienie zw. Transfer, Prod. Zużycie, zak., Zamówienie zwr. Gł., dzien. Gł., zużycie Gł., gł., BOM dzien., Serv zamówienia wyjścia, zadanie Gł.

  7. Zmień wartość w polu OptionString właściwość Dokument referencyjny pole (60) w tabeli Wiersz dziennika magazynowego (7311) do następującego:
    OptionString= , zaksięgowane przyjęcie, zaksięgowane faktury P., wysłany. wyd., str. faktura korygująca, zaksięgowane wydanie, zaksięgowana S. faktury, zaksięgowane wydanie nr, S. faktura korygująca, zaksięgowane przyjęcie T., zaksięgowane wydanie T., wysłany element arkusza Prod., Odłożenie, pobranie, przemieszczania, dziennik BOM, dzienniku zlecenia

  8. Zmień wartość w polu OptionString właściwość pola dokumentu źródłowego (25) w tabeli Zapisy magazynowe (7312) na następujący:
    Właściwość OptionString= S., zamówienia, faktury S., S. faktura korygująca, zamówienie zwrotu S., str. zamówienia, Faktura, str. faktura korygująca, zamówienie, kor. SP., Zamówienie zw. Transfer, Prod. Zużycie, zak., Zamówienie zwr. Gł., dzien. Gł., zużycie Gł., gł., BOM dzien., serw. zamówienie wyjścia, zadanie Gł.

  9. Zmień wartość w polu OptionString właściwość dokument referencyjny pole (60) w tabeli Zapisy magazynowe (7312) na następujący:
    OptionString= , zaksięgowane przyjęcie, zaksięgowane faktury P., wysłany. wyd., str. faktura korygująca, zaksięgowane wydanie, zaksięgowana S. faktury, zaksięgowane wydanie nr, S. faktura korygująca, zaksięgowane przyjęcie T., zaksięgowane wydanie T., wysłany element arkusza Prod., Odłożenie, pobranie, przemieszczania, dziennik BOM, dzienniku zlecenia

  10. Zmień właściwość Visible formantu kodu lokalizacji (60) w formularzu Arkusz zadań (201) w następujący sposób:
    Istniejący kod

    Visible = Yes

    Kod zastępczy

    Visible = No
  11. Dodanie pola Kod pojemnika między pola Kod lokalizacji i Kod typu prac w formularzu Arkusz zadań (201), a następnie określ pole, jak należy wykonać:

    ...{ 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. Dodawanie nowej zmiennej globalnej w zadaniu dzien.-codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

    • Nazwa: Lokalizacja

    • Typ danych: rekord

    • Podtyp: Lokalizacja (14)

  13. Tworzenie nowej getlocationfunkcja w zadaniu dzien.-codeunit linii Post (1012) w następujący sposób:

    LOCAL PROCEDURE GetLocation@25(LocationCode@1000 : Code[10]);
  14. Dodaj poniższy kod w getlocationfunkcja w zadaniu dzien. -codeunit linii Post (1012):

    IF LocationCode = '' THENCLEAR(Location)
    ELSE
    IF Location.Code <> LocationCode THEN
    Location.GET(LocationCode);
  15. Tworzenie nowej postwhsejnllinefunkcja w zadaniu dzien.-codeunit linii Post (1012) w następujący sposób:

    LOCAL PROCEDURE PostWhseJnlLine@24(ItemJnlLine@1000 : Record 83;OriginalQuantity@1001 : Decimal;OriginalQuantityBase@1002 : Decimal;VAR TempTrackingSpecification@1003 : TEMPORARY Record 336);
  16. Utwórz następujące zmienne lokalne w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012):

    1. Dodawanie zmiennej lokalnej w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

      • Nazwa: WarehouseJournalLine

      • Typ danych: rekord

      • Podtyp: Wiersz dziennika magazynowego (7311)

    2. Dodawanie zmiennej lokalnej w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

      • Nazwa: TempWarehouseJournalLine

      • Typ danych: tymczasowe rekordu

      • Podtyp: Wiersz dziennika magazynowego (7311)

    3. Dodawanie zmiennej lokalnej w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

      • Nazwa: ItemTrackingManagement

      • Typ danych: Codeunit

      • Podtyp: Zarządzanie śledzenia zapasu (6500)

    4. Dodawanie zmiennej lokalnej w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

      • Nazwa: WMSManagement

      • Typ danych: Codeunit

      • Podtyp: Zarządzanie WMS (7302)

    5. Dodawanie zmiennej lokalnej w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

      • Nazwa: WhseJnlRegisterLine

      • Typ danych: Codeunit

      • Podtyp: mag. Gł.-rejestrowania wierszy (7301)

  17. Dodaj poniższy kod w postwhsejnllinefunkcja w zadaniu dzien. -codeunit linii Post (1012) w następujący sposób:

    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. Dodawanie nowej zmiennej lokalnej w funkcji Kod w zadaniu dzien.-codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

    • Nazwa: Whsejnlregisterline

    • Typ danych: tymczasowe rekordu

    • Podtyp: Specyfikacja śledzenia (336)

  19. Dodawanie nowej zmiennej lokalnej w funkcji Kod w zadaniu dzien.-codeunit linii Post (1012), a następnie określ zmienną w następujący sposób:

    • Nazwa: ItemJnlLine2

    • Typ danych: rekord

    • Podtyp: Wiersz dziennika zapasów (83)

  20. Zmień kod w funkcji Kod w zadaniu dzien.-codeunit linii Post (1012), jak następuje:
    Istniejący kod 1

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

    Kod zastępczy 1

    ...ItemJnlLine.INIT;

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

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

    Istniejący kod 2

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

    Kod zastępczy 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. Zmień wartość w polu OptionString właściwość odniesienie Document parametr w funkcji GetSourceDocument w wewnętrznego odłożenia magazynowego. Zarządzanie codeunit (5775) do następującego:
    Właściwość OptionString= S., zamówienia, faktury S., S. faktura korygująca, zamówienie zwrotu S., str. zamówienia, Faktura, str. faktura korygująca, zamówienie, kor. SP., Zamówienie zw. Transfer, Prod. Zużycie, zak., Zamówienie zwr. Gł., dzien. Gł., zużycie Gł., gł., BOM dzien., serw. zamówienie wyjścia, zadanie Gł.

  22. Zmień kod w funkcji GetSourceDocument w wewnętrznego odłożenia magazynowego. Zarządzanie codeunit (5775) jak następuje:
    Istniejący kod

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

    Kod zastępczy

    ...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. Zmień kod w funkcji CreateWhseJnlLine w codeunit zarządzania WMS (7302), następująco:
    Istniejący kod

    ...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.";
    ...

    Kod zastępczy

    ...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.";
    ...

Wymagania wstępne

Musi mieć jedną z następujących produktów, w celu zastosowania tej poprawki:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 z dodatkiem Service Pack 1 (SP1)

Informacje dotyczące usuwania

Nie można usunąć tej poprawki.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Uwaga Jest to artykuł " szybkiej publikacji" tworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako odpowiedź na pojawiające się problemy. W wyniku przyspieszonego udostępnienia, materiały te mogą zawierać błędy typograficzne i mogą być zmieniane w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowania w celu uzyskania innych informacji.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×