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 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.
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 |
| 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 |