Op deze pagina hebben we een aantal tips en trucs voor de rapportgenerator verzameld.
Versie-94 Maak je rapport taalonafhankelijk met GetAppEnumIndex()
Als je debiteuren hebt met veel talen of landen, moet je vaak controleren op enums in alle talen in een IF statement, wat behoorlijk ingewikkeld kan worden en vaak eindigt in fouten of weglatingen voor nieuwe debiteuren met nieuwe talen/landen. Of als je financiële rapporten wilt maken waarin je verwijst naar het rekeningtype in het rekeningstelsel en je moet dit afdrukken en filteren in verschillende talen, dan zul je ook veel IF statements moeten maken met betrekking tot de naamgeving van rekeningtypes in de gewenste talen.
Hiervoor kunnen we de functie
GetAppEnumIndex() gebruiken
GetAppEnumIndex('AppEnumNavn', Feltværdien)
Met de functie GetAppEnumIndex() kun je de index van het enum vastleggen waarin de waarde zich bevindt.
De functie gebruiken
Hier is een voorbeeld van verlegging waarbij we vragen of de BTW-zone de EU is. In het Frans wordt het niet EU met UE genoemd, daarom kan een IF-zin erg lang en ingewikkeld worden.
Een If-instructie om te controleren of een btw-zone op een dibitor EU is, zou er als volgt uit kunnen zien:
Iif(Contains([DebtorInfo].[VAT zone],'EU') And [InvoiceInfo].[VAT amount]=0 , FormatString('VAT No. {0} / REVERSE CHARGE',[DebtorInfo].[VAT-No]),'')
Deze IF-verklaring zal niet werken voor een Franse debiteur, omdat de btw-zone voor de EU in het Frans 'États membres de l'UE' heet, dus je moet meer dan alleen de EU controleren.
Met de functie GetAppEnumIndex() leggen we de index vast en kunnen we alleen hierop testen.
Hieronder staat het voorbeeld van het ophalen van de index van de BTW-zone, die voor EU-landen index=1 heeft
GetAppEnumIndex('VatZones', [DebtorInfo].[VAT zone])
Dus een IF-instructie om te controleren of de BTW-zone op de debiteur is ingesteld als een EU-lidstaat kan als volgt worden geschreven:
Iif(GetAppEnumIndex('VatZones', [DebtorInfo].[VAT zone])=1, 'Er EU land','Er IKKE EU land')
En de uiteindelijke code om te controleren of de debiteur zich in de juiste btw-zone bevindt en btw-bedrag=0 heeft, is als volgt geschreven:
Iif(GetAppEnumIndex('VatZones', [DebtorInfo].[VAT zone])=1 AND [InvoiceInfo].[VAT amount]=0, FormatString('VAT No. {0} / REVERSE CHARGE',[DebtorInfo].[VAT-No]),'')
AppEnumName is te vinden onder
Tools/Custom fields, waar je een nieuw custom veld maakt en
AppEnum selecteert in het
Type veld.
Referentie geeft een overzicht van alle ingebouwde enums die beschikbaar zijn in Uniconta.
Dit is de lijst met beschikbare AppEnum's en de naam in de lijst is de
AppEnumName die als eerste in de functie moet verschijnen.
Sommige tekst in een veld vet maken
Als je bijvoorbeeld de postcode vet wilt weergeven in een postcode- en plaatsreeks, kun je deze opmaak gebruiken:
FormatString('<b>{0}</b> {1}',[DebiteurInfo].[Postcode],[DebiteurInfo].[Plaatsnaam])
Let op! Vergeet niet het veld Tekstmarkering toestaan aan te vinken (bovenaan onder het tandwiel)
Heb code in bankafschrift
Als je een FIK-code in je bankafschrift wilt hebben waarmee de klant meerdere facturen tegelijk kan betalen, voeg je gewoon het veld in:
[DebiteurInfo].[FIK Code].
Velden moeten worden ingevoegd in de PageHeader of PageFooter ribbon.
BTW-nul weergeven op totalen
Vink onder BTW-instelling de BTW-code met 0% aan in het veld Toon 0,0 op de factuur.
Naam van het land
Als je landnamen op je standaardrapporten wilt, moet je CountryName en DeliveryCountryName gebruiken.
Ze drukken de naam van het land correct af.
Het afleveradres/installatie staat 'verkeerd' op mijn facturen.
Lees in het gekoppelde artikel hoe je dit kunt laten werken.
Het afleveradres/installatie staat verkeerd op mijn factuur
Valuta in de rapportgenerator (GetExchangeRate())
Het is mogelijk om het valutabedrag voor een specifieke datum op te halen in de rapportgenerator. Dit wordt gedaan via een script.
using Uniconta.DataModel;
using Uniconta.Common;
private void label5_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e) {
var repObj = (Uniconta.ClientTools.DataModel.IReportScript)reportInstance;
var xrlabel = sender as XRLabel;
if(repObj != null)
{
var exchangeRate = repObj.GetExchangeRate(Currencies.DKK,Currencies.EUR,DateTime.Now);
if(xrlabel != null)
xrlabel.Text = Convert.ToString(exchangeRate);
}
else
xrlabel.Text = "No Conversion";
}
XtraReport reportInstance;
private void Invoice_23052022_BeforePrint(object sender, System.ComponentModel.CancelEventArgs e) {
reportInstance = sender as XtraReport;
}
Het bovenstaande script moet worden gemaakt BeforePrint, en in het bovenstaande geval wordt de code geplaatst op een label genaamd 'label5' en het resultaat wordt weergegeven in het rode vak hieronder.
Oude rapporten bijwerken
Als je bijvoorbeeld een oud rapport hebt waar je
f niet kunt vinden in eigenschappen, kun je de bindingen in het rapport bijwerken.
NB! Maak een kopie van het rapport en test de kopie voordat je het rapport definitief bijwerkt.

