Codeunit 1 Sammlung Funktions IDs

Bild Tipps & Tricks zu den Dynamics NAV Versionen
Hier bitte keine Fragen stellen, sondern nur bereits vorhandene Tricks veröffentlichen.
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie
Hier bitte keine Fragen stellen, sondern nur bereits vorhandene Tricks veröffentlichen.

Codeunit 1 Sammlung Funktions IDs

Beitragvon holger1076 » 22. November 2011 11:50

Hallo,

wie die meisten vielleicht wissen hat ja die Codeunit 1 bestimmte "magische" Trigger welche leider nicht wirklich gut dokumentiert sind (Bsp. ID 99 -> steuert NAS). Allerdings habe ich vergeblich nach einer Liste hierĂĽber gesucht welche ID was tut. Aber vielleicht kann ich die ja mit eurer Hilfe komplettieren:


ID 1 - Damit konnte man in der Vergangenheit ein automatisches Hauptmenü triggern welches auch über F12 aufgerufen wurde. Mit Nav 2009 hat das allerdings einen unerwünschten Nebeneffekt, da hier das eingestellte Haupmenü auch bei anderen Aktivitäten in anderen Forms getriggert wird

NAV 2009 R2
ID 25 - GetDatabaseTableTriggerSetup
ID 26 - OnDatabaseInsert
ID 27 - OnDatabaseModify
ID 28 - OnDatabaseDelete
ID 29 - OnDatabaseRename

Quelle: http://mibuso.com/blogs/mandyk/2011/01/ ... n-2009-r2/

Meiner Kenntnis setzen hierauf z.B. der Objekt Manager Advanced auf um die Source Code-Ă„nderungen mitzubekommen.

ID 99 - Code wird von NAS getriggert
Zuletzt geändert von holger1076 am 22. November 2011 16:54, insgesamt 1-mal geändert.
GruĂź Holger
holger1076
Microsoft Partner
Microsoft Partner
 
Beiträge: 165
Registriert: 27. April 2006 08:00
Realer Name: Holger Ensslen
Arbeitsort: diverse
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.0,5.0,2009

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon McClane » 22. November 2011 12:08


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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon Natalie » 22. November 2011 16:13

ID 109 MakeCode: :greenarrow: http://www.comporsys.de/dynamics-nav-bl ... de-feldern
Filtert ĂĽberflĂĽssige Steuerzeichen aus Codefeldern.

Im Standard bereits vorhanden:
  • MakeDateTimeText (114)
  • MakeDateText (105)
  • MakeTimeText (106)
  • MakeText (107)
  • MakeDateTimeFilter (214)
  • MakeDateFilter (205)
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon JanGD » 22. November 2011 17:29

Trigger 26 bei Objekt import durch txt wird NICHT ausgelöst. Dies ist ein Bug, welcher IDYN an MS reportet hat.

Aus Codeunit 1 W1 2009R2:
    1 Run
    2 ApplicationVersion
    3 ApplicationBuild
    4 ApplicationLanguage
    5 SetGlobalLanguage
    6 CodeCoverage
    11 FindPrinter
    12 AutoFormatTranslate
    14 ReadRounding
    15 CaptionClassTranslate
    20 GetGlobalTableTriggerMask
    21 OnGlobalInsert
    22 OnGlobalModify
    23 OnGlobalDelete
    24 OnGlobalRename
    25 GetDatabaseTableTriggerSetup
    26 OnDatabaseInsert
    27 OnDatabaseModify
    28 OnDatabaseDelete
    29 OnDatabaseRename
    30 CompanyOpen
    31 CompanyClose
    50 DefaultRoleCenter
    51 GetSystemIndicator
    99 NASHandler
    105 MakeDateText
    106 MakeTimeText
    107 MakeText
    114 MakeDateTimeText
    116 LaunchApp
    117 SelectStyleSheet
    118 ManageStyleSheets
    205 MakeDateFilter
    214 MakeDateTimeFilter
JanGD
 
Beiträge: 1765
Registriert: 19. März 2008 12:33
Arbeitsort: NRW
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013R2

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon Timo Lässer » 22. November 2011 22:07

Folgende Funktion wird zwar mit den Standard-Datenbanken nicht ausgeliefert, wurde jedoch mit Version 4.00 (oder da in dem Dreh) eingeführt und in der dazugehörigen Changes.doc beschrieben:

212122 GetUidOffset
Code: Alles auswählen
GetUidOffset() : Integer
EXIT(50000);


Diese Funktion legt fest, ab welcher ID die Variablen, Funktionen und TextConst hochgezählt werden.
Je nach verwendeter Lizenz startet die Hochzählung nämlich sonst bei 1 (welches für den NAV-Standard verwendet wird), oder im Mrd.-Bereich.
Für Branchenlösungen empfiehlt es sich, in der Funktion die Basis-ID des von Microsoft zugwiesenen Nummernbereich (5.xxx.xxx) zu verwenden.
FĂĽr kundenindividuelle Anpassungen bietet sich (die oben verwendete) ID 50.000 an, welche allgemein mit der "Customer Object Area" in Verbindung gesetzt wird. ("50.000er-Bereich")
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: 5274
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: Codeunit 1 Sammlung Funktions IDs

