Änderungsprotokoll durch Code (im CC)

15. Oktober 2010 11:12

Hallo,

folgenden Code von Timo hab ich benutzt, um durch Programmierung veranlasste Änderung im Änderungsprotokoll mitzuschreiben :
( ich hab die Zeilen mit dem // <--- in meinen Code eingebaut)

OnRun(VAR Rec : Record "Sales Invoice Header")
FIND;
xRecRef.GETTABLE(Rec); // <---
"No. Printed" := "No. Printed" + 1;
MODIFY;
RecRef.GETTABLE(Rec); // <---
ChangeLogMgt.LogModification(RecRef,xRecRef); // <---
COMMIT;

Leider erhalte ich die Fehlermeldung, daß ein anderer Benutzer den Datensatz geändert hat, nachdem er angezeigt wurde, und der ChangeLog-Aufruf wird gar nicht mehr ausgeführt.
Kann diese Fehlermeldung umgangen werden ?
Oder, wie kann erreicht werden, daß auch Zuweisungen im Code mitprotokolliert werden?

Gruß,
Michael

Re: Änderungsprotokoll durch Code (im CC)

15. Oktober 2010 11:22

Führe das ChangeLogMgt.LogModification vor dem MODIFY aus - macht der Standard auch so, wenn ich mich nicht irre.
Edit: Nee, macht der Standard nicht so, s.u..

Re: Änderungsprotokoll durch Code (im CC)

15. Oktober 2010 12:07

Vielen Dank für den Tip, werd ich hoffentlich heute noch ausprobieren können und natürlich antworten.

Gruß,
Michael

Re: Änderungsprotokoll durch Code (im CC)

15. Oktober 2010 12:56

Hm wird vielleicht doch nicht richtig sein.
Ich habe einen Blick in die Codeunit DimensionManagement geworfen. Dort macht es der Standard so:

Code:
  IF DefaultDim.GET(...)
  THEN BEGIN
    xRecRef.GETTABLE(DefaultDim);
    DefaultDim.VALIDATE("Dimension Value Code",ShortcutDimCode);
    DefaultDim.MODIFY;
    RecRef.GETTABLE(DefaultDim);
    ChangeLogMgt.LogModification(RecRef,xRecRef);
  END ELSE BEGIN
    ...


Da du mit Rec arbeitest, bist du wahrscheinlich auf einer Form?
Dann führe nach deinem Code ein
Code:
CurrForm.UPDATE(FALSE);
aus.