Klik op Bindingen converteren en selecteer Ja om door te gaan. Als je de foutmelding 'Conversion faild' krijgt, sluit dan gewoon je kopie en open deze opnieuw.
Als je niet te veel speciale codering hebt gedaan, zou het op zijn plaats moeten vallen als je het rapport opnieuw opent.
Parameters in rapporten met meerdere bronnen
Als je Multisource-rapporten gebruikt en parameters gebruikt, moet je de naam van de tabel waarop je wilt filteren opgeven in de parameternaam.
Hier is een parameter gemaakt op de tabel 'CRMFollowUpClientUser'. De naam bevat daarom de tabelnaam 'CRMFollowUpClientUser'. Je kunt ervoor schrijven: 'prmEmp_'.

Om de parameters te laten werken, moet een filter worden ingesteld op elke band voor de afzonderlijke tabellen die zijn geselecteerd in het Multisource-rapport.

Het filterveld bevindt zich onder het tandwiel op de riem.
Vertaal teksten met je eigen labels
Het is mogelijk om je eigen labels te gebruiken om je eigen teksten te vertalen in de rapportgenerator. Hiervoor moet je echter labels hebben gemaakt voor alle talen die in de boekhouding worden gebruikt.
Een voorbeeld kan zijn dat je de betalingsvoorwaarden in verschillende talen wilt hebben. Dit is ook mogelijk met vaste teksten, met behulp van een Iif-statement, en kan er als volgt uitzien:
iif([DebtorInfo].[Sprogkode]=1,
FormatString('Terms of payment: {0} - final due date for payment {1:dd-MM-yyyy}', [InvoiceInfo].[PaymentRef].[Navn],[InvoiceInfo].[Forfaldsdato]),
FormatString('Betalingsbetingelser: {0} - betaling senest den {1:dd-MM-yyyy}', [InvoiceInfo].[PaymentRef].[Navn],[InvoiceInfo].[Forfaldsdato]))
Het bovenstaande is duidelijk met twee of drie talen, maar als je meer talen wilt, kun je labels gebruiken.
Eerst moet je een label maken voor elke tekst en taal die je nodig hebt. Lees hier meer over
Aangepaste labels...
In het bovenstaande voorbeeld hebben we een label nodig met de tekst "Betalingsvoorwaarden: " en een label met " - uiterste betaaldatum ", en in het Deens "Betalingsbetingelser " en " - betaling senest den ".
In het rapport moet je twee Labels invoegen waar je de naam van het label schrijft, bijv. @Item voor itemnaam, of @DueDate voor vervaldatum.
Deze labels moeten worden verborgen, d.w.z. je moet het vinkje weghalen uit het vakje Zichtbaar onder het menu Eigenschappen en Uiterlijk (de twee tandwielen).
Je voegt nog een label in dat je kunt gebruiken om de tekst op je rapport te schrijven.
Om hetzelfde resultaat te krijgen als de code hierboven, moet je de volgende FormatString() in dit veld maken
FormatString('{0} {1} - {2} {3:dd-MM-yyy}', [ReportItems.lblPaymentText].[Text], [InvoiceInfo].[PaymentRef].[Navn], [ReportItems.lblDueDate].[Text], [InvoiceInfo].[Forfaldsdato])
Om de werkelijke waarde van een label te krijgen, gebruik je de functie ReportItems.[naam van het label waarvan je de waarde wilt][Text].
Aangepaste velden en tabellen
In de rapportgenerator is het mogelijk om aangepaste velden en tabelvelden te openen via Uniconta's eigen functies.
OPMERKING: Als je aangepaste tabellen gebruikt, moet je een veld hebben aangemaakt. Je kunt niet zomaar gegevens gebruiken in het veld 'Naam', dat automatisch wordt aangemaakt wanneer je een tabel aanmaakt.
| Functie |
Beschrijving van functie |
| GetUserFieldByIndex |
De functie wordt gebruikt om gegevens op te halen uit aangepaste velden of tabellen. Deze functie gebruikt indexen. |
| GetUserFieldByName |
De functie wordt gebruikt om gegevens op te halen uit aangepaste velden of tabellen. Deze functie gebruikt de naam. |
| Aantal2Tekst |
Vertaalt een getal naar tekst.
Number2Text(1) wordt One
Number2Text(2) wordt Two
enz. |
Voorbeeld van gebruik in een rapport