Beitragvon winfy » 23. November 2011 09:46

Einige habe ich auch gefunden und versucht die bisherigen Tipps zusammengetragen. :-D

Die rot markierten IDs sind (bisher) undokumentierte Trigger, welche im Standard nicht mit einer globalen Funktion in der CU 1 versehen sind.
Die orange markierten IDs sind plausibel aber unsicher, hier muss die Quelle noch geprĂĽft werden.

Zunächst noch eine allgemeine Information:
:greenarrow: Description of the reserved C/SIDE Function IDs in Codeunit 1 (Link)
Wobei man sich anscheinend aber auch nicht gänzlich nur auf die ersten 20.000 IDs beschränkt. :wink:

    1 CompanyOpen (<= NAV 3)
    2 ApplicationVersion
    3 ApplicationBuild
    4 ApplicationLanguage
    5 SetGlobalLanguage
    6 CodeCoverage (Link)
    11 FindPrinter (Link)
    12 AutoFormatTranslate (Link)
    14 ReadRounding (Link)
    15 CaptionClassTranslate (Link)
    20 GetGlobalTableTriggerMask (>= NAV 4)
    21 OnGlobalInsert (>= NAV 4)
    22 OnGlobalModify (>= NAV 4)
    23 OnGlobalDelete (>= NAV 4)
    24 OnGlobalRename (>= NAV 4)
    25 GetDatabaseTableTriggerSetup (>= NAV 2009 R2) (Link) :idea: holger1076
    26 OnDatabaseInsert (>= NAV 2009 R2) (Link) (Link) :idea: holger1076, JanGD
    27 OnDatabaseModify (>= NAV 2009 R2) (Link) :idea: holger1076
    28 OnDatabaseDelete (>= NAV 2009 R2) (Link) :idea: holger1076
    29 OnDatabaseRename (>= NAV 2009 R2) (Link) :idea: holger1076
    30 CompanyOpen (>= NAV 4)
    31 CompanyClose (>= NAV 4)
    50 DefaultRoleCenter (>= NAV 2009)
    51 GetSystemIndicator (>= NAV 2009 R2) (Link)
    75 GetPaperTrayForReport (>= NAV 2013) (Link) :idea: winfy
    99 NASHandler (Link)
    100 MakeSpecial (Link)
    101 MakeBoolean (Link)
    102 MakeOption (Link)
    103 MakeInteger (Link)
    104 MakeDecimal (Link)
    105 MakeDateText
    106 MakeTimeText
    107 MakeText
    109 MakeCode (Link) :idea: Natalie
    110 MakeBinary (Link)
    111 MakeBLOB (Link)
    112 MakeBigInteger (Link)
    113 MakeDuration (Link)
    114 MakeDateTimeText (>= NAV 4) (Link)
    115 MakeGUID (Link)
    116 LaunchApp (>= NAV 2009)
    117 SelectStyleSheet (>= NAV 2009)
    118 ManageStyleSheets (>= NAV 2009)
    120 OnReportRun (Link) :idea: McClane
    200 MakeSpecialFilter (Link)
    201 MakeBooleanFilter (Link)
    202 MakeOptionFilter (Link)
    203 MakeIntegerFilter (Link)
    204 MakeDecimalFilter (Link)
    205 MakeDateFilter
    206 MakeTimeFilter (Link)
    207 MakeTextFilter (Link)
    209 MakeCodeFilter (Link)
    210 MakeBinaryFilter (Link)
    211 MakeBLOBFilter (Link)
    212 MakeBigIntegerFilter (Link)
    213 MakeDurationFilter (Link)
    214 MakeDateTimeFilter (>= NAV 4)
    215 MakeGUIDFilter (Link)
    304 Fmt Decimal (<= NAV 4)
    404 Eval Decimal (<= NAV 4)
    10001 LogInStart (<= NAV 3)
    10002 LogInEnd (<= NAV 3)
    10011 GetSeparateDateTime (>= NAV 4) (Link)
    212122 GetUidOffset (Link) :idea: Timo Lässer
    1000000 BaseApplicationBuild (>= NAV 2009)
    1100000 AccessToCartera (>= NAV ES 4) (Link)
    1100001 BaseApplicationBuild (= NAV ES 4)
    1140000 BaseApplicationBuild (= NAV 4)
    1102601001 ValidateApplicationlLanguage (>= NAV 2009)
    1102601005 LookupApplicationlLanguage (>= NAV 2009)

mfg,
winfy
Zuletzt geändert von winfy am 3. Dezember 2014 15:47, insgesamt 2-mal geändert.
"Das Wissen ist das einzige Gut, das sich vermehrt, wenn man es teilt.
Wer nichts weiĂź, muss alles glauben."
...Marie von Ebner-Eschenbach
Benutzeravatar
winfy
 
Beiträge: 873
Registriert: 15. Oktober 2009 08:19
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: NAV 3.x - BC 23.x

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon Timo Lässer » 24. April 2013 12:26

