Zakelijke logica in tabellen
Vanwege de technische structuur van het publiceren van tabellen via Anveo Pages is het noodzakelijk dat de gehele bedrijfslogica zich in tabellen en codeunits bevindt – niet in formulieren/bladzijden. Conceptueel gezien is dit vanaf het begin schoner, omdat een tabel zichzelf moet controleren op structurele consistentie, omdat codeunits zijn voorzien voor het werken met bedrijfsprocessen, en omdat formulieren/pagina’s alleen maar de input/output vertegenwoordigen waarbij de gebruiker van de applicatie betrokken is.
Als gevolg hiervan moet bij het publiceren van een tabel worden gecontroleerd of de berekeningen of tests zich in de tegenhanger – het formulier/pagina in de Dynamics-client – bevinden, die in de tabel moeten worden opgenomen.
xRec en CurrFieldNo
xRec wordt gebruikt in tal van tabelfuncties binnen de Dynamics en vertegenwoordigt het record voorafgaand aan een wijziging. xRec kan gebruikt worden in een OnValidate trigger om te testen of een veld daadwerkelijk veranderd is, bijvoorbeeld in de OnValidate trigger voor de klantentabel.
xRec is echter alleen beschikbaar wanneer een invoer via een formulier/pagina plaatsvindt. De ontbrekende xRec in het geval van functies in tabellen en codeunits is een beperking van de Dynamics die niet opvalt bij het gebruik van de Dynamics-client, omdat de gegevens alleen via de formulieren en pagina’s daar worden gewijzigd, en die pagina’s bieden automatisch xRec. Zonder de xRec zal de bovenstaande code niet goed werken.
Anveo Client Suite biedt de functie GetxRec in de codeunit ACF Management zodat Anveo Client Suite ook de xRec en CurrFieldNo correct instelt. In de Anveo Client Framework kernapplicatie is er een sjabloon voor de GetxRec-functie en voorbeeldcode voor correcte activering. Ga te werk zoals hieronder aangegeven, zodat u de xRec en CurrFieldNo voor uw tabellen beschikbaar zijn:
- Maak in uw tabel de functie GetxRec aan met de volgende parameters:
- Voeg aan de functie GetxRec de volgende code toe:
ACFxRec.GETTABLE(xRec);
ACFManagement.GetxRec(ACFxRec,CurrFieldNo);
IF ACFxRec.NUMBER <> 0 THEN
ACFxRec.SETTABLE(xRec);
- Voeg de volgende code toe aan het begin van alle tabel triggers die gebruik maken van het xRec of CurrFieldNo:
//+Anveo Client Suite Integration
GetxRec(xRec,CurrFieldNo);
//-Anveo Client Suite Integration
De uitvoering van de code is compatibel met de Classic, Role Tailored Client en Windows Client van Microsoft Dynamics NAV. Aangezien de code op alle klanten van toepassing is, is er geen afzonderlijk onderscheid tussen de verschillende gevallen nodig. Het oproepen van deze functie kan door elke tabel in het systeem even vaak worden uitgevoerd, alleen de eerste oproep met de Anveo Client Suite geeft de xRec en CurrFieldNo terug.