Direct kopiëren
// For tabeller
GetUserFieldByIndex([InvItem].[KodeTabellenRef],0)
GetUserFieldByName([InvItem].[KodeTabellenRef],'tabFldNavn')
// For Brugerdefinerede felter
GetUserFieldByIndex([InvItem],0)
GetUserFieldByName([InvItem],'fldNavn')
- Roept een aangepaste tabel op. Selecteer het via Field List in de rapportgenerator om het juiste pad te krijgen. Stel vervolgens de index in op het veld dat je in het rapport wilt gebruiken.
- Roept een aangepaste tabel op. Selecteer het via Veldlijst in de rapportgenerator om het juiste pad te krijgen. Stel vervolgens de naam in van het veld dat je in het rapport wilt gebruiken. De naam moet tussen apostrofs staan.
- Roept een aangepast veld op. Selecteer de tabel of map waarin het veld wordt gemaakt. In het voorbeeld wordt een veld weergegeven dat is gemaakt onder de inventaris, d.w.z. de map [InvItem]. Voer vervolgens het indexnummer voor het veld in.
- Roept een aangepast veld op. Selecteer de tabel of map waarin het veld wordt gemaakt. In het voorbeeld wordt een veld weergegeven dat is gemaakt onder de inventaris, d.w.z. de map [InvItem]. Voer vervolgens de naam van het veld in.
Aangepaste tabellen
Aangepaste velden
Verberg de waarde 0.00 in hoeveelheid op een factuurrapport
In dit voorbeeld wordt de belastingmodule gebruikt voor een dieseltoeslag. In sommige gevallen kan dit resulteren in een 0,00 op de factuurafdruk die je wilt verbergen.
Je kunt dit doen door het veld
Nummer op het rapport te selecteren. Dit veld is een tekstveld en moet eerst worden gewijzigd in een getalveld. Dit doe je met de functie ToDouble()

