[gelöst] löschen von Artikel

12. September 2006 11:49

Hallo,

die Funktion delete gibt als Rückgabewert ein true oder false, je nachdem ob der Artikel gelöscht werden konnte oder nicht. Mich interessiert jedoch zuerst ob ich den Artikel überhaupt löschen könnte, so in der Art mit einer Funktion deletepossible. Muß ich in dieser Funktion alle Tabellen aus dem delete-Trigger vom der Artikeltabelle einbauen oder geht das auch einfacher :-?

Danke Jürgen :wink:
Zuletzt geändert von Juergen_G am 12. September 2006 13:11, insgesamt 1-mal geändert.

12. September 2006 12:02

Hallo Jürgen,

legen im OnDelete-Trigger eine neue lokale Variable (Name: "ItemTemp") vom Tye "Record" und Subtype "Item" an. Die Variablen-Eigenschaft "Temporary" musst du auf "Yes" (True) setzen. Du könntest nun im C/AL-Code folgendes schreiben:
Code:
IF ItemTemp.GET("No.") AND ItemTemp.Delete THEN
  MESSAGE('Artikel könnte gelöscht werden.');

Gruß, Marc

12. September 2006 12:12

In Codeunit 361 MoveEntries in der Funktion MoveItemEntries laufen etliche Prüfungen auf den Posten ab, die die Löschung verhindern wenn z.B offene Posten vorhanden sind. Diese müßte man für eine Vorabprüfung extrahieren.

Wenn Artikel gelöscht werden, die vorher in ein Buchungsblatt eingefügt wurden, bleiben diese übrigens dort stehen. Beim Verbuchen gibt es in solchen Fällen einen Abbruch.

12. September 2006 13:11

Danke für die schnellen Antworten,

ich werde eine Funktion wie sie Marc beschrieben hat testen.

mfG Jürgen

22. September 2006 14:29

Der Vorschlag von Marc hat leider nicht funtkioniert. Die Funktion MoveItemEntries aus der Codeunit 361 ist auch nicht optimal, es werden nicht alle Posten kontrolliert. Zusätzlich habe ich festgstellt das ein locktable auf eine Tabelle welche von einem Flowfield verwendet wird im OnAfterGetrecord in einem Formular nicht so toll ist, denn dann bekommt man einen Fehler daß eine Änderung in der Datenbank nicht durchgeführt werden kann.

Ich habe es nun so gelöst, daß ich alle notwendigen Posten und Einkaufszeilen prüfe, ob in diesen der Artikel vorhanden ist.

mfG

22. September 2006 15:41

Die Prüfungen in MoveItemEntries sollen eine Verfälschung des Inventarwerts verhindern, wenn z.B. noch nicht alles fakturiert und anschließen reguliert wurde oder Bewegungen im laufenden Geschäftsjahr vorhanden sind. Wenn grundsätzlich nur Artikel löschbar sein dürfen, die nie eine Bewegung hatten, dann müssen diese Prüfungen in der Tat verschärft werden.