A menudo necesitarás generar números o códigos únicos como parte de un resultado particular en la pantalla de "Formulario" ("Form").

Esto es común en casos como número de ordenes, códigos de facturas, IDs de documentos y muchos otros escenarios.


Puedes lograr esto usando una fórmula para crear un valor de texto que asignes en las propiedades de "Valores Dinámicos" ("Dynamic Value") de un "Formulario" ("Form").

Esencialmente lo que harás es concatenar varios pedazos de datos para crear un código válido, pero razonablemente único.


Ten en cuenta que decimos "razonablemente único".

Esto es porque finalmente la fórmula generará un código único para el contexto del dispositivo.

Es importante utilizar elementos de datos como la fecha/hora o los detalles del usuario para asegurar que el código resultante no pueda ser duplicado en otro usuario o dispositivo.


Usualmente nos preguntan si es posible tener un número secuencial central del que todos los dispositivos activos.

De esta manera, los códigos en todas las entradas de formularios serán secuenciales y numerados en orden de entrada/captura.


No apoyamos este escenario, principalmente, porque no hay ninguna garantía acerca de la conectividad de red en el momento de la captura del formulario.

Entonces, ¿Qué pasa si el usuario está desconectado en el momento en que captura el formulario?

También, debes tener en cuenta que puede haber un lapso de tiempo entre la captura de entrada del formulario en el dispositivo y cuando los datos realmente se cargan en el servidor (de nuevo depende de la conexión de red y otros factores del dispositivos).


De lo anterior, debes apegarte a generar códigos en una manera especifica según el dispositivo.


Si necesitas tener un número secuencial central, entonces tendrás que manejar esto en tu sistema personal.

Por ejemplo, cuando las entradas de datos de un formulario son transferidas a tu propio sistema, puedes asignar a cada entrada un nuevo número secuencial centralizado.



Te recomendamos que uses la función counter() concatenada con userexternalid()/useremail() y también format-date() en today()/now()

La función de "External ID" es útil para almacenar un ID de nómina y otro código que tiene un significado en el sistema de destino final.


Aquí hay algunos ejemplo de fórmulas para generar códigos únicos para dispositivos específicos:


uuid(10) arroja algo así: X7E5F3A2L3


random() arroja algo así: 0.14935942 que puedes después multiplicar/aproximar para obtener la precisión deseada.


counter() arroja un número ascendente secuencialmente para un dispositivo específico.


concat(format-date(now(), 'yyyyMMdd'), '-', counter()) arroja algo así: 20140313-39


concat(format-date(now(), 'yyyyMMdd'), '-', userexternalid(), '-', counter()) arroja algo así: 20140313-USER1-39