Validering
Dataenes to forsvarslinjer — det modellen garanterer, og reglene skjemaene på skjermene kontrollerer før de lagrer.
Feil data kommer inn av uoppmerksomhet, ikke av ondskap: et organisasjonsnummer med åtte sifre, en e-post uten krøllalfa, en rabatt på 300 %, en post lagret uten feltet resten av prosessen trenger. Å validere er å lukke de dørene — og i Keplin lukkes de i to lag, som det er greit å ikke blande sammen.
| Lag | Hvor det defineres | Når det virker | Hva det fanger |
|---|---|---|---|
| Modellen | I tabelleditoren (se Tabeller og felt) | Ved enhver skriving, uansett hvor den kommer fra | Det som aldri kan skje med dataene. |
| Feltreglene | I inspektøren for hvert skjemafelt, kategorien Validering | Når brukeren lagrer et skjema | Det personen holder på å skrive, med riktig melding ved siden av feltet. |
Tommelfingerregelen: det som er sant om dataene lever i modellen; det som er hjelp til brukeren lever i skjemaet. Et påkrevd felt er begge deler — du slår av Tillat NULL i modellen og slår på Påkrevd i feltet på skjermen.
Hva modellen garanterer
Dette heter ikke «valideringsregler», men det er det eneste forsvaret som ikke lar seg gå rundt: det gjelder for skjermene, for API-ene, for skriptene og for den som skriver direkte i databasen.
| Del | Hva den hindrer |
|---|---|
| Tillat NULL slått av | En post uten verdi i den kolonnen. |
| Type på kolonnen | Tekst i et datofelt, bokstaver i et tall. |
| Lengde / Presisjon · Skala | Tekst som er lengre enn kolonnen, eller penger med for mange desimaler. |
| Primærnøkkel (PK) | Dupliserte poster og poster som ikke lar seg identifisere. |
| unique-indeks | To kunder med samme organisasjonsnummer, to brukere med samme e-post. |
| Kolonne av typen enum | En status som ikke finnes i listen. |
| Fysisk relasjon + Når forelderen slettes | Foreldreløse barn, eller slettinger som drar med seg det de ikke skal. |

Dica
Før du skriver en regel i et skjema, spør deg: kan dette være sant i noen post, noen gang? Er svaret nei, er stedet modellen — for skjemaet er bare én av dørene dataene kommer inn gjennom.
Reglene for skjemafeltene
Alle skjemafelt — Tekstfelt, Tekstområde, Tall, Ja/nei, Nedtrekksliste, Dato, Farge, Filopplasting — har kategorien Validering i inspektøren. Det er der du erklærer hva det feltet godtar.
Slik kommer du dit:
- Åpne skjermen i designeren.
- Velg feltet — på lerretet, eller via fanen Struktur i inspektøren.
- I fanen Egenskaper åpner du kategorien Validering.

Påkrevd
Bryteren Påkrevd er den første og mest brukte av reglene: feltet må være fylt ut. Den er også den eneste som handler om det tomme — alle de andre slipper et tomt felt gjennom, fordi det tomme er Påkrevd sitt anliggende.

