[gelöst] Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Bild Microsoft Dynamics NAV 2013 (aka "NAV 7")

[gelöst] Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon enh » 15. Juni 2021 18:12

Ich stehe gerade auf dem Schlauch. Ich habe eine Kopf / Zeilen Struktur, ähnlich wie Verkaufsaufträge. Wenn ich den Kopf anlege bzw. die Debitoren-Nr. eintrage dann sollen automatisch ein paar Zeilen mit bestimmten Artikeln angelegt werden. In welchem Trigger mache ich das geschickterweise? OnAfterInsertRecord in der Main page funktioniert nicht, auch OnValidate vom Feld Debitor-Nr. im Kopf funktioniert nicht. Hat jemand einen guten Tip?
Zuletzt geändert von enh am 17. Juni 2021 20:58, insgesamt 1-mal geändert.
enh
 
Beiträge: 2340
Registriert: 5. Februar 2014 15:42
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon sweikelt » 15. Juni 2021 21:07

enh hat geschrieben:auch OnValidate vom Feld Debitor-Nr. im Kopf funktioniert nicht


hmmm, den hätte ich sicherlich auch genutzt - und klappt auch bei mir wunderbar (BC18, aber die Logik muss in NAV2017 auch funktionieren)
Benutzeravatar
sweikelt
Microsoft Partner
Microsoft Partner
 
Beiträge: 1780
Registriert: 18. November 2010 10:15
Wohnort: Oschatz
Realer Name: Stephan Weikelt
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3-2018 | D365BC

Re: Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon Timo Lässer » 16. Juni 2021 08:01

enh hat geschrieben:OnAfterInsertRecord in der Main page funktioniert nicht

Wenn ich mich jetzt nicht komplett irre, dann wird der OnAfterInsertRecord auf einer Page VOR dem tatsächlichen Insert in die Datenbank ausgeführt.
Die anzulegenden Zeilen wĂĽrden somit den Header-Datensatz nicht finden, da er noch nicht existiert.

Ähnliches könnte beim OnAfterValidate der Debitornr. gelten: Wenn in der Page das Property DelayedInsert auf TRUE gesetzt ist, dann kann es sehr gut sein, dass der neu angelegte Datensatz beim OnAfterValidate noch nicht gespeichert ist.
Hier kannst du aber mit CurrPage.SAVERECORD sicherstellen, dass der Datensatz vor AusfĂĽhrung deines Programmcodes (zum anlegen der Zeilen) in der Datenbank gespeichert ist.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5275
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon Anistou » 16. Juni 2021 14:14

Willst Du das dieses nur auf der Page erfolgt oder darf es auch nach dem Eintragen in der Tabelle erfolgen?

Ich nutze meist den Event OnAfterInsert auf der Tabelle fĂĽr weitere Aktionen.

Auf der Page kommt zuerst OnNewRecord, dann trägst Du deine Daten ein. Wenn der Insert ausgeführt wird, dann auf der Page OnInsertRecord danach werden erst das Enevent OnBeforeInsertEvent und OnAfterInsertEvent auf dem Record ausgeführt.

Wenn es zwingend aus der Page heraus ausgefĂĽhrt werden soll, kann man sich mit einer Single Instance Codeunit behelfen.
Mit dem OnInsertRecord setzt man einen Boolean Wert und wenn man dann den OnAfterInsertEvent vom Record hat kann man dagegen prĂĽfen und die Boolean Wert im Anschluss zurĂĽck setzen.
Anistou
 
Beiträge: 15
Registriert: 6. Mai 2021 10:56
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon enh » 16. Juni 2021 15:25

Page wäre besser als Tabelle weil der Anwender sonst vermutlich die Zeilen nicht direkt sieht. Events wollte ich nicht nutzen um den Code besser lesbar zu halten, ist ja alles eigene Logik, eigene Tabellen.

SAVERECORD war glaube ich der Hinweis den ich gebraucht habe. Muss das nachher mal ausprobieren. Vielen Dank schon mal an alle fĂĽr die Tips!


Nachtrag: auch mit CurrPage.SAVERECORD hat es im OnInsertRecord nicht funktioniert, aber im Feld-OnValidate. Danke!
enh
 
Beiträge: 2340
Registriert: 5. Februar 2014 15:42
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon enh » 24. Juni 2021 13:46

Nochmal eine Frage:

Wenn ich das in der Tabelle (statt der Page) im OnValidate eines Feldes programmieren, dann habe ich das Problem dass ich in der Karten-Page beim Validieren des Felds noch keinen Insert hatte, daher existiert der Kopf nicht, und ich bekomme einen Fehler beim automatischen Anlegen der Zeilen.

Event Subscriber functions gibt es ja noch nicht.

Wie kann ich das in NAV 2013 R2 lösen?

(Anmerkung: Ich habe die Frage versehentlich unter NAV 2017 statt NAV 2013 R2 erfasst.)
Zuletzt geändert von McClane am 24. Juni 2021 13:50, insgesamt 2-mal geändert.
Grund: Thema nach 2013 verschoben
enh
 
Beiträge: 2340
Registriert: 5. Februar 2014 15:42
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Beim Anlegen eines Kopfs automatisch Zeilen anlegen

Beitragvon Timo Lässer » 24. Juni 2021 16:04

enh hat geschrieben:Wie kann ich das in NAV 2013 R2 lösen?


:greenarrow:
enh hat geschrieben:SAVERECORD war glaube ich der Hinweis den ich gebraucht habe.

[...] mit CurrPage.SAVERECORD [...] im Feld-OnValidate.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5275
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: [gelöst] Beim Anlegen eines Kopfs automatisch Zeilen anl

Beitragvon enh » 24. Juni 2021 16:32

Das ist ja fĂĽr die Page, meine neue Frage war ja was ich in der Tabelle machen muss...

Das Problem ist dass wenn der Anwender es erfasst er noch im Insert ist wenn das Validate auf Debitor-Nr. erfolgt. In der Page kann ich das mit CurrPage.SAVERECORD korrigieren, aber in der Table?
enh
 
Beiträge: 2340
Registriert: 5. Februar 2014 15:42
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: [gelöst] Beim Anlegen eines Kopfs automatisch Zeilen anl

Beitragvon Timo Lässer » 25. Juni 2021 09:11

Mir ist da auf Tabellenebene keine Lösung bekannt.
Aus dem Grund ist die Funktionalität der automatischen Textbausteine im NAV-Standard ebenfalls auf Page-Ebene programmiert.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5275
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: [gelöst] Beim Anlegen eines Kopfs automatisch Zeilen anl

Beitragvon fiddi » 25. Juni 2021 09:24

Hallo,

auf Tabellenebene kannst du nur mit temporären Tabellen oder Variablen arbeiten, die du dann beim Insert/Modify mit den richtigen Schlüsseln in die festen Tabellen kopierst.
Diese erzwungene Vorgehensweise ist auch der Grund, warum du höllisch aufpassen musst, ob und wann man in den Belegtabellen ein Feld wie z.B. "Location Code" nur zuweisen oder auch validieren darf.

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: 7092
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: [gelöst] Beim Anlegen eines Kopfs automatisch Zeilen anl

Beitragvon enh » 25. Juni 2021 14:41

Vielen Dank fĂĽr eure Tips! (Ich belasse es in der Page.)
enh
 
Beiträge: 2340
Registriert: 5. Februar 2014 15:42
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV


ZurĂĽck zu NAV 2013

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast