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:
Værdien af et brugerdefineret
fldNotat felt kaldes på følgende måde:
rec.Debtor.GetUserFieldString("fldNotat")
For at sætte en værdi for et brugerdefineret felt,
fldNotat, skriver man følgende:
rec.SetUserFieldString("fldNotat", "Dette er vores notat til feltet");
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 ud fra 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å. Du finder kartoteket ved at stå det ønskede sted i Uniconta og herefter tryk F12.
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årligt 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 trigger 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å Kontroller. 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:
Eksempel 3 - Udfyld automatisk projekt navn med debitor navn:
Fra
Debitor/debitor oversigten kan der på menu båndet oprettes et projekt på den valgte debitor (hvis projektmodulet er slået til).
Via en trigger, kan man få udfyldt projekt navn med debitors navn automatisk under oprettelsen.
Opret triggeren:
Gå til Værktøjer
Vælg Table trigger
Vælg tabellen ProjectClient
Klik på "Tilføj table trigger" i menuen
Sæt Trigger til PageLoad
Indsæt følgende kode i feltet Script:
if (rec.Name==null) {
rec.Name = rec.DebtorName;
}
(Udskift evt” med nye ”, da de kan blive ændret i kopieringen!)
Triggeren skal se sådan ud:
Eksempel 4 - Sæt betalingsmåde til X hvis konto = X i bogføringskladde:
Hvis du har en debitor/kreditor/finans konto som fx skal have en bestemt betalingsmåde ved hver bogføring, kan du benytte denne trigger.
Opret triggeren:
Gå til Værktøjer
Vælg Table trigger
Vælg tabellen GLDailyJournalLineClient
Klik på "Tilføj table trigger" i menuen
Sæt Trigger til OnUpdate
Sæt hak i C#
Indsæt følgende kode i feltet Script:
if (rec.Account=="X")
rec.PaymentMethod = "X";
// Erstat X med kontonavn samt den ønskede betalingsmetode.
// Betalingsmåder: "Kreditors Bankkonto", "IBAN", "+71", "+73", "+75", "+04", "Ingen".
Klik på Kontroller. Får du OK, er alt godt – får du en fejl, med en masse kode, start med at udskifte symbolerne
” og prøv at kontroller igen.
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 |
Init kan benyttes til at definere en parameter inden skærmbilledet loades. |
PageClosed |
PageClosed kører, når du lukker et skærmbillede. |
PageLoad |
PageLoad kører, når du åbner et skærmbillede.
Fx kan du indsætte data på forhånd ved oprettelse af ny salgsordre, projekt eller vare. |
OnEnter |
OnEnter kører, når du står på feltet du har lavet en trigger på. |
OnLeave |
OnLeave kører, når du forlader feltet du har lavet en trigger på.OnDelete |
OnDelete |
OnDelete kører, når du sletter data fra feltet du har lavet en trigger på.
Du kan fx dokumentere tidspunkt for deletion af data. |
OnInsert |
OnInsert kører, når du opretter/indsætter data.
Fx ved oprettelse af en salgsordre, eller en ny debitor/kreditor. |
OnUpdate |
OnUpdate kører, når du opdaterer eksisterende data i triggerfeltet.
Fx hvis værdi X = X i felt A, indsæt værdi Y i felt B.
Du kan også bruge OnUpdate til at registrere hvornår der senest er lavet ændringer på fx en debitor eller en vare. |