Standardreglene
Alt etter felttypen viser kategorien de reglene som gir mening:
| Regel | Hvor den dukker opp | Hva den kontrollerer |
|---|---|---|
| Maske | Tekstfelt | Formatet mens du skriver: # siffer, A bokstav, N alfanumerisk, * hva som helst — resten er fast tekst. Eks.: +351 ### ### ###. |
| Min. tegn | Tekstfelt, Tekstområde | Minste lengde på teksten. |
| Maks. tegn | Tekstfelt, Tekstområde | Største lengde på teksten. |
| Mønster (regex) | Tekstfelt, Tekstområde | Et regulært uttrykk verdien må oppfylle. Eks.: ^[A-Z]{2}\d{4}$. |
| Format | Tekstfelt | Ingen, Er e-post, Er telefonnummer eller Er tall. De utelukker hverandre: en verdi kan ikke være e-post og telefonnummer samtidig. |
| Minverdi | Tall | Den minste verdien som godtas. |
| Maksverdi | Tall | Den største verdien som godtas. |
| Lik feltet | Alle felt | Verdien må være lik den i et annet felt på skjermen — passordbekreftelsen, den gjentatte e-posten. |
Nota
Maske er skrivehjelp, ikke validering: den styrer det personen skriver, men den som garanterer formatet er Mønster (regex) eller Format. Et telefonnummer med maske kan bli stående halvferdig.
Validering med kode
Under standardreglene står linjen Validering, som sier Ingen validering — angi eller Angitt — rediger. Knappen … åpner en kodeeditor for reglene feltene ikke dekker: et organisasjonsnummer med kontrollsiffer, et IBAN, en dato som må være senere enn en annen, en forretningsregel bare din bedrift har.
Koden får value — den nåværende verdien i feltet — og returnerer:
true(eller ingenting) hvis verdien er gyldig;- en streng med feilmeldingen som skal vises, hvis den ikke er det.
const s = String(value ?? "").replace(/\D/g, "");
if (s.length !== 9) return "Organisasjonsnummeret må ha 9 sifre";
return true;
Inne i denne koden har du også keplin tilgjengelig — du kan sammenligne med et
annet felt, med en verdi fra økten eller med data som allerede er lastet inn på
skjermen. Det er TypeScript, med forslag mens du skriver (Ctrl+Mellomrom);
editoren nekter å lagre kode som ikke lar seg kjøre.

Når valideringen kjører
Valideringen av et skjema kjører ved lagring — når lagreknappen ber datastoren for posten om å lagre. Rekkefølgen er alltid den samme, per felt:
- Påkrevd — er feltet fylt ut?
- Standardreglene — lengde, format, minimum, maksimum, mønster, likhet.
- Valideringen med kode — din egen regel.
Den første feilen vinner: så snart en regel feiler, er det meldingen fra den regelen som dukker opp under feltet, og de neste rekker ikke å kjøre. Feiler et felt, lagres ingenting — posten blir stående som den var, og personen blir værende i skjemaet, med feilene synlige.
Du kan også validere et felt for hånd, fra koden i en hendelse — for eksempel for å kontrollere et felt så snart det endrer seg i stedet for å vente til slutt. Det er temaet i Hendelser og SDK-et.
Meldingene
Meldingene fra standardreglene er plattformens egne, skrevet på appens språk: Påkrevd felt., Ugyldig e-post., Minst {min} tegn., Maksverdi: {max}., Verdiene stemmer ikke overens., Ugyldig format. De redigeres ikke én for én — trenger du å si tingene på en annen måte, er stedet validering med kode, der meldingen er strengen du returnerer.
Språket kommer fra appens innstillinger (Appinnstillinger ▸ Oversettelser): den samme appen på norsk og på engelsk viser feilene på språket til den som bruker den.
Hva validering IKKE er
Atenção
Validering av et skjema er bekvemmelighet, ikke sikkerhet. Den kjører i nettleseren til den som bruker appen og er der for å unngå ærlige feil. Den som virkelig vil skrive en ugyldig verdi går ikke via skjemaet — han går via API-et. Det ordentlige forsvaret er modellens (typer, påkrevde felt, nøkler, unike indekser, enums) og tillatelsene for hvem som får skrive hva.
Hvorfor ikke…?
- Hvorfor ser jeg ikke kategorien Validering i denne widgeten? Bare skjemafelt validerer. En Knapp, en Etikett eller en Tabell har ingen verdi å validere.
- Hvorfor utløses ikke regelen når feltet er tomt? Det er med vilje: standardreglene ignorerer det tomme, som er Påkrevd sitt område. Slå den på.
- Hvorfor ble en ugyldig post lagret likevel? Enten var feltet ikke koblet til datastoren (uten binding kommer det ikke med i valideringen), eller så ble verdien skrevet en annen vei — et API, et skript, en import. Se hva modellen garanterer, øverst på denne siden.
- Hvorfor treffer ikke Mønster (regex)? Det er et regulært uttrykk i vanlig
syntaks, og hvert tegn teller:
^[A-Z]{2}\d{4}$godtarPT1234og nekterpt1234. Test uttrykket før du limer det inn. - Hvorfor ble ikke valideringen min med kode lagret? Editoren nekter kode som ikke lar seg kjøre — rett den markerte feilen og lagre på nytt.
- Hvorfor dukker meldingen opp på engelsk? Appens språk er engelsk. Endre det under Appinnstillinger ▸ Oversettelser.