Conceptos Paramétricos. Programación en javascript

Vea aquí una Introducción a Familias paramétricas

La especificación estándar del FIEBDC, para paramétricos en metalenguaje JS para compilar en DLL se encuentra al final de esta página

 

Medea propone al FIE una nueva programación Javascript más estándar y potente, que es la soportada por la aplicación. Se incluye una herramienta para convertir automáticamente una BD completa desde lenguaje estándar tradicional de paramétricos la javascript de Medea.

El código paramétrico de la persiana Programa javascript para  familia comenzaría como:

 

Especificación introductoria a este lenguaje usando javascript estándar, NO RIGUROSA:

El código de esta pestaña se considera envuelto en una función: function (P, G) { ... }

que recibe como entrada un objeto P con el documento actual de BD (el concepto familia paramétrica con el nombre P.doc, y un objeto G con el paramétrico global opcional para toda la BD (se pueden definir unos parámetros como el ámbito provincial de precios u otros, que queremos que afecten a todos o muchos de los paramétricos de la base.

Uno de los parámetros que hay que definir en el flujo de ejecución es la lista de copiones y parámetros: se hace en una lista de listas P.parll [ [rot, opc1, opc2, opc3...], [], []...]

Luego se definen variables (estrictamente con var o let), como T y U con valores que se van a utilizar en las expresiones. Los códigos no son fijos porque se usan dentro del programa y lo importante es son los parámetros de salida de la función de paramétrico devueltos en el objeto P.

 

El programa TIENE que tener una función P.calcula() que asigna valores, con las operaciones y expresiones que queramos, a las variables del objeto P:

P.cod, : código del derivado paramétrico que va a ser el concepto resultante (reemplaza el $ del código de la familia, como ECMF$ con los valores seleccionados, por ejemplo: ECMFaba)

P.res: resumen

P.pre: precio (si no tiene descomposición)

P.tex: texto extenso

P.plis: objeto con métodos que serán los códigos de pliegos utilizados y su contenido textual, como por ejemplo: P.pli= {NOR:'aaaaaa', GES:'hhhhhh', TER:'uuuuuu'} de forma que podemos acceder a cada pliego con P.plis.NOR y P.plis[NOR]

P.desl: array con los códigos de los conceptos de la descomposición (si la tiene) del concepto, y su cantidad por unidad de este concepto. Ejemplo:

P.desl.push(["PBAC.1aa", T[P.C][P.B][P.A]])
P.desl.push(["PBRG.1ea", (U[P.C][P.B][P.A]*(2*(P.C==a)))])

 

Opcionalmente puede contener una función P.invalida() que define qué opciones de entrada son incompatibles; retorna true o distinto de null si la selección de opciones actual es inválida.

Al ser javascript estándar se pueden usar todas las estructuras del lenguaje con grandes ventajas. Por ejemplo, introducir los textos mediante "template strings", o sea, formateando los textos multilínea entre comillas simples a la izquierda ` , que además admiten variables con el formato: ${expresión o variable} :

 

Al ejecutar el código, se obtienen las variables: P.A (0,1,2,3...), P.$A (textoOpcion1, textoOpcion2,...) y P.a (a,b,c,d... opción elegida en el parámetro)

 

En el caso poco habitual de definir parámetros Globales, se hace en la descripción paramétrica de un concepto fijo con el _id=uni.$

 

Además hay definidas algunas funciones macro que están por especificar, para ampliar las estándar de javascript, como LETRA() que pone en mayúsculas la letra de la opción, y algunas otras de uso muy habitual.

 

Atención a algunos errores habituales programando:

- El quinto parámetro de los paramétricos se denomina $F, ya que $E es una variable reservada para el error.

- Aunque Medea puede soportar conceptos familia paramétrica con el código sin terminar en $, es incorrecto, ya que la especificación FIE obliga a ello y esa exportación no sería estándar.