Een uniek nummer of code genereren
Vaak zul je een uniek nummer of code moeten genereren als onderdeel van de gegevensuitvoer van een bepaald formulierscherm.
Dit is gebruikelijk in gevallen zoals ordernummers, factuurtcodes, document-id’s en veel andere scenario’s.
Je kunt dit bereiken door een formule te gebruiken om een tekstwaarde te maken die je toewijst aan de eigenschap Dynamische Waarde van het aangewezen formulierveld.
In wezen zul je verschillende stukjes gegevens samenvoegen om een betekenisvolle, maar redelijk unieke code te maken.
Opmerking: we zeggen “redelijk uniek”.
Dit komt omdat de formule uiteindelijk een unieke code genereert voor de lokale apparaatcontext.
Het is belangrijk om gegevenselementen te gebruiken zoals de datum/tijd of de gegevens van de gebruiker om ervoor te zorgen dat de resulterende code niet op andere gebruikers of apparaten kan worden gedupliceerd.
We worden vaak gevraagd of het mogelijk is om een centraal sequentieel nummer te hebben waarvan alle apparaten op de hoogte zijn.
Op deze manier zouden de codes op alle formulierinvoeren sequentieel kunnen zijn en genummerd in volgorde van invoer/opname.
We ondersteunen dit scenario vooral aan de zijde van de Gegevenssjabloon door een speciale ingebouwde tijdelijke aanduiding {{ENTRYID}} beschikbaar te stellen.
Deze speciale tijdelijke aanduiding is momenteel niet beschikbaar voor formuliergebruik – deze is alleen beschikbaar op Gegevenssjablonen.
Je kunt dus genummerde uitvoer maken als je gegevenssjablonen gebruikt.
Raadpleeg het artikel “Ingebouwde tijdelijke aanduiding” in het gedeelte Gegevenssjablonen van onze documentatie.
Afgezien van de ENTRYID-optie op gegevenssjablonen, ondersteunen we geen centrale nummering aan de formulierzijde omdat er geen garantie is voor netwerkconnectiviteit op het moment van formulieropname.
Dus wat gebeurt er als de gebruiker op het moment van formulieropname is verbroken?
Houd er ook rekening mee dat er een tijdsverschil kan zijn tussen formulieropname op het apparaat en het moment waarop de gegevens daadwerkelijk naar de server worden geüpload (wederom afhankelijk van netwerkverbinding en andere apparaatfactoren).
We raden daarom aan codes op een apparaatspecifieke manier te genereren.
We raden je aan iets te gebruiken zoals de counter()-functie samengevoegd met userexternalid()/useremail() en bijvoorbeeld met format-date() op today()/now() ook.
De externe id op gebruikers is bijzonder nuttig voor het opslaan van iets als een salarisboeking-id of een ander code dat betekenis heeft in het uiteindelijke doelsysteem.
Als je absoluut een centraal sequentieel nummer moet hebben, dan moet je dit in je achtergrond-externe systeem afhandelen.
Met andere woorden: wanneer formulierinvoergegevens naar je relevante backendsysteem worden verplaatst, wijs op dat moment elke invoer een nieuw gecentraliseerd sequentieel nummer toe.
Hier zijn enkele voorbeelden van formules om apparaatspecifieke unieke codes te genereren:
uuid(10) geeft iets als: X7E5F3A2L3
random() geeft iets als: 0.14935942 wat je vervolgens kunt vermenigvuldigen/afronden enz. om de gewenste nauwkeurigheid te krijgen
counter() geeft je een sequentieel toenemend nummer dat apparaatspecifiek is.
We raden je sterk aan de apparaatteller() waarde samen te voegen met datum en/of gebruikersidentificatoren, zoals deze hieronder:
concat(format-date(now(), ‘yyyyMMdd’), ‘-‘, counter()) geeft iets als: 20140313-39
concat(format-date(now(), ‘yyyyMMdd’), ‘-‘, userexternalid(), ‘-‘, counter()) geeft iets als: 20140313-USER1-39
Antwoord niet gevonden?
Staat jouw vraag er niet bij? Neem dan direct contact met ons op.
Contact opnemen