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

Când creați un contract de servicii (nu se preplătit) și modificați factură înainte de înregistrare în Microsoft Dynamics NAV 2009, există date inconsistente dintre intrările din registrul de serviciu şi contabilitate. Această problemă se produce în următoarele produse:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1

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 2009 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 de 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. Cu toate acestea, nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară 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.

  • Permisiunea de executare 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:

  1. Modificați codul din tabelul de dimensiune Document (357) după cum urmează:
    Cod existent 1

    ...      Text005@1009 : TextConst 'ENU=Canceled.';
    Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';

    PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
    ...

    Înlocuirea cod 1

    ...      Text005@1009 : TextConst 'ENU=Canceled.';
    Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
    Text007@1011 : TextConst 'ENU=You cannot change the dimension because the document is based on a service contract.';

    PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
    ...

    Cod existent 2

    ...    PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
    VAR
    SalesLine@1001 : Record 37;
    PurchaseLine@1002 : Record 39;
    BEGIN
    CASE "Table ID" OF
    DATABASE::"Sales Line":
    BEGIN
    IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
    IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
    IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
    ERROR(Text005)
    END;
    DATABASE::"Purchase Line":
    BEGIN
    IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
    IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN

    IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
    ERROR(Text005)
    END;
    END;
    END;
    ...

    Înlocuirea cod 2

    ...    PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
    VAR
    SalesLine@1001 : Record 37;
    PurchaseLine@1002 : Record 39;
    ServiceHeader@1003 : Record 5900;
    ServiceLine@1004 : Record 5902;
    BEGIN
    CASE "Table ID" OF
    DATABASE::"Sales Line":
    BEGIN
    IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
    IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
    IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
    ERROR(Text005)
    END;
    DATABASE::"Purchase Line":
    BEGIN
    IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
    IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN

    IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
    ERROR(Text005)
    END;
    DATABASE::"Service Header":
    IF ServiceHeader.GET(DocDim."Document Type",DocDim."Document No.") AND (ServiceHeader."Contract No." <> '') THEN
    ERROR(Text007);
    DATABASE::"Service Line":
    IF ServiceLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
    IF (ServiceLine."Contract No." <> '') THEN
    ERROR(Text007);
    END;
    END;
    ...

  2. Modificați codul din tabelul Linie Service (5902) după cum urmează:
    Cod existent 1

    ...               IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
    (("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
    ("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
    ("Spare Part Action" = "Spare Part Action"::" "))
    THEN
    ReserveServLine.VerifyChange(Rec,xRec);
    END;

    OnDelete=VAR
    ...

    Înlocuirea cod 1

    ...               IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
    (("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
    ("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
    ("Spare Part Action" = "Spare Part Action"::" "))
    THEN
    ReserveServLine.VerifyChange(Rec,xRec);
    IF "Document Type" = ServiceLine."Document Type"::Invoice THEN
    IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
    ERROR(Text046);
    END;

    OnDelete=VAR
    ...

    Cod existent 2

    ...    { 5   ;   ;Type                ;Option        ;OnValidate=BEGIN



    GetServHeader;

    TESTFIELD("Qty. Shipped Not Invoiced",0);
    ...

    Înlocuirea cod 2

    ...    { 5   ;   ;Type                ;Option        ;OnValidate=BEGIN
    IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
    ERROR(Text046);

    GetServHeader;
    ...

    Cod existent 3

    ...    { 6   ;   ;No.                 ;Code20        ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
    ELSE IF (Type=CONST(G/L Account)) "G/L Account"
    ELSE IF (Type=CONST(Item)) Item
    ELSE IF (Type=CONST(Resource)) Resource
    ELSE IF (Type=CONST(Cost)) "Service Cost";
    OnValidate=VAR
    ShowLocMessage@1000 : Boolean;
    BEGIN
    TESTFIELD("Qty. Shipped Not Invoiced",0);
    ...

    Înlocuirea cod 3

    ...    { 6   ;   ;No.                 ;Code20        ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
    ELSE IF (Type=CONST(G/L Account)) "G/L Account"
    ELSE IF (Type=CONST(Item)) Item
    ELSE IF (Type=CONST(Resource)) Resource
    ELSE IF (Type=CONST(Cost)) "Service Cost";
    OnValidate=VAR
    ShowLocMessage@1000 : Boolean;
    BEGIN
    IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
    ERROR(Text046);

    TESTFIELD("Qty. Shipped Not Invoiced",0);
    ...

    Cod existent 4

    ...    { 22  ;   ;Unit Price          ;Decimal       ;OnValidate=BEGIN
    GetServHeader;


    IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
    ...

    Înlocuirea cod 4

    ...    { 22  ;   ;Unit Price          ;Decimal       ;OnValidate=BEGIN
    GetServHeader;
    IF ("Appl.-to Service Entry" > 0) AND (CurrFieldNo <> 0) THEN
    ERROR(Text046,FIELDCAPTION("Unit Price"));
    IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
    ...

    Cod existent 5

    ...      Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
    Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
    Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
    ...

    Înlocuirea cod 5

    ...      Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
    Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
    Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
    Text046@1100 : TextConst 'ENU=You cannot modify the document because it is based on a service contract.';
    ...

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

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!

×