Webservice buchen Item Journal Line

Bild Microsoft Dynamics NAV 2017

Webservice buchen Item Journal Line

Beitragvon stony » 6. Mai 2019 20:02

Hallo,
wir haben eine C#-Programm, welches ĂĽber Webservice die Tabelle Item Journal Line befĂĽllt. (und auch andere Tabellen)
Danach wird auch ĂĽber dem Webservice eine Funktion in einer Codeunit aufgerufen, welche diese Buchung durchfĂĽhrt.
Aktuell haben wir ca. 30 mal dieses Programm im Einsatz.
Nun werden ĂĽber diesen Programm auch anderen NAV-Tabellen gelesen bzw. beschrieben.

Leider kommt es nun an manchen Tag vor, das wir ca. 20 Mal den Fehler bekommen:
The operation could not complete because a record was locked by another user. Please retry the activity.
Dieser Fehler bekommen wir auch teilweise, wenn wir Daten aus Tabellen lesen.
Z.B. haben wir eine eigene Tabelle für unsere Fertigungsaufträge, diese werden sowohl von NAV als auch von diesem Programm bearbeitet.

Anbei die NAV-Code, welcher z.B. eine Buchung durchfĂĽhrt und eine Etikett ausdruckt.
Bin mir nicht sicher ob hier das COMMIT vielleicht das Problem macht.

Wo könnte ich eine Beispiel-Code finden, welcher so eine Buchung durchführt und auch eine Fehler abfängt.

Code: Alles auswählen
TempItemJournalLine.RESET;
TempItemJournalLine.SETRANGE("Item No.",Artikelnr);
IF TempItemJournalLine.FINDLAST THEN BEGIN
  IF NOT ItemJnlPostBatch.RUN(TempItemJournalLine) THEN BEGIN
    COMMIT;
    ERROR(GETLASTERRORTEXT);
  END ELSE BEGIN  //Dient zum Ausdrucken

    CLEAR(ItemLedgerEntry);
    PDFFilename := "3TierMgtm".ServerTempFileName('pdf');

    ItemLedgerEntry.RESET;
    ItemLedgerEntry.SETRANGE("Posting Date",TODAY);
    ItemLedgerEntry.SETRANGE("Item No.",Artikelnr);

    IF ItemLedgerEntry.FINDLAST THEN BEGIN   
      ItemLedgerEntry2.RESET;
      ItemLedgerEntry2.SETRANGE("Entry No.",ItemLedgerEntry."Entry No.");
        IF ItemLedgerEntry2.FINDLAST THEN BEGIN

        REPORT.SAVEASPDF(50002, PDFFilename, ItemLedgerEntry2);

        Path := PDFFilename;
        GetPathFilename(Path, FileN);

        CLEAR(PrinterSelection);
        IF PrinterSelection.GET(USERID, 50002) THEN;

        Printing.PrintPDFFoxitReader(Path + FileN, PrinterSelection."Printer Name");
      END;
    END;
  END;
END;


Danke und lg
stony
stony
 
Beiträge: 1100
Registriert: 24. April 2006 11:31
Bezug zu Microsoft Dynamics: End-Anwender

Re: Webservice buchen Item Journal Line

Beitragvon fiddi » 7. Mai 2019 07:43

Hallo,

dein größtes Problem dürfte sein, dass du nach dem Buchen kein COMMIT machst.
Das Drucken dauert zu lange und blockiert deine Tabellen. Daher dĂĽrfte es sinnvoll sein, vor dem Druck einen COMMIT durchzufĂĽhren.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Webservice buchen Item Journal Line

Beitragvon Mathes » 7. Mai 2019 09:39

...vielleicht bring auch ein SETCURRENTKEY auf den passenden Key vor den Artikelposten etwas Performanceverbesserung
Mathes
 
Beiträge: 86
Registriert: 24. August 2005 11:02
Arbeitsort: Hessen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV 2009


ZurĂĽck zu NAV 2017

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast