Gestión de fórmulas
Generalidades
Los documentos 4D Write Pro pueden contener referencias a fórmulas 4D como variables, campos, expresiones, métodos proyecto o comandos 4D. Información específica como el número de página también puede ser referenciada a través de fórmulas (ver Inserción de documentos y expresiones de página más abajo).
La inserción de fórmulas en las áreas de 4D Write Pro se realiza con el comando WP INSERT FORMULA y puede leerse utilizando el comando WP Get formulas. También los devuelve el comando WP Get text.
Las fórmulas son evaluadas:
- cuando se insertan en un objeto de formulario que muestra valores calculados
- cuando el objeto 4D Write Pro se carga en un objeto de formulario que muestra valores calculados
- cuando se llama al comando WP COMPUTE FORMULAS
- cuando estén "congelados" usando el comando WP FREEZE FORMULAS (si aún no se ha calculado)
- antes de imprimir (si no se ha calculado ya)
- antes de exportar a .docx (si la fórmula no se puede asignar con fórmulas MS Word)
- cuando se llaman las acciones estándar para congelar, imprimir, exportar o calcular fórmulas. Ver Acciones estándar
Las fórmulas no son evaluadas cuando un documento es cargado (usando WP New, WP Insert document body, o wpArea:=[table]field
):
- si el documento sólo está fuera de la pantalla,
- si el documento se muestra en pantalla pero el objeto formulario sólo muestra referencias.
Las fórmulas se convierten en valores estáticos si se llama al comando WP FREEZE FORMULAS (excepto para el número de página y el recuento de páginas, ver más abajo).
Nota de compatibilidad: el manejo de expresiones utilizando los comandos ST INSERT EXPRESSION, ST Get expression, ST COMPUTE EXPRESSIONS, y ST FREEZE EXPRESSIONS es obsoleto, sin embargo, sigue siendo soportado en 4D Write Pro por compatibilidad.
Por razones de seguridad, cuando se pegan fórmulas desde una aplicación 4D diferente o un entorno externo, solo se pegan los valores calculados (texto o imágenes) disponibles en el momento de la copia. Si no hay ningún valor disponible (por ejemplo, la fórmula nunca se calculó), 4D pega la fuente de la fórmula como texto sin formato.
Ejemplo
Desea sustituir la selección en un área de 4D Write Pro por el contenido de una variable:
var fullName: Text
var $sel: Object
fullName:="John Smith"
$sel:=WP Selection range(4DWPArea)
Case of
:(Form event code=On Clicked)
WP INSERT FORMULA($sel;Formula(fullName);wk replace)
End case
Objeto de contexto de fórmula
Puede insertar expresiones especiales relacionadas con los atributos del documento en cualquier área del documento (cuerpo, encabezado, pie de página) utilizando el comando WP Insertar fórmula. Dentro de una fórmula, un objeto contextual de la fórmula se expone automáticamente. Puede utilizar las propiedades de este objeto a través de This:
Propiedades | Tipo | Descripción |
---|---|---|
This.title | Text | Título definido en el atributo wk title |
This.author | Text | Autor definido en el atributo wk author |
This.subject | Text | Asunto definido en el atributo wk subject |
This.company | Text | Empresa definida en el atributo wk company |
This.notes | Text | Notas definidas en el atributo wk notes |
This.dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
This.dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
This.pageNumber (*) | Number | Número de página tal y como está definido |
This.pageCount (*) | Number | Conteo de páginas: recuento total de páginas. Esta fórmula es siempre dinámica; no se ve afectada por el comando WP FREEZE FORMULAS. |
This.document | Object | Documento 4D Write Pro |
This.data | Object | Contexto de datos del documento 4D Write Pro definido por WP SET DATA CONTEXT |
This.sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
This.pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
This.sectionName | String | El nombre que el usuario da a la sección |
Existen propiedades de contexto adicionales cuando se trabaja con tablas. Vea Gestión de tablas para más información.
(*) Importante: This.pageNumber, This.pageIndex y This.pageCount sólo deben utilizarse directamente en una fórmula 4D Write Pro (deben estar presentes en la cadena formula.source). Devolverán valores incorrectos si son utilizados por el lenguaje 4D dentro de un método llamado por la fórmula. Sin embargo, pueden pasarse como parámetros a un método llamado directamente por la fórmula:
- Esto funcionará: " formatNumber(This.pageNumber) "
- Esto NO funcionará: « formatNumber » con el método formatNumber de procesamiento This.pageNumber.
Por ejemplo, para insertar el número de página en el pie de página:
$footer:=WP Get footer(4DWP;1)
WP INSERT FORMULA($footer;Formula(This.pageNumber);wk append)
//Usando Formula(myMethod) con myMethod procesando This.pageNumber
//no funcionaría correctamente
Table formula context object
When used in a formula within the table, the This keyword gives access to different data according to the context:
Context | Expression | Tipo | Devuelve |
---|---|---|---|
Anywhere | This.table | Object | Current table |
This.row | Object | Current table row element | |
This.rowIndex | Number | Index of the current row, starting from 1 | |
When a datasource has been defined for the table | This.table.dataSource | Objet (fórmula) | Datasource as a formula |
This.tableData | Collection or Entity selection (usually) | Evaluated table.dataSource | |
In each data row when a table datasource returns a collection or an entity selection | This.item.xxx | Cualquiera | Mapped to each item of the table datasource collection or entity selection, for example This.item.firstName if the associated entity has the firstName attribute |
This.itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | |
In any row (except header rows) when a table datasource returns a collection or an entity selection | This.previousItems | Collection or Entity selection | Items displayed on the pages before the bottom carry over row (if any) or before the row of the expression, including the page where is displayed the row containing the expression. This expression returns the same type of value as the This.tableData expression. |
In a break row | This.breakItems | Collection or Entity selection | Items of the collection or entity selection displayed in the rows between:
|
In any other contexts, these expressions will return undefined.
For more information about formula insertion, see WP INSERT FORMULA.
Inserción de fórmulas de fecha y hora
Date
Cuando se inserta en una fórmula el comando Current date, una variable de fecha o un método que devuelve una fecha, ésta se transformará automáticamente en texto utilizando el formato abreviado de fecha del sistema.
Time
Cuando el comando Current time, una variable de hora o un método que devuelve una hora es insertado en una fórmula, debe estar encerrado dentro de un comando String porque el tipo de tiempo no está soportado en JSON. Considera los siguientes ejemplos de fórmulas:
// Este código es la mejor práctica
$formula1:=Formula(String(Current time)) //OK
// Este código funcionará pero normalmente no se recomienda, excepto después de "Edit formula"
$formula2:=Formula from string("String(Current time)") //OK
// Código incorrecto porque los valores de tiempo se mostrarían como un longint para los segundos (o milisegundos), no como un tiempo
$formula3:=Formula from string("Current time") //NO válido
$formula4:=Formula(Current time) //NO válido
Soporte de estructura virtual
Las expresiones de tablas y campos insertadas en los documentos 4D Write Pro soportan la definición de la estructura virtual de la base de datos. La estructura virtual expuesta a las fórmulas se define mediante los comandos SET FIELD TITLES(...;*) y SET TABLE TITLES(...;*).
Cuando se define una estructura virtual:
- las referencias a expresiones que contienen campos muestran nombres virtuales cuando el documento 4D Write Pro muestra referencias y no valores.
- WP Get text devuelve nombres de estructura virtual si la opción
wk expressions as source
está establecida en el parámetro de expresiones. - WP Insert formula ignora la estructura virtual y siempre espera nombres de tablas/campos reales
Cuando un documento se visualiza en modo "expresiones de visualización", las referencias a tablas o campos que no pertenecen a la estructura virtual se muestran con caracteres "?
", por ejemplo [VirtualTableName]?
cuando el campo no está definido en la estructura virtual.
Mostrar fórmulas
Puede controlar cómo se muestran las fórmulas en sus documentos:
- como valores o como *referencias
- cuando se muestran como referencias, muestran el texto, símbolo o nombre de la fuente.
Referencias o valores
Por defecto, las fórmulas 4D se muestran como valores. Al insertar una fórmula 4D, 4D Write Pro calcula y muestra su valor actual. Si desea saber qué fórmula se utiliza o cuál es su nombre, debe mostrarla como referencia.
Para mostrar fórmulas como referencias, puede:
- check the Show references option in the Property list (see Configuring View properties), or
- utilizar la acción estándar visibleReferences (ver Expresiones dinámicas), o bien
- usa el comando WP SET VIEW PROPERTIES con el selector
wk visible references
en True.
Las referencias a fórmulas pueden mostrarse como:
- textos fuente (por defecto)
- symbols
- names
Referencias como textos fuente (por defecto)
Cuando las fórmulas se muestran como referencias, por defecto el texto fuente de la fórmula aparece en su documento, con un fondo gris por defecto (puede personalizarse usando el selector wk formula highlight
).
Por ejemplo, ha insertado la fecha actual junto con un formato, la fecha se muestra:
Cuando se muestran fórmulas como referencias, se muestra la fuente de la fórmula:
Referencias como símbolos
Cuando los textos fuente de las fórmulas se muestran en un documento, el diseño puede resultar confuso si se trabaja con plantillas sofisticadas que utilizan tablas, por ejemplo, y cuando las fórmulas son complejas:
En este caso, puede mostrar las referencias a fórmulas como símbolos , para que el documento sea más compacto:
Para mostrar las referencias a fórmulas como símbolos, puede:
- check the Display formula source as symbol option in the Property list (see Configuring View properties), or
- utilizar la acción estándar displayFormulaAsSymbol (ver Uso de las acciones estándar de 4D Write Pro), o bien
- usa el comando WP SET VIEW PROPERTIES con el selector
wk display formula as symbol
en True.
Referencias como nombres
Puede asignar nombres a las fórmulas, haciendo que los documentos de plantilla de 4D Write Pro sean más fáciles de leer y entender para los usuarios finales. Cuando las fórmulas se muestran como referencias (y no como símbolos) y se ha definido un nombre para una fórmula, se muestra el nombre de la fórmula.
Por ejemplo, las siguientes referencias a fórmulas se muestran como texto fuente por defecto:
Si asigna nombres a las fórmulas, se mostrarán en lugar de los textos:
Para asignar un nombre a una fórmula, debe utilizar el comando WP Insert formula con un parámetro objeto. Por ejemplo:
//inserta el día anterior en el documento
$o:=New object("formula";Formula(Current date-1); "name"; "Yesterday")
$range:=WP Text range(WPArea;wk start text;wk end text)
WP INSERT FORMULA($range;$o;wk append)
Sólo las fórmulas en línea pueden tener un nombre (las fórmulas para imágenes ancladas, romper filas y las fórmulas de fuentes de datos de tablas no pueden tener nombres).
Consejos sobre fórmulas
Sea cual sea el modo de visualización de las fórmulas, puede obtener información adicional sobre las fórmulas a través de tips que se muestran al pasar el ratón sobre las fórmulas.
-
Cuando las fórmulas no tienen nombre, los consejos proporcionan el texto fuente de las fórmulas:
-
Cuando las fórmulas tienen nombre pero se muestran como valores o como símbolos, el consejo ofrece el nombre de las fórmulas:
En este contexto, puede visualizar el texto fuente de la fórmula pulsando Ctrl (Windows) o Cmd (macOS) mientras pasa el ratón sobre la fórmula.
-
Cuando las fórmulas tienen nombres y se muestran como nombres, no se muestra ningún consejo por defecto. Puede mostrar el texto original de la fórmula presionando Ctrl (Windows) o Cmd (macOS) mientras pasa el cursor sobre la fórmula:
!
Ver también
Descargar base de datos HDI
Usar comandos del tema Texto con estilo