Field Types
Complete reference for all 20+ P9 field types with attributes, formats, and usage examples.
Field Types Reference
P9 supports over 20 field types covering every business data need. Fields use inline attribute syntax with colon-separated key-value pairs.
Field Type Table
| Type | Description | Example |
|---|---|---|
Text |
Single-line text input | field Name type:Text |
Number |
Numeric value | field Quantity type:Number |
Money |
Currency amount | field Total type:Money |
Date |
Date only | field StartDate type:Date |
DateTime |
Date and time | field CreatedAt type:DateTime |
Time |
Time only | field StartTime type:Time |
Select |
Dropdown selection | field Status type:Select |
Lookup |
Reference to another object | field Customer type:Lookup |
Table |
Child table/collection | field LineItems type:Table |
Checkbox |
Boolean true/false | field IsActive type:Checkbox |
Percentage |
Percentage value (0-100) | field Rate type:Percentage |
Area |
Area measurement | field LeasableArea type:Area |
Attachment |
File upload | field Documents type:Attachment |
Email |
Email address | field Email type:Email |
Phone |
Phone number | field PhoneNr type:Phone |
Url |
Web URL | field Website type:Url |
Address |
Structured address | field Location type:Address |
Autonumber |
Auto-generated sequence | field Number type:Autonumber format:"INV-{yy}-#" |
Calculated |
Computed from expression | field Total type:Calculated expression:"Qty * Price" |
QrCode |
QR code / barcode | field BarCode type:QrCode barcode:true |
Polymorphic |
Dynamic type reference | field RelatedTo type:Polymorphic |
Common Field Attributes
| Attribute | Description | Example |
|---|---|---|
label:"text" |
Display label | label:"Payment Date" |
required:true |
Field must have a value | required:true |
optional:true |
Field is not required | optional:true |
readonly:true |
Cannot be edited | readonly:true |
hidden:true |
Hidden from UI | hidden:true |
unique:true |
Value must be unique | unique:true |
default:"value" |
Default value | default:"Draft" |
placeholder:"text" |
Placeholder text | placeholder:"Enter name" |
index:true |
Create database index | index:true |
search-field:true |
Include in search | search-field:true |
advance-search:true |
Show in advanced search | advance-search:true |
linked-view:true |
Enable linked view navigation | linked-view:true |
show:[condition] |
Conditional visibility | show:[{Type}='Invoice'] |
hide:[condition] |
Conditional hiding | hide:[{Status}='Draft'] |
Text Field
field CompanyName type:Text label:"Company Name" required:true placeholder:"Enter company name" unique:true index:true search-field:true
field Description type:Text label:"Description" optional:true multi-line:true maximum:"2000"
field TermsAndConditions type:Text label:"Terms & Conditions" optional:true rich-text:true
Number Field
field Quantity type:Number label:"Quantity" required:true minimum:"0"
field Floor type:Number label:"Floor" optional:true
Money Field
field TotalAmount type:Money label:"Total Amount" required:true
field SecurityDeposit type:Money label:"Security Deposit" optional:true minimum:"0"
Date Fields
field InvoiceDate type:Date label:"Invoice Date" required:true default:[now()]
field DueDate type:Date label:"Due Date" required:true
field DateOfBirth type:Date label:"Date of Birth" optional:true maximum:[ageLimit()]
field CreatedAt type:DateTime label:"Created At" readonly:true
field StartTime type:Time label:"Start Time" optional:true
Select Field
field Status type:Select label:"Status" required:true
select Status {
label:"Draft" value:"Draft" default:true
label:"Pending" value:"Pending"
label:"Approved" value:"Approved" sentiment:Positive
label:"Rejected" value:"Rejected" sentiment:Negative
}
field Priority type:Select label:"Priority" tab-filter:true
select Priority {
label:"Low" value:"Low" stars:2
label:"Medium" value:"Medium" stars:3 default:true
label:"High" value:"High" stars:4
label:"Critical" value:"Critical" stars:5 sentiment:Error
}
Lookup Field
field AssignedTo type:Lookup label:"Assigned To" required:true linked-view:true
lookup AssignedTo {
lookupobjectname:"Employee"
displayfield {
"Name"
"Department"
}
filter {
Status="Active"
}
}
Table Field (Child Records)
field LineItems type:Table label:"Line Items"
tabledetail LineItems {
field Description ischild type:Text label:"Description" required:true
field Quantity ischild type:Number label:"Qty" required:true minimum:"1"
field UnitPrice ischild type:Money label:"Unit Price" required:true
field Total ischild type:Calculated label:"Total" expression:"Quantity * UnitPrice" readonly:true
lookup Product {
lookupobjectname:"Product"
displayfield {
"Name"
"SKU"
}
}
}
Calculated Field
field FullName type:Calculated label:"Full Name" expression:[COMBINE(FirstName, MiddleName, LastName)] readonly:true
field TotalWithTax type:Calculated label:"Total (inc. Tax)" expression:"SubTotal + (SubTotal * TaxRate / 100)" readonly:true
field RemainingQty type:Calculated label:"Remaining" expression:"Quantity - IF(ISBLANK(UsedQuantity), 0, UsedQuantity)" readonly:true
Expression Functions:
COMBINE(a, b, ...)— Joins non-empty values with space (ideal for names)CONCAT(a, b, ...)— Concatenates without separatorIF(condition, true, false)— Conditional logicISBLANK(field)— Check if field is empty
Autonumber Field
field InvoiceNumber type:Autonumber label:"Invoice #" format:"INV-{yy}-#" readonly:true search-field:true filter-order:"1"
field ContractNumber type:Autonumber label:"Contract #" format:"CON-{yy}-#####" readonly:true
Format tokens:
{yy}— 2-digit year{yyyy}— 4-digit year (if supported)#— Sequence number (width = number of #)
Percentage Field
field CommissionRate type:Percentage label:"Commission Rate" optional:true minimum:"0" maximum:"100"
field Progress type:Percentage label:"Progress" show-as-slider:true minimum:"0" maximum:"100"
Area Field
field LeasableArea type:Area label:"Leasable Area" optional:true minimum:"0"
field BuiltUpArea type:Area label:"Built-up Area" optional:true
QrCode Field
field BarCode type:QrCode label:"Barcode" optional:true format:"{{Building.Number}} / {{Number}}" barcode:true
Polymorphic Field
field RelatedTo type:Polymorphic label:"Related To" optional:true
polymorphic RelatedTo {
default: "Contract"
lookups {
lookup Contract {
lookupobjectname: "Contract"
label:"Contract"
displayfield {
"Number"
"Tenant"
}
filter {
Status="Active"
}
}
lookup WorkOrder {
lookupobjectname: "WorkOrder"
label:"Work Order"
displayfield {
"Number"
"Status"
}
}
lookup Invoice {
lookupobjectname: "Invoice"
label:"Invoice"
displayfield {
"Number"
"Total"
}
}
}
}
Dynamic Default Values
Use bracket syntax for dynamic defaults:
field Date type:Date label:"Date" default:[now()]
field RequestedBy type:Lookup default:[User.EmployeeId]
field TransactionDate type:Date label:"Transaction Date" minimum:[now()]
| Expression | Description |
|---|---|
[now()] |
Current date/time |
[ageLimit()] |
Date 18 years ago (age validation) |
[User.EmployeeId] |
Current user's employee ID |
Conditional Visibility
field UtilityCharge type:Money show:[AddUtilityCharge]
field Discount type:Number show:[!ApplyDiscountIndividually]
field CommercialTerms type:Text show:[{Type}='Commercial']
field BankDetails type:Text hide:[{PaymentMethod}='Cash']