ToDouble is ingesteld rond [Quantity] of de Engelse naam [FormattedInvoiceQty], zoals in het onderstaande voorbeeld.
Iif(ToDouble([FormattedInvoiceQty])<>0, [FormattedInvoiceQty], '')
Hiermee wordt getest of het veld
Aantal verschilt van 0. Als dat zo is, wordt de waarde van
Aantal afgedrukt op het rapport.
Stel "Pagina x" van "totaal" aantal pagina's in
Als je "Pagina x van totaal aantal pagina's" wilt weergeven op je rapport, moet je een prefix en sufix onder format op het veld zetten. Denk aan spaties na "Pagina" en voor "van".

Plak vervolgens {1:n0} in het format. De totale regel in het format moet er als volgt uitzien:
Productregels die worden gedeeld op de pagina, bij het pagina-einde
Als je veel orderregels hebt of lange teksten op je orderregels, heb je misschien meer pagina's nodig in je rapporten.
Als je wilt voorkomen dat de itemregels van de ene naar de andere kant worden gesplitst, stel dan "Bij elkaar houden" of "Bij elkaar houden" in voor het lint DetailsInvTransactie.
Duizend scheider in rapporten
Standaard gebruiken de speciale rapporten het land van de debiteur om te definiëren hoe het duizendtallenscheidingsteken moet worden weergegeven.
| Land |
Duizendtallen en decimaalscheidingsteken |
| Denemarken, Duitsland, Italië, Nederland, enz. |
1.234.567,89 |
| Zweden, Noorwegen, Finland enz. |
1 234 567,89 |
| Groot-Brittannië, VS, China enz. |
1,234,567.89 |
| Zwitserland |
1'234'567.89 |
Het is mogelijk om deze instellingen te wijzigen in de speciale rapporten. Voor nieuwe rapporten is het aangeboren, voor oude rapporten moet je het rapport openen en een kopie van het rapport opslaan, die dan dezelfde optie heeft.
Open een aangepast rapport en selecteer Bewerken en Lokalisatie instellen.

Vervolgens krijg je vier opties
- Standaard: Wordt weergegeven alsof er geen lokalisatie is geselecteerd.
- Taal debiteur: De taal van de debiteur wordt gebruikt om te bepalen hoe de lokalisatie wordt weergegeven.
- Land debiteur: gebruikt het land van de debiteur om te bepalen hoe de lokalisatie wordt weergegeven.
- Land bedrijf: gebruikt het land van het bedrijf om te bepalen hoe de lokalisatie wordt weergegeven.
Factuur en MobilePay-link in het rapport
In bankafschriften, herinneringen en rentefacturen kunnen we een link invoegen naar de facturen die in deze rapporten worden vermeld, evenals een link naar MobilePay, zodat de klant via MobilePay kan betalen.
Opmerking: MobilePay moet worden aangemaakt in Bedrijfs-/bedrijfsgegevens in het veld "Mobile Pay" onder het vak Bankrekeningen.
Het veld met de factuurkoppeling heet:
[ ViewInvoiceLink] in het Engels
Het veld met de MobilPay-link heet:
[Mobilepay link] in het Engels:
[MobilePayLink].
De velden bevinden zich onder "DebtorInfo/Transactions/" in de "Field List" in de rapportgenerator.
Deze velden bevatten een link naar de factuur of MobilPay.
De nieuwe rapporten zullen deze links automatisch bevatten, terwijl rapporten die vóór versie 87 zijn gemaakt handmatig moeten worden bijgewerkt.
Links maken met logo's in oude rapporten
De logo's die in de Uniconta-rapporten zijn gebruikt, kunnen hieronder worden bekeken en gedownload.
Klik met de rechtermuisknop op het logo en selecteer "Afbeelding opslaan als...".
Sla de afbeelding op je pc op en je kunt deze gebruiken in de rapporten.

Open het oude rapport, inclusief bankafschriften.

