Rychle publikované články poskytují informace přímo od organizace podpory Microsoftu. Zde obsažené informace jsou vytvářeny jako reakce na nová nebo jedinečná témata nebo jsou určeny k doplnění dalších informací znalostní báze Knowledge Base.
Tento článek platí pro Microsoft Dynamics NAV 2009 pro všechny země a všechna jazyková národní prostředí.
Příznaky
Vezměte v úvahu následující scénář v aplikaci Microsoft Dynamics NAV 2009. Funkci Vypočítat hodnotu zásob spustíte v deníku přecenění. Když to uděláte, kliknete na
Položka hlavní knihy zboží v oblasti Výpočet na oblast v dialogovém okně Vypočítat hodnotu zásob V tomto scénáři aplikace Microsoft Dynamics NAV 2009 vždy používá výchozí dimenzi položky. Proto pokud položka nemá žádnou specifikovanou dimenzi a zaúčtujete nákupní objednávku, která obsahuje dimenze, dimenze položky zboží (ILE) je ignorována při spuštění sestavy Vypočítat hodnotu zásob. Pokud má položka zadanou jakoukoli dimenzi a ILE nemá žádnou dimenzi zadanou, Microsoft Dynamics NAV nastaví dimenzi položky pro všechny řádky.
Řešení
Informace o opravě hotfix
Od Microsoftu je teď k dispozici podporovaná oprava hotfix. Účelem je však pouze vyřešení problému, který je popsán v tomto článku. Aplikujte ho jenom na systémy, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může projít dalším testováním. Pokud se vás tedy tento problém vážně netýká, doporučujeme počkat na další aktualizaci Service Pack pro produkt Microsoft Dynamics NAV 2009 nebo další verzi aplikace Microsoft Dynamics NAV, která tuto opravu hotfix obsahuje.
Poznámka: Ve zvláštních případech mohou být poplatky, které jsou obvykle účtovány za telefonická hovory podpory, zrušeny, pokud pracovník technické podpory pro řešení Microsoft Dynamics a související produkty zjistí, že konkrétní aktualizace vyřeší váš problém. Další dotazy a problémy týkající se podpory, které se netýkají této konkrétní opravy, podléhají běžným sazbám za podporu.
Informace o instalaci
Společnost Microsoft poskytuje příklady programování pouze pro ilustraci, bez záruky, ať už vyjádřené nebo předpokládané. To zahrnuje, ale není omezeno na, předpokládané záruky prodejnosti nebo vhodnosti pro konkrétní účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předváděn, a s nástroji, které se používají k vytváření a ladění procedur. Pracovníci technické podpory Microsoftu vám můžou pomoct vysvětlit funkčnost určitého postupu, ale nebudou tyto příklady upravovat za účelem poskytování dalších funkcí nebo konstrukce procedur, které by splňovaly vaše konkrétní požadavky.
Poznámka: Před instalací této opravy hotfix ověřte, zda jsou všichni uživatelé klienta Microsoft Navision odhlášeni ze systému. To zahrnuje i uživatele klienta Microsoft Navision Application Services (NAS). Měli byste být jediným klientským uživatelem, který je přihlášen při implementaci této opravy hotfix.
K implementaci této opravy hotfix musíte mít vývojářskou licenci.
Doporučujeme, aby uživatelské účtu v okně Windows Přihlášení nebo v okně Přihlášení k databázi bylo přiřazeno ID role "SUPER". Pokud nelze uživatelskému účtu přiřadit ID role "SUPER", je nutné ověřit, zda má uživatelský účet následující oprávnění:
- Oprávnění k úpravám objektu, který budete měnit.
- Oprávnění ke spuštění pro objekt s ID systémového objektu 5210 a pro objekt s ID systémového objektu 9015.
Poznámka: K úložištím dat nemusíte mít práva, ledaže byste museli provádět opravu dat.
Změny kódu
Poznámka: Před použitím oprav v produkčních počítačích vždy otestujte opravy kódu v kontrolovaném prostředí.
Chcete-li tento problém vyřešit, postupujte takto:
Následujícím způsobem změňte kód aktivační události OnAfterGetRecord v sestavě Vypočítat hodnotu zásob (5899):
Existující kód... CalculatePer::Item: // Delete the following line. BEGIN InsertValJnlBuffer( ItemLedgEntry."Item No.",ItemLedgEntry."Variant Code", ItemLedgEntry."Location Code",RemQty, CalculateRemInvValue(ItemLedgEntry."Entry No.",ItemLedgEntry.Quantity,RemQty, IncludeExpectedCost AND NOT ItemLedgEntry."Completely Invoiced")); // Delete the following line. END; END; ...Náhradní kód
... CalculatePer::Item: InsertValJnlBuffer( ItemLedgEntry."Item No.",ItemLedgEntry."Variant Code", ItemLedgEntry."Location Code",RemQty, CalculateRemInvValue(ItemLedgEntry."Entry No.",ItemLedgEntry.Quantity,RemQty, IncludeExpectedCost AND NOT ItemLedgEntry."Completely Invoiced")); END; ...Následujícím způsobem změňte kód ve funkci InsertItemJnlLine v sestavě Vypočítat hodnotu zásob (5899):
Existující kód... // Delete the following line. IF CalculatePer = CalculatePer::"Item Ledger Entry" THEN "Applies-to Entry" := ApplyToEntry2; VALIDATE(Quantity,Quantity2); ...Náhradní kód
... // Add the following line. IF CalculatePer = CalculatePer::"Item Ledger Entry" THEN BEGIN "Applies-to Entry" := ApplyToEntry2; // Add the following lines. CreateDimFromILE; END; // End of the added lines. VALIDATE(Quantity,Quantity2); ...Vytvořte funkci CreateDimFromILE v sestavě Vypočítat hodnotu zásob (5899). Postupujte takto:
Nastavte vlastnost Local funkce na hodnotu Ano.
Přidejte místní proměnnou a pak určete proměnnou následujícím způsobem:
-
Název:
JnlLineDim -
Datový typ:
Záznam - Podtyp: Kóta řádku deníku
-
Název:
Přidejte místní proměnnou a pak určete proměnnou následujícím způsobem:
-
Název:
LedgEntryDim -
Datový typ:
Záznam - Podtyp: Vstupní dimenze hlavní knihy
-
Název:
Přidejte místní proměnnou a pak určete proměnnou následujícím způsobem:
- **Název:**DimMgt
- Datový typ: Kódová jednotka
- **Podtyp:**DimensionManagement
Do funkce CreateDimFromILE přidejte následující kód:
JnlLineDim.SETRANGE("ID tabulky",DATABASE::"Řádek deníku položky");
JnlLineDim.SETRANGE("Název šablony deníku",ItemJnlLine.' Název šablony deníku");
JnlLineDim.SETRANGE("Název dávky deníku",ItemJnlLine.' Název dávky deníku");
JnlLineDim.SETRANGE("Journal Line No.",ItemJnlLine." Číslo linky.");
JnlLineDim.DELETEALL;
LedgEntryDim.SETRANGE("ID tabulky",DATABASE::"Položka hlavní knihy");
LedgEntryDim.SETRANGE("Vstupní číslo.",ItemLedgEntry." Vstupní číslo");
DimMgt.MoveLedgEntryDimToJnlLineDim(LedgEntryDim,JnlLineDim,DATABASE::"Item Journal Line",
ItemJnlLine." Název šablony deníku",ItemJnlLine." Název dávky deníku",ItemJnlLine." Řádek č.",0);
JnlLineDim.SETCURRENTKEY("Kód dimenze","Kód hodnoty dimenze");
JnlLineDim.SETRANGE("Kód dimenze",GLSetup.' Kód globální dimenze 1");
IF JnlLineDim.FINDFIRST THEN
ItemJnlLine." Kód zkratky kóty 1" := JnlLineDim." Kód hodnoty dimenze"
ELSE
ItemJnlLine." Kód zkratky kóty 1" := '';
JnlLineDim.SETRANGE("Kód dimenze",GLSetup.' Kód globální dimenze 2");
IF JnlLineDim.FINDFIRST THEN
ItemJnlLine." Zkratka kóty 2 kód" := JnlLineDim." Kód hodnoty dimenze"
ELSE
ItemJnlLine." Kód zkratky kóty 2" := '';
Požadavky
Pro instalaci této opravy hotfix je třeba mít nainstalovanou aplikaci Microsoft Dynamics NAV 2009 Service Pack 1 nebo Microsoft Dynamics NAV 2009.
Informace o odebrání
Tuto opravu hotfix nelze odebrat.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
SPOLEČNOST MICROSOFT A JEJÍ DODAVATELÉ NENESOU ŽÁDNOU ZODPOVĚDNOST A NEPOSKYTUJÍ ŽÁDNÉ ZÁRUKY ZA VHODNOST, SPOLEHLIVOST NEBO PŘESNOST INFORMACÍ OBSAŽENÝCH V DOKUMENTECH A SOUVISEJÍCÍ GRAFICE PUBLIKOVANÝCH NA TOMTO WEBU ("MATERIÁLY") PRO ŽÁDNÝ ÚČEL.
MATERIÁLY MOHOU OBSAHOVAT TECHNICKÉ NEPŘESNOSTI NEBO TYPOGRAFICKÉ CHYBY A MOHOU BÝT KDYKOLI BEZ UPOZORNĚNÍ OPRAVENY. V MAXIMÁLNÍM ROZSAHU POVOLENÉM PLATNÝMI ZÁKONY SE MICROSOFT A JEJÍ DODAVATELÉ ZŘÍKAJÍ A VYLUČUJÍ VEŠKERÁ PROHLÁŠENÍ, ZÁRUKY A PODMÍNKY, AŤ UŽ VÝSLOVNÉ, PŘEDPOKLÁDANÉ NEBO ZÁKONNÉ, VČETNĚ, ALE NIKOLI VÝHRADNĚ, PROHLÁŠENÍ, ZÁRUK NEBO PODMÍNEK VLASTNICTVÍ, NEPORUŠENÍ PRÁV, USPOKOJIVÉHO STAVU NEBO KVALITY, PRODEJNOSTI A VHODNOSTI PRO URČITÝ ÚČEL VE VZTAHU K MATERIÁLŮM.