[Gelöst] Fehler beim Status ändern eines Fertigungsauftrages

24. April 2007 09:52

Guten Morgen

Bei Status ändern eines Fertigungsauftrages (FA) von "Fest geplant" auf "Freigegeben" erscheint des öfteren untenstehende Fehlermeldung. Nachdem mit OK quittiert wurde und das ganze nochmals versucht wird, klappt es ohne Probleme.

Ist jemandem dieses Problem bekannt? (Die Chance, dass genau beim ändern immer auch noch ein anderer User etwas ändern will, sehe ich bei 4 Usern, die das Modul überhaupt brauche als eher gering an)

[img]http://www.familie-rissi.ch/Images/fehlermeldung.png[/img]

Edit: ich sag mal gelöst... Jetzt ist's nur noch am Entwickler, das ganze richtig zu proggen ^^
Zuletzt geändert von Bender am 25. April 2007 15:01, insgesamt 1-mal geändert.

24. April 2007 10:22

Es sieht mir nach einem "selbstgestrickten" FA Formular aus... Gibt es den fehler mit dem Standardformular auch?

24. April 2007 10:32

Hallo Bender,

die Fehlermeldung kann auch produziert wenn - ich sag mal vorsichtig - "blöd" programmiert worden ist. Wie dax schon sagte, handelt es sich um eine eigene Form. Was generell natürlich nicht schlimm ist, nur ist so eine Einschätzung wo der Fehler herkommt nur schlecht zu treffen.

Versuch doch mal über die Standard-Form den Status zu ändern. Dann könnte man schon mal sagen, dass es mit Sicherheit an eurer Anpassung liegt.

Ist denn an der Codeunit 5407 Prod. Order Status Management was geändert worden?

Gruß, Marc

24. April 2007 11:41

öhm ja, ein bisschen wurde herumgeschraubt an der C5407 *g*

Kann nicht sagen, obs im Standardformular noch auftritt, da das Standardformular überschrieben wurde...

Und ich denke den Code zu posten bringt vermutlich nicht so viel, da ja wie schon erwähnt, Formular selbst gestrickt wurde...

24. April 2007 11:52

Häufigste Ursache für diese Meldung ist, dass der aktuelle Record nicht als VAR (Value as Reference) an eine Funktion übergeben wurde und anschließend von der Funktion verändert wurde.
Dies muss nicht direkt bei der ersten Übergabe an eine Funktion der Fall sein, sondern kann auch noch weiter verschachtelt sein, also die Funktion übergibt den erhaltenen Record dann wieder an eine andere Funktion, welche wieder an eine weitere Funktion übergibt, ........
Irgendwo auf diesem Wege ist einer der Parameter nicht als VAR gekennzeichnet, wodurch Navision mit einer Kopie arbeitet und die Form von der Änderung erst erfährt, wenn es schon zu spät ist.

24. April 2007 12:00

Timo Lässer hat geschrieben:Häufigste Ursache für diese Meldung ist, dass der aktuelle Record nicht als VAR (Value as Reference) an eine Funktion übergeben wurde und anschließend von der Funktion verändert wurde.
Dies muss nicht direkt bei der ersten Übergabe an eine Funktion der Fall sein, sondern kann auch noch weiter verschachtelt sein, also die Funktion übergibt den erhaltenen Record dann wieder an eine andere Funktion, welche wieder an eine weitere Funktion übergibt, ........
Irgendwo auf diesem Wege ist einer der Parameter nicht als VAR gekennzeichnet, wodurch Navision mit einer Kopie arbeitet und die Form von der Änderung erst erfährt, wenn es schon zu spät ist.


So ähnlich wollte ich das auch sagen :-)

Die Form ändert wahrscheinlich den Datensatz ab, den sie gerade selbst anzeigt. Deshalb hat dann "ein anderen Anwender" eine Änderung vorgenommen...

24. April 2007 13:23

mal danke für die Antworten. D.h. ich schaue die verbundenen Code-Units und ev. auch noch Tabellen/Forms an, um dann ev. auf den Fehler zu stossen. Oder gibts da ne einfachere Möglichkeit?

25. April 2007 09:05

Bender hat geschrieben:mal danke für die Antworten. D.h. ich schaue die verbundenen Code-Units und ev. auch noch Tabellen/Forms an, um dann ev. auf den Fehler zu stossen. Oder gibts da ne einfachere Möglichkeit?

Du könntest dafür auch den Debugger nutzen. Über Extras - Debugger schaltetst du ihn ein. Außerdem würde ich den Punkt "Breakpoint on Triggers" einschalten. Der Debugger zeigt dir dann genau, welche Code er ausführt.

Gruß, Marc

25. April 2007 10:19

Danke Marc
Noch schnell eine Zusatzfrage: Warum erscheint der Fehler nur in 1 von 40 Fällen? Ich meine, der Schritt ist ja immer der gleiche...

25. April 2007 11:27

Bender hat geschrieben:Warum erscheint der Fehler nur in 1 von 40 Fällen?

Passiert das wirklich immer bei jedem 40. Fertigungsauftrag? Oder ist das nur grob geschätzt?.

Bender hat geschrieben:Ich meine, der Schritt ist ja immer der gleiche...

Das meinst du. :-) Ich denke aber, dass es schon irgendwo ein Unterschied geben wird - auch wenn er noch so klein und im Moment nicht ersichtlich ist.

Oder du hast recht und es ist soetwas programmiert wie:
Code:
IF ProdOrderCounter=40 THEN BEGIN
  ERROR('Ein anderer Anwender hat den Datensatz...');
  ProdOrderCounter:=0;
END ELSE
  ProdOrderCounter:=ProdOrderCounter+1;


(Das ist jetzt spaßig gemeint)

Gruß, Marc

25. April 2007 11:50

LOL

natürlich meinte ich nur grob geschätzt...

wenigstens konnte ich den Fehler soweit eingrenzen, dass der Debugger 3 Meldungen ausgeschossen hat...