Ga naar inhoud

Scripts, hooks en acties

Waar instellingen ophouden, beginnen scripts: kleine stukjes JavaScript die op de server draaien. Je gebruikt ze om velden te berekenen, gegevens te controleren bij het bewaren, e-mails te sturen of een knop te maken die iets doet.

Waar Vorm Voor
Een veld: Relevantie conditie, Default waarde berekening, Berekening De laatste expressie is het resultaat Slimme velden
Een entiteit › Hooks De functies onCreate(), onUpdate() Controleren en aanvullen bij het bewaren
Een entiteit › Acties Een script per record Een knop in het menu van een record
Job types De laatste expressie is het resultaat Taken op de achtergrond of op een schema
Een e-mailsjabloon › Variabelen De laatste expressie is de waarde Variabelen in een e-mail
Vluchten › Aanrekening vlucht rekenwijze Twee functies Vluchten aanrekenen
Conformiteit › Conformiteitsregels status(), info(), until() Recency
Lidmaatschap › Inschrijvingtypes totalCost() De prijs van een inschrijving

Scripts schrijf je in een editor met kleurcodes, aanvulling en foutmeldingen: hij kent de velden van de entiteit en de functies die je kan gebruiken. Een rode golflijn betekent dat er iets niet klopt — Tabbr controleert het script niet nog eens bij het bewaren, dus let erop.

Het record heet naar zijn entiteit: flight, person, airplane, membership, signup, … Je leest en schrijft velden met hun naam (hoofdletters maken niet uit) of de ingebouwde eigenschap:

flight.startField // ingebouwd veld
flight.toestel // eigen veld 'Toestel' (een verwijzing)
flight.toestel.soort // een veld van het gerelateerde vliegtuig
flight['Passagier/instructeur'] // namen met spaties of tekens: tussen [ ]
signup.activity?.date // ?. als iets leeg kan zijn

Een hook draait wanneer een record bewaard wordt, vóór het opgeslagen wordt (na de berekende velden). Wat je aan het record wijzigt, wordt mee bewaard.

Een hook in de editor met een onUpdate-functie die velden controleert
Een hook in de editor met een onUpdate-functie die velden controleert
Functie Wanneer
onCreate() Bij een nieuw record.
onUpdate() Bij een wijziging. original is het record zoals het was.

Hooks draaien in de volgorde van de lijst (sleep om te ordenen) en alleen als ze enabled zijn.

// landingsveld = startveld als het leeg is; '+1' als passagier bij een initiatievlucht
function onUpdate() {
if (flight.landing && !flight.landingField) {
flight.landingField = flight.startField
}
if (flight.initiatievlucht && !flight['passagier/instructeur']) {
flight['passagier/instructeur'] = '+1'
}
}

Met Testen open je Hook testen: kies de methode (onCreate, onUpdate) en een bestaand record, en bekijk wat de hook zou doen en wat hij logt — zonder iets te bewaren. Met trace zie je in het logboek ook elk veld dat gelezen of geschreven wordt.

Een actie is een knop in het menu ⋮ van een record (en in bulk, voor een Selectie in een lijst).

Instelling Betekenis
Naam, Omschrijving Wat de gebruiker ziet.
Rollen die deze acties kunnen uitvoeren Leeg = iedereen die het record ziet.
Voor welke records Een filter: bv. alleen personen zonder login.
Script Wat de actie doet.
Actie 'Verstuur welkomstmail' op een persoon
sendEmailByTemplate('welkomstmail', person)

Gebruik acties voor wat er gebeurt — e-mails, een job starten, een record dupliceren. Wijzigingen aan velden van het record in een actie worden niet bewaard: daarvoor zijn berekeningen en hooks.

Actie 'Verlengen' op een document: een kopie met een nieuwe einddatum
duplicateEntity(officialDocument, { 'Geldig tot': '2028-08-20' })

console.info(…), console.warn(…), console.error(…) schrijven naar het logboek. Je ziet het in de testvensters (Debug logs) en, als beheerder, in de log viewer in de header.

De volledige lijst van functies — meldingen, e-mail, datums, queries, jobs, rollen — staat in de script-referentie.