In Uniconta kun je gegevens op verschillende plaatsen wijzigen met behulp van kleine scripts, stukjes code.
Je kunt deze scripts gebruiken voor gegevensmanipulatie, berekende velden, gegevensimport en het toewijzen van nieuwe veldwaarden.
Je kunt "Uniconta script" gebruiken, wat een eigen taal is waarmee je eenvoudige formules kunt schrijven. Als je C#-code wilt gebruiken, is dit ook een optie. Selecteer dit gewoon bij het maken van het script.
Vink het vakje C# aan. De code wordt dan gecompileerd met de ingebouwde C# compiler en .Net code wordt uitgevoerd. Hierdoor heb je toegang tot de volledige grote programmabibliotheek om gegevens te manipuleren of berekende velden weer te geven.
Voorbeelden in C#
Om je gegevens bij te werken met C# code, heb je de volgende instellingen nodig.
Selecteer bij Veldnaam het veld dat je wilt wijzigen.
Om code te schrijven, moet je"Script" selecteren (Dit is van toepassing bij "Nieuwe veldwaarde toewijzen")
Als je C# wilt schrijven, vink dan het vakje"C#" aan.
In het veld"Script" kun je nu de gewenste code schrijven.
OPGELET: Stel de gewenste filter in voordat je alle gegevens bijwerkt.
Een tekst vervangen door een andere
Hierboven zie je een voorbeeld van hoe je een jaartal op een projectnaam kunt wijzigen in een nieuw jaartal via "Nieuwe veldwaarde toewijzen".
De projectnaam bevat een jaartal en via "Nieuwe veldwaarde toewijzen" kun je een specifieke waarde vervangen door een andere. Hier wordt het jaar 2021 vervangen door 2022.
rec.Number.Replace("2021", "2022");
De onderstaande voorbeelden gebruiken ook rec.Number, wat het projectnummerveld is
/Vervang een waarde door een andere
rec.Number.Replace("2020", "2021");
/Vervang een waarde met een niets
rec.Number.Replace("2020", "");
Zoek een waarde in een tekststring
/Zoek de waarde in de tekenreeks van 0 tot het 3e teken, (de eerste drie tekens)
rec.nummer = "10501-2022
rec.Number.Substring(0, 3);
Resultaat="105"
/Zoek de waarde in de tekenreeks vanaf het 2e teken en 3 tekens vooruit
rec.nummer = "10501-2022
rec.Number.Substring(2, 3);
Resultaat="501"
Datumwaarden wijzigen met jaar
rec.Date = rec.Date.AddYears(1);
Datumwaarden wijzigen met aantal dagen
Hier worden 210 dagen toegevoegd aan een bestaande datum. Dat wil zeggen 7 maanden ongeveer
rec.Date = rec.Date.AddDays(210);
Vul de datum van vandaag in
Als je de huidige datum wilt invoegen, kun je typen: DateTime.Now.ToString("dd-MM-jjjj");
Het formaat van de datum kan worden aangepast. Het bovenstaande is dag-maand-jaar. Hieronder staan een paar voorbeelden, en als je er meer wilt, kun je in C#-handleidingen zoeken naar DateTime.
21-10-2023, geschreven "dd-MM-jjjj" 21/10-2023, geschreven "dd/MM-jjjj" 21 oktober 2023, geschreven "dd. MMMM-jjjj"
DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss");
Datum in een veld terugzetten naar lege waarde
Als je een datumveld opnieuw wilt instellen op leeg, kun je de functie 'Nieuwe veldwaarde toewijzen' gebruiken.
Alles bewerken' inschakelen op de pagina
Klik met de rechtermuisknop op het datumveld en selecteer 'Nieuwe veldwaarde toewijzen'.
Vink 'Script' en C# aan. Voer dan "null" in het scriptveld in en druk op OK.
null
Hier zijn enkele voorbeelden uit het rekeningstelsel
//Vervang een teken op een specifieke positie
//Verwijder het eerste teken in een tekenreeks, bijvoorbeeld 0 voor rekeningnr. 01001
rec.Account = "01001";
rec.Account.Substring(1, 4);
Resultaat = "1001"
//Een waarde vooraan toevoegen
rec.Account = "1001";
"0"+rec.Account;
Resultaat = "01001"
//Een waarde erachter toevoegen
rec.Account = "1001";
rec.Account+"0";
Resultaat = "10010"
/Bepaal de lengte van een tekststreepje
rec.Account = "101001";
rec.Account.Length;
Resultaat = 6
Rond drie of meer decimalen af op twee
Math.Round([waarde], [aantal decimalen], [afrondingsoptie])
rec.Verkoopprijs3 = 150.345;
// Naar beneden afronden
Math.Round(rec.SalesPrice3, 2, MidpointRounding.ToEven);
Resultaat = 150,34
//Runder op
Math.Round(rec.SalesPrice3, 2, MidpointRounding.AwayFromZero);
Resultaat = 150,35
Afronding van cijfers en verkoopprijzen op 0,25 cent nauwkeurig
rec.Verkoopprijs1 = 150.345;
/Verkoopprijs1 afronden op de dichtstbijzijnde 0,25 cent
Math.Round((rec.SalesPrice1)/25, 2, MidpointRounding.AwayFromZero)*25;
Resultaat = 150,25
/Verkoopprijs1 afronden op de dichtstbijzijnde 0,25 cent
Math.Round((rec.SalesPrice1)/25, 2, MidpointRounding.AwayFromZero)*25;
Resultaat = 150,50
Datumformaat naar tekstformaat
// Als je een datumwaarde van een datumveld wilt invoegen in een tekstveld, kun je een datumformaat converteren van datum naar tekenreeks met de onderstaande code
// conversie naar slechts één datum
rec.Date.ToString("dd-MM-yyyy")
/Konverteer naar datum en tijd
rec.Date.ToString("dd-MM-yyyy HH:mm:ss")
Tekstformaat naar nummerformaat
/Een tekst omzetten naar getallen.
Convert.ToDouble(rec.InvItem.TariffNumber) * rec.Qty;
Afronding van cijfers en verkoopprijzen op 0,25 cent nauwkeurig
/Verkoopprijs1 afronden op de dichtstbijzijnde 0,25 cent
Math.Round((rec.SalesPrice3)/25, 2, MidpointRounding.AwayFromZero)*25;
Voorbeelden zonder C#
Rekenmethoden Hier zie je de basisberekeningsmethoden.
- + (optelling)
- - (Aftrekken)
- * (Vermenigvuldiging)
- / (Divisie)
- % (Modulus)
- - (Unair Minus)
Voorbeelden
- 5 + 10 * 2 // (is gelijk aan 25)
- (5 + 10) * -2 // (is gelijk aan -30)
- 6 * 5 - 2 / 2 // (is gelijk aan 29)
- 6 * (5 - 2) / 2 // (is gelijk aan 9)
Een veld kan op 3 verschillende manieren een waarde krijgen
- Direct (=)
- Via vermenigvuldiging (+=)
- Via aftrekken (-=)
Voorbeelden
- Count = 10; // Teller ingesteld op 10
- Count += 1; // Teller wordt met 1 verhoogd en wordt 11
- Totaal += Bedrag; // Bedrag wordt toegevoegd aan het Totaal
Wiskundige bewerkingen
- en (&&)
- of (||)
- xor (^)
- == // gelijk
- != // niet gelijk
- > // groter dan
- >= // groter of gelijk aan
- < // minder dan
- <= // minder of gelijk dan
Voorbeelden
- (5 > 3) // waar
- (5 + 4 >= 3* 4) // onwaar
- (Aantal > 0 en Afgebroken != 0)
- (Totaal != MaxValue of Totaal * 100 / SomOfAll >= 50)
Logisch
Een voorbeeld van het maken van een if-instructie in berekende velden enz.
if (rec.IncludeInDiscount== 1) { "Korting wordt geaccepteerd". } anders { { "Korting is niet toegestaan" }