{"id":142520,"date":"2024-05-23T09:07:28","date_gmt":"2024-05-23T09:07:28","guid":{"rendered":"https:\/\/helpcenter.ila.cegid.com\/xrpenterprise\/\/"},"modified":"2026-03-24T10:43:16","modified_gmt":"2026-03-24T10:43:16","slug":"motor-de-formulas","status":"publish","type":"xrpenterprise","link":"https:\/\/helpcenter.ila.cegid.com\/es\/xrpenterprise\/plataforma\/guias\/utilidades\/articulo\/motor-de-formulas","title":{"rendered":"C\u00f3mo funciona el motor de f\u00f3rmulas"},"content":{"rendered":"<section class=\"av_textblock_section \"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock  '   itemprop=\"text\" ><h3>Conceptos b\u00e1sicos<\/h3>\n<p>F\u00f3rmula es un conjunto de herramientas de programaci\u00f3n y usuario para evaluar, editar y gestionar f\u00f3rmulas. Una f\u00f3rmula es una expresi\u00f3n\u00a0a partir de la que se obtiene\u00a0un resultado. Las f\u00f3rmulas son la base de aplicaciones como las hojas de c\u00e1lculo, pero su uso se puede extender a muchas otras.<\/p>\n<p>La\u00a0API f\u00f3rmula permite evaluar din\u00e1micamente f\u00f3rmulas en tiempo de ejecuci\u00f3n. Las f\u00f3rmulas se escriben en una sintaxis muy similar a Java est\u00e1ndar. Su sintaxis admite expresiones matem\u00e1ticas b\u00e1sicas e incorpora toda la potencia del lenguaje Java. En una f\u00f3rmula puede usar cualquiera de las estructuras de control de flujo de Java (if, for, etc.), declarar variables locales, e instanciar y usar clases de bibliotecas externas.<\/p>\n<p>La API permite definir un contexto de f\u00f3rmula. El contexto es un conjunto de datos que acompa\u00f1an la f\u00f3rmula durante su ejecuci\u00f3n. El uso m\u00e1s com\u00fan del contexto es la definici\u00f3n de variables con sus respectivos valores. Al evaluar una f\u00f3rmula, \u00e9sta podr\u00e1 acceder al valor de las variables. El contexto se puede configurar din\u00e1micamente para permitir que cada aplicaci\u00f3n pueda definir su propio conjunto de variables.<\/p>\n<p>El entorno f\u00f3rmula dispone de una serie de funciones predefinidas de uso general. A trav\u00e9s del contexto tambi\u00e9n puede a\u00f1adir din\u00e1micamente nuevas funciones que la f\u00f3rmula podr\u00e1 utilizar durante su ejecuci\u00f3n. Con este mecanismo cada aplicaci\u00f3n puede publicar su propia colecci\u00f3n de funciones ajustable a sus necesidades concretas.<\/p>\n<p>Algunos ejemplos sencillos de f\u00f3rmulas:<\/p>\n<ul>\n<li>F\u00f3rmula muy b\u00e1sica: 2+3.<\/li>\n<li>F\u00f3rmula que multiplica por 2 la variable de contexto: @A * 2.<\/li>\n<li>F\u00f3rmula que usa una de las funciones predefinidas: WeekDay(@B).<\/li>\n<li>F\u00f3rmula que hace uso de instrucciones de control de flujo: if (@A == 1) { return 1; } else {return 2;}.<\/li>\n<\/ul>\n<p>La\u00a0biblioteca de f\u00f3rmula dispone de un editor gr\u00e1fico de f\u00f3rmulas, que se puede se configurar totalmente por la aplicaci\u00f3n.<\/p>\n<p>El cat\u00e1logo de f\u00f3rmulas es otra herramienta de la biblioteca que le permite crear su propia colecci\u00f3n de f\u00f3rmulas de uso generalizado, que posteriormente podr\u00e1 incorporar dentro de otras f\u00f3rmulas. Puede acceder al cat\u00e1logo de f\u00f3rmulas seleccionando el punto Sistema \/ Herramientas de usuario, en el punto\u00a0<strong>Cat\u00e1logo de f\u00f3rmulas<\/strong>.<\/p>\n<h3>Funciones b\u00e1sicas<\/h3>\n<p>Las f\u00f3rmulas se escriben en una sintaxis similar a Java est\u00e1ndar. Las diferencias entre la sintaxis de una f\u00f3rmula y la sintaxis de Java son las siguientes:<\/p>\n<ul>\n<li>Una f\u00f3rmula no puede contener declaraciones de clases ni m\u00e9todos.<\/li>\n<li>Puede contener declaraciones de variables locales, instrucciones de control de flujo y, en general, cualquier c\u00f3digo Java v\u00e1lido, a excepci\u00f3n del caso del punto anterior.<\/li>\n<li>Result es una palabra clave reservada en sintaxis de una f\u00f3rmula. Debe asignar el resultado de la f\u00f3rmula a esta variable. Por ejemplo, result = 3;.<\/li>\n<li>Si la f\u00f3rmula consta s\u00f3lo de una l\u00ednea, no es necesario asignar la variable result ni escribir el punto y coma final. Por ejemplo, 2 + 3 es equivalente a result = 2 + 3;. Puede utilizar indistintamente cualquiera de las dos f\u00f3rmulas.<\/li>\n<li>La variable result es de tipo Object en Java,\u00a0es decir,\u00a0la f\u00f3rmula puede devolver como resultado cualquier tipo de objeto, ya sea num\u00e9rico o cualquier otro.<\/li>\n<li>Para hacer referencia a una variable de contexto, es necesario utilizar el car\u00e1cter especial @ como prefijo a la variable. Por ejemplo, result = @A + @B; donde A y B son variables de contexto.<\/li>\n<li>Para modificar el contenido de las variables del contexto, se emplea la instrucci\u00f3n set seguida de la variable con @. Por ejemplo, set @A = 2.<\/li>\n<li>Se admiten sentencias del tipo import &lt;package&gt;; para enlazar con clases externas.<\/li>\n<\/ul>\n<\/div><\/section>\n<section class=\"av_textblock_section \"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock  '   itemprop=\"text\" ><h2>C\u00f3mo funciona el editor de f\u00f3rmulas<\/h2>\n<p>La\u00a0biblioteca de f\u00f3rmula dispone de un editor gr\u00e1fico de f\u00f3rmulas. Las propiedades de una f\u00f3rmula son las siguientes:<\/p>\n<ul>\n<li><strong>Nombre<\/strong>. El identificador o nombre de la f\u00f3rmula.<\/li>\n<li><strong>Tipo retorno<\/strong>. El tipo de dato de retorno de la f\u00f3rmula. Puede ser un n\u00famero entero, n\u00famero con decimales, texto, moneda o fecha.<\/li>\n<li><strong>F\u00f3rmula<\/strong>. C\u00f3digo fuente en Java de la f\u00f3rmula.<\/li>\n<\/ul>\n<p>El editor de la f\u00f3rmula dispone de los siguientes accesos directos y acciones:<\/p>\n<ul>\n<li>Aceleradores de edici\u00f3n deshacer (Ctrl+Z), rehacer (Ctrl+Y) y seleccionar todo (Ctrl+A).<\/li>\n<li>Aceleradores de edici\u00f3n cortar (Ctrl+X), copiar (Ctrl+C) y pegar (Ctrl+V).<\/li>\n<li>Asistente de contenidos con b\u00fasqueda (Ctrl + Barra espaciadora). Se muestra un mensaje de ayuda sobre los elementos clave del c\u00f3digo de la f\u00f3rmula.<\/li>\n<li>Aumentar o disminuir el zoom del texto (Ctrl + Rueda del rat\u00f3n -desplazamiento-).<\/li>\n<\/ul>\n<p>El editor de la f\u00f3rmula permite las siguientes acciones:<\/p>\n<ul>\n<li><strong>Validar<\/strong>. Validar la correcci\u00f3n de la f\u00f3rmula.<\/li>\n<li><strong>Probar<\/strong>. Probar la ejecuci\u00f3n de la f\u00f3rmula.<\/li>\n<\/ul>\n<p>Adem\u00e1s dispone de una potente herramienta de b\u00fasqueda por la ayuda jerarquizada.<\/p>\n<\/div><\/section>\n<section class=\"av_textblock_section \"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock  '   itemprop=\"text\" ><h2>C\u00f3mo funciona el cat\u00e1logo de f\u00f3rmulas<\/h2>\n<h3>Conceptos b\u00e1sicos<\/h3>\n<p>El cat\u00e1logo de f\u00f3rmulas es una biblioteca p\u00fablica de f\u00f3rmulas gestionada por UI. Le permite crear su propia colecci\u00f3n de f\u00f3rmulas, para utilizarlas posteriormente en otras f\u00f3rmulas.<\/p>\n<p>Cada f\u00f3rmula tiene un nombre \u00fanico o identificador, que no se puede repetir en otro contexto ni producto. Junto al identificador se almacena el propio c\u00f3digo fuente de la f\u00f3rmula, y otra informaci\u00f3n adicional como la descripci\u00f3n, los par\u00e1metros y el tipo de retorno.<\/p>\n<p>El cat\u00e1logo est\u00e1 organizado con la siguiente estructura jer\u00e1rquica: producto, contextos y f\u00f3rmulas.<\/p>\n<p>El contexto\u00a0<strong>General<\/strong>\u00a0es un contexto gen\u00e9rico siempre disponible, y en el que puede a\u00f1adir sus f\u00f3rmulas. El uso de otros contextos est\u00e1 ligado a usos espec\u00edficos en el \u00e1mbito de una aplicaci\u00f3n. En este caso, la propia aplicaci\u00f3n provee el contexto adecuado para poder agregar en \u00e9l sus f\u00f3rmulas.<\/p>\n<p>Para acceder a la herramienta, desde\u00a0<strong>Sistema<\/strong>\u00a0y\u00a0<strong>Herramientas de usuario<\/strong>; en\u00a0<strong>Cat\u00e1logo de f\u00f3rmulas<\/strong>.<\/p>\n<h3>Funciones b\u00e1sicas<\/h3>\n<p>Despu\u00e9s de seleccionar el producto y el contexto en el que desea crear la f\u00f3rmula (puede seleccionar uno existente o crear un nuevo, situ\u00e1ndose sobre\u00a0<strong>Repositorio<\/strong>, mediante el bot\u00f3n secundario del rat\u00f3n), puede crear una nueva f\u00f3rmula, situ\u00e1ndose sobre \u00e9ste, mediante el bot\u00f3n secundario del rat\u00f3n.<\/p>\n<p>Puede indicar el nombre y la descripci\u00f3n de la f\u00f3rmula, seleccionar el tipo de retorno, los tipos de par\u00e1metros, la ayuda de los par\u00e1metros\u00a0y el c\u00f3digo fuente de la f\u00f3rmula.<\/p>\n<h3>Funciones avanzadas<\/h3>\n<p>Para usar una f\u00f3rmula del cat\u00e1logo dentro de otra f\u00f3rmula, est\u00e9 catalogada o no, basta con escribir el nombre de la f\u00f3rmula con el prefijo \u00ab@\u00bb y el sufijo \u00ab()\u00bb. Su uso es muy parecido a las funciones predefinidas del sistema a\u00f1adiendo la arroba como prefijo.<\/p>\n<p>Por ejemplo, una f\u00f3rmula que usa una hipot\u00e9tica f\u00f3rmula catalogada de nombre \u00abpi\u00bb: \u00ab@pi()\u00bb.<\/p>\n<p>Al definir la f\u00f3rmula es importante especificar el tipo de retorno en la casilla\u00a0<strong>Retorno<\/strong>, con las opciones siguientes:\u00a0<strong>N\u00famero entero, N\u00famero con decimales, Texto, Moneda,<\/strong>\u00a0o bien\u00a0<strong>Fecha<\/strong>.<\/p>\n<p>Es posible definir una f\u00f3rmula que admita par\u00e1metros. Para ello es necesario indicar los campos\u00a0<strong>Par\u00e1metros<\/strong>\u00a0y<strong>Ayuda par\u00e1metros<\/strong>\u00a0con los siguientes valores:<\/p>\n<ul>\n<li><strong>Par\u00e1metros<\/strong>. Indique los tipos de los par\u00e1metros separados por coma. Los tipos se indican con los literales int, double, string, currency o date, dependiendo de cu\u00e1l sea su tipo de datos.<\/li>\n<li><strong>Ayuda par\u00e1metros<\/strong>. Indique la ayuda (multiidioma) de cada uno de los par\u00e1metros, con el formato \u00abNombre par\u00e1metro 1=Descripci\u00f3n1,Nombre par\u00e1metro 2=Descripci\u00f3n2,&#8230;\u00bb.<\/li>\n<\/ul>\n<p>Los par\u00e1metros son an\u00f3nimos, no tienen nombre. Para acceder a los par\u00e1metros desde el interior de la f\u00f3rmula se deben usar las variables especiales pN, donde N es el ordinal del par\u00e1metro definido: 1 para el primero, 2 para el segundo, etc.<\/p>\n<p>Por ejemplo, se define la funci\u00f3n suma(), que acepta dos par\u00e1metros de tipo entero. La f\u00f3rmula retorna la suma de ambos valores.<\/p>\n<ul>\n<li><strong>F\u00f3rmula<\/strong>. Suma<\/li>\n<li><strong>Descripci\u00f3n<\/strong>. Suma de dos valores enteros<\/li>\n<li><strong>Retorno<\/strong>. N\u00famero entero<\/li>\n<li><strong>Par\u00e1metros<\/strong>. int,int<\/li>\n<li><strong>Ayuda par\u00e1metros<\/strong>. N\u00famero1=Primer sumando,N\u00famero2=Segundo sumando<\/li>\n<li><strong>F\u00f3rmula<\/strong>. p1+p2<\/li>\n<\/ul>\n<p>Desde otra f\u00f3rmula suma(), se usa de la siguiente manera: \u00ab@suma(2, 3)\u00bb.<\/p>\n<p>Cada una de las f\u00f3rmulas del cat\u00e1logo est\u00e1n sujetas a los mecanismos de seguridad est\u00e1ndar. Esto permite asignar permisos de lectura, modificaci\u00f3n, ejecuci\u00f3n o eliminaci\u00f3n para cada usuario individual.<\/p>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2850,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","tags":[],"mercados":[432],"categoria-xrpenterprise":[9754],"class_list":["post-142520","xrpenterprise","type-xrpenterprise","status-publish","hentry","mercados-es","categoria-xrpenterprise-utilidades"],"_links":{"self":[{"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/xrpenterprise\/142520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/xrpenterprise"}],"about":[{"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/types\/xrpenterprise"}],"author":[{"embeddable":true,"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/users\/2850"}],"replies":[{"embeddable":true,"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/comments?post=142520"}],"version-history":[{"count":0,"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/xrpenterprise\/142520\/revisions"}],"wp:attachment":[{"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/media?parent=142520"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/tags?post=142520"},{"taxonomy":"mercados","embeddable":true,"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/mercados?post=142520"},{"taxonomy":"categoria-xrpenterprise","embeddable":true,"href":"https:\/\/helpcenter.ila.cegid.com\/es\/wp-json\/wp\/v2\/categoria-xrpenterprise?post=142520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}