Under væktøjer finder man menuen Table Trigger.
Table trigger benyttes til at lave små stumper kode, der kan automatisere små jobs, på tabellerne/kartotekerne i Uniconta.
Alt support omkring triggers, er betalbar support. Har man på sine regnskaber, oprettet triggers, og de skaber udfordringer for regnskaberne, vil dette være betalbar support, såfrem man henvender sig i supporten.
Eksempler her i artiklen er vejledende, og virker i et standard Uniconta regnskab. Det er på eget ansvar, at de benyttes og bør aftestes i et test miljø, inden de kodes ind i et drift miljø.
Tips:
Et bruger defineret fldNotat felt kaldes på følgende måde:
rec.Debtor.GetUserFieldString("fldNotat")
Det er muligt at lave en beskedboks, f.eks. hvis et felt ikke er udfyldt. En beskedboks kan skrives på følgende måde:
System.Windows.Forms.MessageBox.Show("OnUpdate");
Eksempel 1 – Vælg et layout udfra medarbejder:
Når en bestemt medarbejder opretter en salgsordre, skal denne medarbejder benytte et bestemt layout.
Det kan man tvinge igennem, ved at oprette en trigger.
Gå til Værktøjer/Table Trigger
Her vælger man det kartotek, som der skal udføres en trigger på.
Hvis det er salgsordre der skal aktiveres med en kode, så vælger man “DebtorOrderClient”
Derefter vælger man “Trigger”, altså hvornår denne kode skal aktiveres.
I eksemplet vælges OnInsert
Kan man programmere i C#, sætter man hak i C# feltet
I Script feltet, er man nu klar til at kode.
/* Hvis medarbejderen er 1007, så skal layoutgruppen sættes til England */ if (rec.Employee=="1007") rec.LayoutGroup = "England"; /* Hvis leveringsdato på en salgsordre skal være dags-dato */ rec.DeliveryDate =DateTime.Today;
Klik på gem, og test din trigger på salgsordren.
Eksempel 2 – Udfyld automatisk indkøbsfakturanummer med et vilkåreligt nummer:
Dette kan benyttes til test, hvis man ofte tester indkøb. eller blot har brug for et vilkårligt fakturanummer, på en indkøbsfaktura.
Via en trigger, kan man ved udgang af indkøbsbilledet, gemme et nummer i feltet fakturanr.
I eksemplet er der valgt dagsdato med tid, inkl. sekunder, til fakturanummer, så bliver det aldrig ens.
Man gør følgende:
Opret en trigger:
Gå til Værktøjer
Vælg Table trigger
Vælg tabellen CreditorOrderClient
Klik på Table trigger i menuen
Man kan nøjes med at tilføje en trigger når man opretter en ordre, men en god ide er også, at lave en trigge til, når man ændrer en ordre.
Opret et fakturanummer til en ny indkøbsordre:
Tilføj en table trigger
Sæt Trigger til OnInsert
Sæt hak i C#
Indsæt følgende kode i feltet Script:
rec.InvoiceNumber = DateTime.Now.ToString("MMddyyyyHHmmss");
(Udskift evt” med nye ”, da de kan blive ændret i kopieringen!)
Klik på Kontoller. Får du OK, er alt godt – får du en fejl, med en masse kode, start med at udskifte ” og prøv at kontroller igen.
Gem, og prøv at opret en indkøbsordre.
Triggeren skal se sådan ud:
Ønsker man den samme funktion for allerede oprettede indkøbsordrer, skal man oprette en trigger mere.
Opret et fakturanummer til en allerede eksisterende indkøbsordre:
Tilføj endnu en table trigger på CreditorOrderClient
Sæt Trigger til OnUpdate
Sæt hak i C#
Indsæt følgende kode i feltet Script:
if (rec.InvoiceNumber=="0" || string.IsNullOrEmpty(rec.InvoiceNumber) ) { rec.InvoiceNumber = DateTime.Now.ToString("MMddyyyyHHmmss"); }
(Udskift evt” med nye ”, da de kan blive ændret i kopieringen!)
Klik på Kontoller. Får du OK, er alt godt – får du en fejl, med en masse kode, start med at udskifte ” og prøv at kontroller igen.
Gem, og prøv at ændre en indkøbsordre, der ikke har et fakturanummer.
Triggeren skal se sådan ud:
Muligheder med Triggers
En trigger kan blive aktiveret på 8 forskellige metoder, og kun en gang per metoder, per tabel. Så ønsker man at have flere funktioner, på den samme metoder, må disse oprettes under een.
Man kan ikke ændre en trigger fra en metode til en anden. Der skal oprettes en ny, og man skal evt. slette den trigger man ikke benytter.
Trigger | Beskrivelse |
Init | |
PageClosed | |
PageLoad | |
OnEnter | |
OnLeave | |
OnDelete | |
OnInsert | |
OnUpdate |
- Var denne artikel til hjælp? Har du spørgsmål til denne artikel, så klik her: Uniconta Support
- JaNej