Gebruik de afbeeldingscomponent om deze twee afbeeldingen in te voegen in het lint "DetailTransacties". De afbeeldingen zijn 48*48 groot.
Selecteer onder uitdrukkingen in eigenschappen respectievelijk
[Link naar factuur] en
[Mobilepay-link] in het veld "Navigatie-URL" - zie onderstaande afbeelding.
Om deze pictogrammen alleen te laten verschijnen op items die gefactureerd zijn, voegt u onder expressies in eigenschappen de volgende code in
Iif(Contains([IsDCInvoice], 'True'), true , false ) in het zichtbare veld.
Je kunt ook
Iif(Len([Link naar factuur])> 0
, true, false) schrijven, wat betekent dat als de lengte van de link groter is dan 0 tekens, het pictogram wordt weergegeven.

Sla het rapport op en test het door een bankafschrift naar jezelf te sturen.
Printerinstelling in rapporten
Het is mogelijk om een vaste printer in te stellen op een rapport. Open het rapport en selecteer het grijze gebied rond het rapport.
Selecteer vervolgens Pagina-instelling in Eigenschappen. Hier is het mogelijk om een printer te selecteren.
Aangepaste lettertypen in rapporten
Op onze server zijn de standaardlettertypen geïnstalleerd op een Windows-serverinstallatie.
Als je je eigen aangeschafte lettertypes wilt gebruiken, kunnen die alleen worden gebruikt als je je rapporten via Outlook verstuurt. De PDF wordt dan gegenereerd op de lokale pc en het lettertype wordt erin gebruikt.
Productnaamgroepen in rapporten
Itemnaamgroepen worden alleen ondersteund in "Speciale rapporten".
In speciale rapporten zoals facturen worden teksten en artikelnummers automatisch vertaald als je artikelnaamgroepen gebruikt voor je producten.
Als je zowel de gegevens van de artikelnaamgroep als de eigen informatie van het artikel moet schrijven, wordt de eigen informatie van het artikel opgehaald uit InvItem.
Lay-out van rapportversie is verouderd
Als u de melding "Lay-out rapportversie is verouderd" krijgt, probeert u een rapport te openen dat is gegenereerd in een nieuwere versie van Uniconta.
Werk Uniconta bij naar de huidige versie om deze problemen op te lossen.
Maximale bestandsgrootte is overschreden
Als je de melding "Maximale bestandsgrootte overschreden" krijgt, bevat je rapport waarschijnlijk een grote afbeelding.
Een rapport mag geen afbeeldingen bevatten die in totaal groter zijn dan 500 KB.

Een idee zou kunnen zijn om de afbeelding extern op een server, website of webshop te plaatsen waar je de afbeelding vandaan kunt halen, zodat deze geen ruimte inneemt in het rapport.
Waarom kunnen andere gebruikers mijn updates niet zien?
Andere gebruikers moeten Uniconta afsluiten en opnieuw beginnen.
Als het aangepaste velden zijn en ze hebben een lay-out opgeslagen, dan hebben ze een lay-out opgeslagen zonder jouw velden en moeten ze hun lay-out verwijderen en opnieuw openen.
Hoe lijn ik de velden netjes uit?
Om de velden/labels in de rapportgenerator aan te passen, kun je het menu Layout gebruiken
Selecteer eerst het besturingsvak, dan de andere en selecteer dan "Links uitlijnen" (1)

Als je wilt dat de velden dezelfde lengte en hoogte hebben, klik je op "Maak dezelfde breedte/hoogte" (2).
En als je gelijke of geen ruimte tussen de regels wilt, klik dan op "Verticale tussenruimte verwijderen" (3)
Op mijn factuur staat alleen de eerste regel?
Als je de lay-out hebt gewijzigd en je factuur of ander type rapport slechts één regel toont in plaats van alle regels, kan het zijn dat je tape de gegevensverbinding is kwijtgeraakt.
Om dit te doen, klikt u met de rechtermuisknop op het lint in Report Explorer of DetailReport:

