Geschäftslogik in Tabellen
Aufgrund der technischen Struktur der Veröffentlichung von Tabellen über Anveo Pages ist es notwendig, dass sich die gesamte Geschäftslogik innerhalb von Tabellen und Codeunits befindet – nicht in Formularen/Seiten. Konzeptionell ist dies von Anfang an sauberer, da sich eine Tabelle auf strukturelle Konsistenzen prüfen muss, weil Codeunits für die Arbeit mit Geschäftsprozessen vorgesehen sind und weil Formulare/Seiten lediglich Input/Output mit dem Anwendungsbenutzer darstellen.
Daher ist bei der Veröffentlichung einer Tabelle zu prüfen, ob sich Berechnungen oder Tests im Gegenstück – dem Formular/Seite im Dynamics Client – befinden, die in die Tabelle verschoben werden sollen.
xRec und CurrFieldNo
xRec wird in zahlreichen Tabellenfunktionen innerhalb von Dynamics verwendet und stellt den Datensatz vor einer Änderung dar. xRec kann in einem OnValidate Trigger verwendet werden, um zu testen, ob sich ein Feld tatsächlich geändert hat, z.B. im OnValidate Trigger für die Tabelle Customer.
xRec ist jedoch nur verfügbar, wenn eine Eingabe über ein Formular/Seite erfolgt. Das Fehlen von xRec bei Funktionen innerhalb von Tabellen und Codeunits ist eine Einschränkung von Dynamics, die bei der Verwendung des Dynamics Client nicht auffällt, da die Daten ausschließlich über Formulare und Seiten dort verändert werden und diese Seiten xRec automatisch anbieten. Ohne den xRec funktioniert der oben gezeigte Code nicht richtig.
Die Anveo Client Suite stellt die Funktion GetxRec in der Codeunit ACF Management zur Verfügung, so dass die Anveo Client Suite auch die xRec und CurrFieldNo korrekt setzt. In der Kernanwendung Anveo Client Framework gibt es eine Vorlage für die GetxRec-Funktion und Beispielcode für die korrekte Aktivierung. Gehen Sie wie im Folgenden dargestellt vor, damit Ihnen die xRec und CurrFieldNo für Ihre Tabellen zur Verfügung stehen:
- Legen Sie in Ihrer Tabelle die Funktion GetxRec mit folgenden Parametern an:
- Fügen Sie der Funktion GetxRec den folgenden Code hinzu:
ACFxRec.GETTABLE(xRec);
ACFManagement.GetxRec(ACFxRec,CurrFieldNo);
IF ACFxRec.NUMBER <> 0 THEN
ACFxRec.SETTABLE(xRec);
- Fügen Sie den folgenden Code am Anfang aller Tabellen-Trigger hinzu, die die xRec oder CurrFieldNo verwenden:
//+Anveo Client Suite Integration
GetxRec(xRec,CurrFieldNo);
//-Anveo Client Suite Integration
Die Ausführung des Codes ist kompatibel mit dem Classic, Role Tailored Client und dem Windows Client von Microsoft Dynamics NAV. Da der Code auf allen Clients läuft, ist keine separate Fallunterscheidung erforderlich. Der Aufruf dieser Funktion kann von jeder Tabelle im System beliebig oft durchgeführt werden, nur der erste Aufruf über die Anveo Client Suite liefert entsprechend xRec und CurrFieldNo.