neue Erfassung : Beleg AfterSave oder BeforeSave Formular öffnen

OJansen

Neues Mitglied
Hallo zusammen,

gibt es eine Möglichkeit in der neuen Belegerfassung entweder vor oder nach dem speichern eines Beleges ein Formular zu öffnen ?
Die DCM scheidet hier ja aus, da sie auf dem Server ausgeführt wird.

Leider lässt sich der Belegspeichern Button ja nicht manipulieren um zb ein Kontexmenuaufruf zu starten.

Schöne Grüsse
Oliver Jansen
 
Hallo,

nach meinem Wissenstand:
Vorher (während der Erfassung) die notwendige Info´s abfragen und beim Speichern mit verarbeiten lassen.

Um was geht es denn genau?

VG
 
Um die Frage richtig beantworten zu können, müsste in der Tat erst die Frage von @KMoeser beantwortet werden.

Geht es um eine Messagebox? Dann schauen Sie in die Hilfe. Dort ist ein Beispiel für Messagebox vor dem Speichern.

Benötigen Sie die BelId, BelPosId? Dann wird es umfangreich und dazu haben wir auch leider noch kein Beispiel. Der Ansatz wäre die Antwort von @KMoeser.

Ist es eine allgemeine Frage, dann schauen Sie hier:
Vor dem Speichern des Beleges (Beispiel für VK, EK aber analog)
Anhängen an strVKBeleg.Sage.Wawi
Makro "Vor Änderung":
Wenn IsRunningOnServer()=False
...dann sind Sie vor dem Speichern auf dem Client. Hier können Sie einen Aufruf einer VBA-Methode des Applikationsservice ausführen (mit Übergabe des Belegobjektes), oder einen lokalen .Net-Dll-Applikationsservice mit dem aktuellen DataContainer (wie daraus ein Belegobjekt erzeugt werden kann, ist in der Hilfe beschrieben).

Nach dem Speichern des Beleges
Anhängen an strVKBeleg.Sage.Wawi
Makro "Nach Einfügen" und/oder "Nach Änderung"
Wenn IsRunningOnServer()=False
...dann sind Sie nach dem Speichern auf dem Client.
Hier muss man die Anwendereingabe in "mit Abschluss drucken und schließen" beachten.
Ist "mit Abschluss drucken und schließen" (Feldname IstAbschlussEndgueltig) = False, dann können Sie wie bei "Vor Änderung" verfahren.
Ist "mit Abschluss drucken und schließen" = True, dann müssen Sie die lokalen Variablen _Handle, _Erfassungsart und _Kennzeichen (ist das Belegkennzeichen) auswerten und gegebenenfalls den Beleg laden.

Ein Alternative dazu ist, die mit einem Hotfix ausgelieferte CM DataServiceVK/EKAfterSave. Hier erhalten Sie in beiden Fällen das Belegobjekt über den goStack. Außerdem wird die CM vor dem Drucken ausgeführt, falls das auch eine Rolle spielen sollten. Das wäre bei "mit Abschluss drucken und schließen" = True nicht der Fall. Da würde das angehängte Makro erst nach dem Druck ausgeführt.
 
Danke an alle,
anhängen an die Datenstruktur war die Lösung, welche ich als Einsprung gesucht hatte.... :)
 
in Alternative dazu ist, die mit einem Hotfix ausgelieferte CM DataServiceVK/EKAfterSave. Hier erhalten Sie in beiden Fällen das Belegobjekt über den goStack. Außerdem wird die CM vor dem Drucken ausgeführt, falls das auch eine Rolle spielen sollten. Das wäre bei "mit Abschluss drucken und schließen" = True nicht der Fall. Da würde das angehängte Makro erst nach dem Druck ausgeführt.

Können Sie das näher erläutern? Wo? Wie?
 
Wenn es um die Verwendung der Common Method (CM) geht, muss ich Sie leider an das Developer Programm verweisen. Ich kann sagen, das CMs immer auf dem Client ausgeführt werden. Insofern könnte man an dieser Stelle eine Interkation mit dem Anwender in Access implementieren. Der richtige Weg wäre aber, vor dem Speichern alle Interaktionen mit dem Anwender abzuschließen.
 
Ist es eine allgemeine Frage, dann schauen Sie hier:
Vor dem Speichern des Beleges (Beispiel für VK, EK aber analog)
Anhängen an strVKBeleg.Sage.Wawi
Makro "Vor Änderung":
Wenn IsRunningOnServer()=False
...dann sind Sie vor dem Speichern auf dem Client. Hier können Sie einen Aufruf einer VBA-Methode des Applikationsservice ausführen (mit Übergabe des Belegobjektes), oder einen lokalen .Net-Dll-Applikationsservice mit dem aktuellen DataContainer (wie daraus ein Belegobjekt erzeugt werden kann, ist in der Hilfe beschrieben).

Mit "Aufruf einer VBA-Methode" meinen Sie den Befehl "AufrufenVba", richtig?
Wenn ich bspw. dort als Parameter 1 "gbAddInRun("OLAppDesignerImDetail","gEntry",100)" eintrage, wird das AddIn erfolgreich an der Stelle aufgerufen (das klappt also super!), jedoch finde ich nirgends das Belegobjekt.

In unseren AddIns, mit der alten CM BelegBeforeSave, konnte das Belegobjekt mittels "goStack.oBag.oItem("Beleg")" abgerufen werden. Im ParameterBag steckt aber kein Objekt namens "Beleg". Ich könnte natürlich die BelegId mit übergeben und den Beleg manuell laden, aber das funktioniert logischerweise nur bei bereits geparkten/gepseicherten Belegen.
 
Vielen dank für die schnelle und hilfreiche Antwort!

Aus dem im WDB Eintrag 203334 hochgeladenen AddIn (OLAppDesignerImDetail80.mda) geht der Punkt hervor, wo ich nicht weiterkam.

Wer sich das herunterladen des AddIns sparen möchte:
Das Auslesen des Belegobjekts funktioniert in der gEntry Methode AddIn über:

Code:
Dim oBeleg As AbfBeleg
Set oBeleg = oBag.oItem(sArgs)
 
Zuletzt bearbeitet:
Sie müssen sKey verwenden, vermutlich ein Schreibfehler von Ihnen, denn man sieht es im AddIn ja. Ich möchte hier allerdings auch sagen, dass ich nicht tiefer zur Codierung etwas sage, da wie o.a. die Codierung über das Developer Programm geht.
 
Zurück
Oben