Gegevensbron/Data Source moet worden ingevuld voor een factuur, zoals in de bovenstaande afbeelding.
Hoe formatteer ik een prijs met meer dan twee decimalen?
Standaard worden alle reële getallen geformatteerd met twee decimalen "{0:n2}". Als je meer decimalen nodig hebt, kun je het formaat op je label veranderen van "{0:n2}" in {0:#,###,##0.00###} zoals in de afbeelding hieronder.
Kleurverandering in lijstwerk
Je kunt kleurwijzigingen aanbrengen in je lijsten, facturen enz. zodat elke regel een andere kleur krijgt.
Klik op afbeeldingen...
Productafbeeldingen invoegen in rapporten
Als je afbeeldingen van je producten hebt gemaakt, kun je deze gebruiken in je rapporten.
- Een afbeelding invoegen op het rapport, bijvoorbeeld onder de artikelregels op een factuur
- Wijs de afbeeldingscomponent de afbeeldingswaarde uit de inventaris toe
- Selecteer de kleine pijl naast de afbeelding
- Selecteer PhotoBuffer in het veld Expression
Hoe bepaal je de grootte van afbeeldingen?
- Een afbeelding invoegen op het rapport
- Selecteer de kleine pijl naast de afbeelding
- Selecteer een van de formaatmethoden onder in het menu dat verschijnt
- Bekijk hier voorbeelden van de verschillende maten: https://docs.devexpress.com/XtraReports/DevExpress.XtraReports.UI.XRPictureBox
Item links invoegen in het rapport
Als je afbeeldingen, links of documenten op je product hebt gemaakt en geselecteerd, kun je deze met behulp van links in je rapporten invoegen.
Op de productkaart zijn er drie velden:
Foto,
URL en
Bijlage.
Deze velden worden als volgt genoemd in de rapportgenerator: [Foto link], [URL link] en [Attatchment link].
Als je deze velden bijvoorbeeld onder je artikelregel op een factuur zet, zie je links naar de aangemaakte elementen op het artikel.
Als je ze ook 'linkbaar' wilt maken, selecteer je de velden één voor één en selecteer je voor elk veld Expressies onder Eigenschappen (pictogram als een f) en selecteer je in het veld Navigatie-URL bijvoorbeeld [Fotolink] om de link actief te maken in het document.
BTW op factuurlay-out
Regels met tweedehands btw op facturen moeten worden gemarkeerd
Het moet duidelijk zijn op de factuur welke regels onder de regels voor tweedehands btw vallen.
Voeg daarom een veld toe met een sterretje op de regels als de btw op de regels tweedehands btw is.
Iif([VAT]='Unused','*' ,''' )
Info over facturen voor btw op tweedehands goederen
Op facturen met btw op tweedehands goederen moet de koper erop worden gewezen dat de aankoop-btw niet kan worden afgetrokken.
Hieronder zie je een voorbeeld van de tekst/codefragment die aan de factuurlay-out kan worden toegevoegd.
Let op! De code moet zo worden aangepast dat het woord Ongebruikt overeenkomt met de naam van de btw-code die het bedrijf gebruikt voor de btw op tweedehands goederen.
Iif([FactuurInfo].[BTW]='Ongebruikt','Artikelen gemarkeerd met * worden verkocht volgens de speciale regels voor gebruikte goederen. De koper kan de BTW die in de prijs is inbegrepen daarom niet aftrekken." ,[InvoiceInfo].[VAT 2]="Unused","Ongebruikt","Artikelen gemarkeerd met * worden verkocht volgens de speciale regels voor gebruikte goederen. De koper kan de in de prijs inbegrepen btw daarom niet aftrekken.",'''','' )
BTW moet verborgen zijn
Het BTW-bedrag mag niet op de factuur verschijnen en moet daarom verborgen zijn.
In het paneel met de BTW-regel moet de volgende code worden ingevoegd onder het menu-item Zichtbaar.
Opmerking! De naam Unused moet worden vervangen door de code van de btw-code van het bedrijf.
[Moms]!='Ongebruikt