McClane hat geschrieben:ID120 kann OnReportRun triggern. :greenarrow: http://blogs.msdn.com/b/nav/archive/201 ... usage.aspx

Leider hat die Funktion einen kleinen Haken: Es lassen sich keine Reports mehr modal starten, da Schreibtransaktionen und RUNMODAL sich gegenseitig ausschlieĂźen.

Workaround:
Man nehme eine SingleInstance-Codeunit (z. B. meine immer wieder beliebte GlobalVariableManagement) und definiere dort zwei Funktionen:
LogReportExecution(ReportID : Integer)
und
WriteRepExecLog2Database()

In der LogReportExecution füllt man nur eine temporäre Tabelle.
In der WriteRepExecLog2Database überträgt man die temporären Datensätze in die Datenbank.

In Codeunit 1 - OnReportRun ruft man dann die Funktion LogReportExecution auf.
In Codeunit 1 - LogInEnd ruft man dann die Funktion WriteRepExecLog2Database auf.

Vorteil: Funktioniert auch mit modal gestarteten Reports

Nachteile:
Die Daten stehen erst nach Ende der Benutzer-Session zur VerfĂĽgung.
Die gesammelten Daten landen im Nirvana, wenn der Client abstĂĽrzt.

Meiner Meinung nach sind die Nachteile jedoch akzeptabel, da man in der Regel keine 100%ig genauen Daten in Echtzeit benötigt, sondern einen Überblick haben möchte, ob und wie oft ein bestimmter Report gestartet wurde.
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: 5274
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: Codeunit 1 Sammlung Funktions IDs

Beitragvon McClane » 24. April 2013 12:55

Timo Lässer hat geschrieben:Leider hat die Funktion einen kleinen Haken: Es lassen sich keine Reports mehr modal starten, da Schreibtransaktionen und RUNMODAL sich gegenseitig ausschließen.

Doch, das geht :shock: Meinst du ein simples report.runmodal(123456, true, false, rec) oder etwas anderes?

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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon Timo Lässer » 24. April 2013 13:29

McClane hat geschrieben:
Timo Lässer hat geschrieben:Leider hat die Funktion einen kleinen Haken: Es lassen sich keine Reports mehr modal starten, da Schreibtransaktionen und RUNMODAL sich gegenseitig ausschließen.

Doch, das geht :shock: Meinst du ein simples report.runmodal(123456, true, false, rec) oder etwas anderes?

Ja genau, ich meine ein REPORT.RUNMODAL(ReportSelection."Report ID",TRUE,FALSE,SalesHeader);, wie es z. B. die Codeunit 229 aufruft.
(Hier beim Kunden ist die RunTime 6.00.33194 im Einsatz.)
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: 5274
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: Codeunit 1 Sammlung Funktions IDs

Beitragvon McClane » 24. April 2013 14:20

In meiner NAV5 hat es problemlos funktioniert. Hab aber in dem Blog-Beitrag die Einträge mit dem runmodal-Problem gesehen.

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.
McClane
Moderator
Moderator
 
Beiträge: 3864
Registriert: 2. April 2008 10:00
Realer Name: Stefan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2016

Re: Codeunit 1 Sammlung Funktions IDs

Beitragvon HattrickHorst » 2. Dezember 2013 19:18

Wenn man hier schon den Umweg über eine SI-Codeunit gehen muß, könnte man dann nicht auch diese CU mit einem Timer belegen, so daß die Einträge im Report Log bspw. alle fünf Minuten weggesichert werden würden? Oder seht ihr da ein anderes Folgeproblem (z.B. Performance oder dergleichen)?

Ich meine, dann hätte man die Wahrscheinlichkeit von Datenverlust durch einen Absturz des Clients reduziert und gleichzeitig die Aktualität des Report Logs erhöht. Es gibt ja viele Benutzer, die melden sich morgens einmal an und abends dann erst wieder ab.

Hab ich das jetzt richtig verstanden, daß die Lösung nach OnInitReport greift? Das heißt doch dann wohl, daß der Eintrag im Report Log bei einem Fehler zur Laufzeit des Reports trotzdem bestehen bleibt, oder? Gibt es keinen Trigger, der nach OnPostReport läuft?

Wie kann man nur Reports verfolgen, die auch eine Ausgabe erzeugen? Ich meine, Claus schreibt ja in seinem Blog, daß FindPrinter nur aufgerufen wird, wenn UseSystemPrinter auf Nein steht. Eine Black bzw. White List, wie in den Kommentaren vorgeschlagen, finde ich auch nicht so praktikabel, weil man ja dann bei jedem neuen Report auch immer diese Einrichtung mit beachten muß. Ich denke, das geht auf lange Sicht schief, besonders wenn unterschiedliche Kunden unterschiedliche Lösungen haben, die nicht immer den Report Log enthalten.
HattrickHorst
 
Beiträge: 585
Registriert: 15. Januar 2009 19:32
Wohnort: Bochum
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.00C - heute


ZurĂĽck zu NAV Tipps & Tricks

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste