---
title: "DocTypes"
space: "Frappe Framework"
url: "https://www.prilk.com/nl/docs/frappe-framework/doctypes"
updated: "2026-05-14"
---

## DocTypes

Een **DocType** is Frappes kernmodel — als een databasetabel, maar met schema, permissies, lifecycle-hooks en gegenereerde UI.

### Wat een DocType heeft

| Eigenschap | Doel |
|---|---|
| **Naam** | Enkelvoud conventie (Sales Invoice, niet Sales Invoices) |
| **Module** | Bij welke app/module hoort het |
| **Velden** | Kolommen — elk met type, label en eigenschappen (zie [Veldtypes](#veldtypes) hieronder) |
| **Permissies** | Regels per rol |
| **Naamgeving** | Hoe nieuwe records hun primary key krijgen (Naming Series, hash, op veld) |
| **Workflow** | Optionele toestandsmachine |

### Soorten DocType

| Type | Gebruik |
|---|---|
| **Document** | Heeft DB-tabel; gebruikers maken veel records |
| **Single** | Slechts één record — voor instellingen (System Settings, Email Settings) |
| **Child Table** | Embedded in een parent — Sales Invoice Item zit in Sales Invoice |
| **Submittable** | Heeft Submit-actie; ingediende records zijn immutable, wijzigingen via Cancel + Amend |

### Standard vs Custom

| Type | Herkomst |
|---|---|
| **Standard** | Gedefinieerd door een app — code in `<app>/<module>/doctype/` |
| **Custom** | Aangemaakt in het Desk door admin — opgeslagen in de database |

Voor eenmalige behoeften is een Custom DocType snel. Voor herbruikbare modellen over meerdere sites: maak een Frappe-app. Zie [Ontwikkelaars](/nl/docs/frappe-ecosystem/ontwikkelaars).

### Naamgevingsconventies
- DocTypes zijn enkelvoud: `Sales Invoice`, niet `Sales Invoices`
- Veldnamen zijn snake_case: `customer_name`, `posting_date`
- **Title Case** in labels (wat gebruikers zien), **snake_case** in fieldnames (wat code gebruikt)

---

## Veldtypes

Bij het definiëren van een DocType heeft elk veld een type dat opslag en rendering bepaalt.

### Tekst & inhoud

| Type | Opslag | Gebruik |
|---|---|---|
| **Data** | varchar(140) | Korte strings — namen, codes |
| **Small Text** | text | Tot ~64KB |
| **Long Text** | longtext | Tot 4GB — artikelen, inhoud |
| **Text Editor** | longtext | Rich HTML-bewerking |
| **Code** | longtext | Code met syntax highlighting |
| **Markdown Editor** | longtext | Markdown met preview |
| **HTML Editor** | longtext | Directe HTML-bewerking |

### Getallen

| Type | Opslag | Gebruik |
|---|---|---|
| **Int** | int | Hele getallen |
| **Float** | float | Drijvende komma |
| **Currency** | decimal(18,6) | Geldbedragen — locale-geformatteerd |
| **Percent** | float | Getoond met %-achtervoegsel |

### Datums

| Type | Format |
|---|---|
| **Date** | YYYY-MM-DD |
| **Time** | HH:MM:SS |
| **Datetime** | YYYY-MM-DD HH:MM:SS |
| **Duration** | Uren/min/sec — interval |

### Selectie & links

| Type | Gebruik |
|---|---|
| **Select** | Dropdown met vaste opties |
| **Link** | Verwijzing naar ander DocType — autocomplete |
| **Dynamic Link** | Link waarvan het target-DocType zelf een veld is |
| **Table** | Child table — embedded lijst |
| **Table MultiSelect** | Multi-select uit ander DocType |
| **Autocomplete** | Vrije tekst met suggesties |

### Bestanden & media

| Type | Gebruik |
|---|---|
| **Attach** | Bestandslink — slaat URL op |
| **Attach Image** | Zelfde met image-preview |
| **Color** | Color picker — hex-waarde |
| **Signature** | Tekencanvas, opgeslagen als image |

### Layout

| Type | Gebruik |
|---|---|
| **Section Break** | Visuele groepering |
| **Column Break** | Nieuwe kolom in huidige sectie |
| **Tab Break** | Top-level tab |
| **Fold** | Inklapbare groep |
| **HTML** | Statische HTML in het formulier |
| **Heading** | Visuele kop |

### Speciaal

| Type | Gebruik |
|---|---|
| **Check** | Boolean — 0 of 1 |
| **Password** | Encrypted opgeslagen |
| **JSON** | Geldige JSON; gevalideerd bij save |
| **Geolocation** | Kaartkiezer |
| **Rating** | Sterrenwidget |
| **Read Only** | Alleen tonen, geen invoer |
| **Barcode** | Rendert barcode uit waarde |
