Toepassen van client-side form scripting binnen Dataverse.
Form scripting wordt gebruikt om gedrag en interactie op formulieren binnen Model-Driven Apps te sturen.
Deze pagina beschrijft:
Form scripting maakt het mogelijk om dynamisch gedrag toe te voegen aan formulieren.
π‘ Gebruik Form Scripting wanneer standaardfunctionaliteit zoals Business Rules onvoldoende mogelijkheden biedt.
Gebruik Form Scripting wanneer:
β Complexe logica nodig is
β Meerdere velden gecombineerd moeten worden
β Interactie met externe data nodig is
β Dynamisch gedrag niet mogelijk is via Business Rules
β Eenvoudige logica mogelijk is via Business Rules
β Server-side validatie vereist is (gebruik Plugins)
π‘ Business Rules blijven altijd de eerste keuze voor eenvoudige UI-logica.
JavaScript wordt gekoppeld aan events van een formulier.
Scripts worden uitgevoerd wanneer een gebeurtenis plaatsvindt, bijvoorbeeld:
Form Event
β
JavaScript Handler
β
Business Logica
β
UI Update / Validatie
π‘ Scripts worden gekoppeld via Web Resources en Event Handlers.
Wordt uitgevoerd wanneer een formulier wordt geopend.
β Standaardwaarden instellen
β Velden zichtbaar maken
β Configuratie laden
Wordt uitgevoerd wanneer de waarde van een veld verandert.
β BTW berekenen
β Naamvelden combineren
β Secties tonen op basis van keuzes
// Phonenumber binding
unica.core.Field.addOnChangeSafe(
formContext,
"telephone1",
brenkeAccount.onChange_Phonenumber
);
π‘ Voeg OnChange handlers bij voorkeur toe tijdens OnLoad.
Wordt uitgevoerd tijdens het opslaan van een record.
β IBAN valideren
β Verplichte gegevens controleren
β Save stoppen bij fouten
core.UI = {
showField: function (formContext, fieldName, show) {
const control = formContext.getControl(fieldName);
if (control) {
control.setVisible(show);
}
}
}
core.UI = {
showSection: function (formContext, tabName, sectionName, show) {
const tab = formContext.ui.tabs.get(tabName);
if (!tab) return;
const section = tab.sections.get(sectionName);
if (section) {
section.setVisible(show);
}
}
}
core.UI = {
showTab: function (formContext, tabName, show) {
const tab = formContext.ui.tabs.get(tabName);
if (tab) {
tab.setVisible(show);
}
}
}
core.UI = {
setFieldDisabled: function (formContext, fieldName, disabled) {
if (!formContext || !fieldName) return;
const control = formContext.getControl(fieldName);
if (!control) {
console.warn(`Control not found: ${fieldName}`);
return;
}
if (typeof control.setDisabled === "function") {
control.setDisabled(!!disabled);
}
}
}
core.Field = {
setDefaultValue: function (formContext, name, value) {
const current =
core.Field.getValue(formContext, name);
if (
current === null ||
current === "" ||
(Array.isArray(current) && current.length === 0)
) {
core.Field.setValue(
formContext,
name,
value
);
}
}
}
core.Field = {
copyTextField: function (
formContext,
nameSource,
nameDestination
) {
const value =
core.Field.getValue(
formContext,
nameSource
);
core.Field.setTextValue(
formContext,
nameDestination,
value
);
}
}
core.IBAN = {
normalize: function (value) {
if (!value || typeof value !== "string")
return "";
return value
.replace(/\s+/g, "")
.toUpperCase();
}
}
Gebruik Form Scripting voor:
β IBAN-controle
β Postcodevalidatie
β Datumberekeningen
β Verplichte invoer
Form scripting ondersteunt gebruikersinteractie.
Bepaal de gewenste functionaliteit.
Ontwikkel de benodigde logica.
Publiceer het script als Web Resource.
Voeg het script toe aan het formulier.
Registreer:
Valideer functionaliteit, gebruikerservaring en prestaties.
unica.account
unica.contact
unica.opportunity
π© Te veel logica in OnLoad
π© Business Rules en JavaScript combineren zonder noodzaak
π© Dubbele Event Handlers
π© Geen rekening houden met performance
π© Alleen client-side validatie uitvoeren
π© Geen namespace-structuur gebruiken
π© Grote monolithische scripts ontwikkelen
Form Scripting maakt onderdeel uit van de UI & Interaction Layer.
Het bepaalt:
π‘ Form Scripting beΓ―nvloedt gebruikersgedrag en presentatie, niet het datamodel.
Form Scripting hangt nauw samen met:
Business Rule
β
Eenvoudige UI Logica
JavaScript
β
Complexe Form Logica
PCF Control
β
Custom UI Component
Plugin / API
β
Server-side Logica
Na toepassing van Form Scripting:
Form Scripting vormt daarmee een essentieel onderdeel van de UI & Interaction-laag binnen Model-Driven Apps en ondersteunt geavanceerde gebruikersinteractie wanneer standaardplatformfunctionaliteit niet voldoende is.