Onder Extra vind je het menu
Table Trigger.
Tabeltrigger wordt gebruikt om kleine stukjes code te maken die kleine taken op de tabellen/bestanden in Uniconta kunnen automatiseren.
Alle ondersteuning met betrekking tot triggers is te betalen ondersteuning. Als je triggers hebt gemaakt voor je accounts en ze zorgen voor uitdagingen voor de accounts, dan is dit te betalen support als je contact opneemt met support.
De voorbeelden in dit artikel zijn indicatief en werken in een standaard Uniconta boekhoudsysteem. Het is je eigen verantwoordelijkheid om ze te gebruiken en ze moeten worden getest in een testomgeving voordat je ze in een bedrijfsomgeving codeert.
Tips:
De waarde van een aangepast
fldNote-veld wordt als volgt aangeroepen:
rec.Debtor.GetUserFieldString("fldNotat")
Typ het volgende om een waarde in te stellen voor een aangepast veld,
fldNotat:
rec.SetUserFieldString("fldNotat", "Dette er vores notat til feltet");
Het is mogelijk om een berichtvenster te maken, bijvoorbeeld als een veld niet is ingevuld. Een berichtvenster kan als volgt worden geschreven:
System.Windows.Forms.MessageBox.Show("OnUpdate");
Voorbeeld 1 - Kies een lay-out op basis van werknemer:
Wanneer een specifieke medewerker een verkooporder aanmaakt, moet die medewerker een specifieke lay-out gebruiken.
Je kunt dit afdwingen door een trigger aan te maken.
Ga naar Gereedschap/Tabel trekker
Hier selecteer je de map waarop je een trigger wilt uitvoeren. Om de map te vinden, ga je naar de gewenste locatie in Uniconta en druk je op F12.
Als het een verkooporder is die moet worden geactiveerd met een code, selecteer dan "DebtorOrderClient".
Vervolgens selecteer je "Trigger", d.w.z. wanneer deze code moet worden geactiveerd.
In het voorbeeld is OnInsert geselecteerd
Als je in C# kunt programmeren, vink dan het vakje C# aan.
In het veld Script ben je nu klaar om te coderen.
/* 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 op Opslaan en test je trigger op de verkooporder.
Voorbeeld 2 - Vul het inkoopfactuurnummer automatisch in met een willekeurig nummer:
Dit kan worden gebruikt om te testen als je vaak aankopen test of gewoon een willekeurig factuurnummer nodig hebt op een inkoopfactuur.
Via een trigger kun je een nummer opslaan in het veld Factuurnr. bij het verlaten van het inkoopscherm.
In het voorbeeld wordt de huidige datum met tijd, inclusief seconden, geselecteerd voor het factuurnummer, dus het zal nooit hetzelfde zijn.
Je doet het volgende:
Maak een trigger:
Ga naar Gereedschap
Selecteer tabel trigger
Selecteer de tabel CreditorOrderClient
Klik op Table trigger in het menu
Je kunt gewoon een trigger toevoegen wanneer je een order aanmaakt, maar het is ook een goed idee om een trigger toe te voegen wanneer je een order wijzigt.
Maak een factuurnummer voor een nieuwe inkooporder:
Een tabel-trigger toevoegen
Trigger instellen op OnInsert
Vink het vakje aan in C#
Plak de volgende code in het veld Script:
rec.InvoiceNumber = DateTime.Now.ToString("MMddyyyyHHmmss");
(Vervang " indien nodig door nieuwe ", want ze kunnen tijdens het kopieerproces worden gewijzigd!)
Klik op Controleren. Als je OK krijgt, is alles goed - als je een foutmelding krijgt, met veel code, begin dan met het vervangen van " en probeer opnieuw te controleren.
Sla op en probeer een inkooporder te maken.
De trigger moet er als volgt uitzien:

Als je dezelfde functionaliteit wilt voor inkooporders die al zijn aangemaakt, moet je een tweede trigger aanmaken.
Maak een factuurnummer voor een bestaande inkooporder:
Nog een tabeltrigger toevoegen aan CreditorOrderClient
Trigger instellen op OnUpdate
Vink het vakje aan in C#
Plak de volgende code in het veld Script:
if (rec.InvoiceNumber=="0" || string.IsNullOrEmpty(rec.InvoiceNumber) ) {
rec.InvoiceNumber = DateTime.Now.ToString("MMddyyyyHHmmss");
}
(Vervang " indien nodig door nieuwe ", want ze kunnen tijdens het kopieerproces worden gewijzigd!)
Klik op Controleren. Als je OK krijgt, is alles goed - als je een foutmelding krijgt, met veel code, begin dan met het vervangen van " en probeer opnieuw te controleren.
Sla op en probeer een inkooporder te wijzigen die geen factuurnummer heeft.
De trigger moet er als volgt uitzien:
Voorbeeld 3 - Projectnaam automatisch invullen met debiteurennaam:
Vanuit het
debiteurenoverzicht kan een project worden aangemaakt op het menulint voor de geselecteerde debiteur (als de projectmodule is ingeschakeld).
Via een trigger kun je de projectnaam automatisch laten vullen met de naam van de debiteur tijdens het aanmaken.
Maak de trigger:
Ga naar Gereedschap
Selecteer tabel trigger
Selecteer de tabel ProjectClient
Klik op "Table trigger toevoegen" in het menu
Trigger instellen op pageLoad
Plak de volgende code in het veld Script:
if (rec.Name==null) {
rec.Name = rec.DebtorName;
}
(Vervang "met nieuwe" als dat nodig is, want ze kunnen tijdens het kopieerproces worden gewijzigd!)
De trigger moet er als volgt uitzien:
Voorbeeld 4 - Stel betaalmethode in op X als rekening = X in het boekhoudjournaal:
Als je een debiteur/crediteur/financiële rekening hebt die bijvoorbeeld voor elke boeking een specifieke betalingsmethode nodig heeft, kun je deze trigger gebruiken.
Maak de trigger:
Ga naar Gereedschap
Selecteer tabel trigger
Selecteer de tabel GLDailyJournalLineClient
Klik op "Table trigger toevoegen" in het menu
Trigger instellen op OnUpdate
Vink het vakje aan in C#
Plak de volgende code in het veld 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 op Controleren. Als je OK krijgt, is alles goed - als je een foutmelding krijgt, met veel code, begin dan met het vervangen van de symbolen
" en probeer opnieuw te controleren.
De trigger moet er als volgt uitzien:
Mogelijkheden met triggers
Een trigger kan op 8 verschillende methoden worden geactiveerd, en slechts één keer per methode, per tabel. Dus als je meerdere functies op dezelfde methode wilt hebben, moeten deze onder één methode worden aangemaakt.
Je kunt een trigger niet van de ene methode naar de andere wijzigen. Je moet een nieuwe maken en de trigger die je niet gebruikt verwijderen.
| Trigger |
Beschrijving trigger |
| Init |
Init kan worden gebruikt om een parameter te definiëren voordat het scherm wordt geladen. |
| PageClosed |
PageClosed wordt uitgevoerd wanneer je een schermafbeelding sluit. |
| PageLoad |
PageLoad wordt uitgevoerd wanneer je een scherm opent.
Je kunt bijvoorbeeld vooraf gegevens invoegen wanneer je een nieuwe verkooporder, een nieuw project of een nieuw item aanmaakt. |
| OnEnter |
OnEnter wordt uitgevoerd wanneer je op het veld staat waarop je een trigger hebt gemaakt. |
| OnLeave |
OnLeave wordt uitgevoerd wanneer je het veld verlaat waarop je een trigger hebt gemaakt.OnDelete |
| OnDelete |
OnDelete wordt uitgevoerd wanneer je gegevens verwijdert uit het veld waarop je een trigger hebt aangemaakt.
Je kunt bijvoorbeeld het tijdstip van gegevensverwijdering documenteren. |
| OnInsert |
OnInsert wordt uitgevoerd wanneer je gegevens aanmaakt/invoegt.
Bijvoorbeeld bij het aanmaken van een verkooporder of een nieuwe debiteur/crediteur. |
| OnUpdate |
OnUpdate wordt uitgevoerd wanneer u bestaande gegevens in het triggerveld bijwerkt.
Bijvoorbeeld, als waarde X = X in veld A, voegt u waarde Y in veld B in.
U kunt OnUpdate ook gebruiken om te registreren wanneer er voor het laatst wijzigingen zijn aangebracht in een debiteur of een artikel. |