Document toolboxDocument toolbox

Hvordan bruger man udtryksevaluering tillægsfelter?

Tillægsfelter af typen "Tekst" og "Tal" kan have en undertype, som siger lidt om hvilken slags tekst feltet forventes at indeholde. En af undertyperne hedder "Expression" og får tillægsfeltet til at opfører sig ret anderledes.

Et /wiki/spaces/CPFN/pages/25395214 af undertypen "Expression" tillader at man indtaster en formel eller udtryk når feltet opsættes. Når tillægsfeltet vises på et objekt (altså på en opgave/virksomhed/udstyr/osv) så beregnes resultatet af formlen/udtrykket. Feltets indhold kan ikke redigeres på objektet (opgaven/virksomheden/udstyret/osv), det er altid det beregnede resultat som vises.

Der er en funktionalitet som skal slåes til (af Ventu) før dette er tilgængeligt.

Bemærk at der er både en ny og gammel syntaks for udtrykkene. Denne side henviser til den gamle syntaks. Tilllægsfelter som bruger den nye syntaks kan belaste systemet, men har også flere muligheder.

Muligheder

Formlen/udtrykket kan afhænge af felter fra objektet, så hvis tillægsfeltet f.eks. er lavet på en opgave, så kan formlen lave beregninger udfra opgavens deadline eller tidsestimat eller andre felter. Et eksempel kunne være formlen Date.dateadjust(this.tdeadline, "+1mo")  som viser datoen 1 måned efter opgavens deadline. this henviser til objektet (en opgave i dette tilfælde), tdeadline er et felt på opgaven, og Date.dateadjust() en funktion som ændrer en dato. 

For visse objekter er det muligt at tilgå tilknyttede objekter. Et tillægsfelt på en opgave kan f.eks. læse felter fra opgavens virksomhed: formlen  this.customer.customernumber+" !"  vil vise virksomhedens kundenr efterfulgt af et udråbstegn. this er igen objektet/opgaven, customer er et felt på opgaven som indeholder virksomheden, og customernumber er et felt på virksomheden.

I ovenstående eksempel læser man den "rå" værdi, dvs. hvis man f.eks. læser  this.waref  (arbejdsområde) så får man arbejdsområdets ID, hvilket måske ikke er så nyttigt. Man kan så istedet bruge funktionen  gvd()  som læser en formatteret værdi, dvs.  this.gvd("waref").

Hvis et objekt f.eks. har 5 tillægsfelter med tal som indsættes ved udfyldelse af et skema, så kan man lave en formel som f.eks. viser gennemsnittet (eller maksimum eller minimum osv) af disse 5 felter.

Understøttede objekt typer

Alle objekt typer som understøtter tillægsfelter understøtter også udtrykstillægsfelter.

Adgang til andre objekter

Det er kun visse objekter som tillader at man tilgår tilknyttede objekter.

ObjektTilknyttede objekter

Opgave

Bruger, Virksomhed, Projekt
VirksomhedBruger, Person

Udstyr

Bruger, Hjemsted
TIcketOpgave

Navngivning af objekter

Det bygges op af navne, så hvis man eksempel ønsker at finde en virksomheds kunde nr og vise dette i et opgavetillægsfelt, så kan man angive this.customer.customernumber i et opgavetillægsfelt.

Opgaver (Todo)

De følgende ekstra felter er tilgængelige i this objektet når this er en opgave. En liste med felter for opgaver er angivet nederst på siden.

customerVirksomheds objektet
userDen ansvarlige bruger
projectDet tilknyttede projekt, uanset om det er det nye eller gamle projekt modul

Dvs. this.customer.latlon.lat giver dig virksomhedens breddegrad, og this.project.title giver dig projektets navn (nyt projekt modul, for gammlt projekt modul skal du bruge this.project.tname).

Virksomhed (Customer)

De følgende ekstra felter er tilgængelige i this objektet når this er en virksomhed. En liste med felter for virksomheder er angivet nederst på siden.

personKontaktpersonen
userVores reference

Udstyr (Tool)

De følgende ekstra felter er tilgængelige i this objektet når this er et udstyr. En liste med felter for udstyr er angivet nederst på siden.

placeofhomeHjemstedet for udstyret, dette er en virksomhed
userDen ansvarlige bruger

Operatorer og funktioner

Dette er kun en oversigt over de tilgængelige operatorer og funktioner. En mere komplet beskrivelse findes i den tekniske dokumentation for scripts.

TypeOperatorer
Matematik+ - * / %
Sammenligning<=, >=, ==,  !=, >, <


TypeFunktioner
Dato/tidDate.time(), Date.date(), Date.strtotime(), Date,dateadjust()
Tekstlength(), lower(), upper(), substr(), sprintf(), replace(), split()
Listerlength(), explode(), implode()
MatematikMath.min(), Math.max(), Math.sum(), Math.random(), Math.floor(), Math.ceil(), Math.round(), alm. trigonometri osv.
Microbizzgvd()

Eksempler

Disse er ment som eksempler på syntaksen, eksemplerne er måske ikke specielt brugbare i det virkelige liv...

ObjektUdtrykBeskrivelseResultat
Opgavethis.customer.customernumber.length()Vis længden af virksomhedens nummer23
Personthis.firstname.upper()Vis personens fornavn med store bogstaverJESPER
OpgaveDate.dateadjust(this.tdeadline, "+1mo")En måned efter deadline2023-07-12

Math.max(this.custom12, this.custom13)+22 plus den største af værdierne i de to tal tillægfelter med IDer 12 og 13123

this.custom12 > this.custom131 hvis værdien i tal tillægsfelt ID 12 er større end værdien i tillægsfelt ID 13, ellers 01 eller 0

bar(this.custom14.split(","))Vis et diagram; kræver at tillægsfelt ID 14 indeholder tal adskilt af komma, f.eks. 12,33,25


Felter

I system modulet er der en side som viser de fleste af de tilgængelige felter. Siden findes PLUGINS > EXPRESSION FIELDS.


Man kan evt også kigge i Feltguide i HTML dokument opbyggelse, her kan man se man af de felter som er tilgængelige, f.eks. this.customer.customeradress2 :