Formules
Vue d’ensemble
Les documents 4D Write Pro peuvent contenir des références à des formules 4D telles que des variables, des champs, des expressions, des méthodes projet ou des commandes 4D. Des informations spécifiques telles que le numéro de page peuvent également être référencées par des formules (voir Insertion de document et expressions de page ci-dessous).
L'insertion de formules dans les zones de 4D Write Pro se fait avec la commande WP INSERT FORMULA et peut être lue avec la commande WP Get formulas. Ils sont également retournés par la commande WP Get text.
Les formules sont évaluées :
- lorsqu'elles sont insérées dans un objet de formulaire qui affiche des valeurs calculées
- lorsque l'objet 4D Write Pro est chargé dans un objet de formulaire qui affiche les valeurs calculées
- lorsque la commande WP COMPUTE FORMULAS est appelée
- lorsqu'elles sont "figées" à l'aide de la commande WP FREEZE FORMULAS (si elles n'ont pas déjà été calculées)
- avant impression (si pas déjà calculé)
- avant d'exporter vers .docx (si la formule ne peut pas être mappée avec les formules MS Word)
- lorsque les actions standard pour figer, imprimer, exporter ou calculer des formules sont appelées. Voir Actions standard
Les formules ne sont pas évaluées lorsqu'un document est chargé (en utilisant WP New, WP Insert document body, ou wpArea:=[table]field) :
- si le document est uniquement hors écran,
- si le document est affiché à l'écran, mais l'objet de formulaire n'affiche que les références.
Les formules deviennent des valeurs statiques si vous appelez la commande WP FREEZE FORMULAS (sauf pour le numéro de page et le nombre de pages, voir ci-dessous).
Note de compatibilité : La gestion des expressions à l'aide des commandes ST INSERT EXPRESSION, ST Get expression, ST COMPUTE EXPRESSIONS, et ST FREEZE EXPRESSIONS est obsolète, mais elle est toujours prise en charge dans 4D Write Pro à des fins de compatibilité.
Pour des raisons de sécurité, lorsque des formules sont collées à partir d'une autre application 4D ou d'un environnement externe, seules les valeurs calculées (texte ou images) disponibles au moment de la copie sont collées. Si aucune valeur n'est disponible (par exemple, la formule n'a jamais été calculée), 4D colle la source de la formule sous forme de texte brut.
Exemple
Vous souhaitez remplacer la sélection d'une zone de 4D Write Pro par le contenu d'une 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
Objet de contexte de formule
Vous pouvez insérer des expressions spéciales liées aux attributs du document dans n'importe quelle zone du document (corps, en-tête, pied de page) à l'aide de la commande WP Insert formula. Dans une formule, un objet de contexte de formule est automatiquement exposé. Vous pouvez utiliser les propriétés de cet objet par l'intermédiaire de This :
| Propriétés | Type | Description |
|---|---|---|
| This.title | Text | Titre défini dans l'attribut wk title |
| This.author | Text | Auteur défini dans l'attribut wk author |
| This.subject | Text | Sujet défini dans l'attribut wk subject attribute |
| This.company | Text | Entreprise définie dans l'attribut wk company attribute |
| This.notes | Text | Notes définies dans l'attribut wk notes |
| This.dateCreation | Date | Date de création définie dans l'attribut wk date creation |
| This.dateModified | Date | Date de modification définie dans l'attribut wk date modified |
| This.pageNumber (*) | Number | Numéro de page tel qu'il est défini :
|
| This.pageCount (*) | Number | Nombre de pages : nombre total de pages. Cette formule est toujours dynamique ; elle n'est pas affectée par la commande WP FREEZE FORMULAS. |
| This.document | Object | Document 4D Write Pro |
| This.data | Object | Contexte des données du document 4D Write Pro défini par WP SET DATA CONTEXT |
| This.sectionIndex | Number | L'indice de la section dans le document 4D Write Pro à partir de 1 |
| This.pageIndex | Number | Le numéro de page courant dans le document 4D Write Pro à partir de 1 (indépendamment des numéros de page de la section) |
| This.sectionName | String | Le nom que l'utilisateur donne à la section |
Des propriétés de contexte supplémentaires sont disponibles lorsque vous travaillez avec des tables. Voir Manipulation des tables pour plus d'informations.
(*) Important : This.pageNumber, This.pageIndex et This.pageCount ne peuvent être utilisés que directement dans une formule 4D Write Pro (elles doivent être présentes dans la chaîne formula.source). Elles renverront des valeurs incorrectes si elles sont utilisées par le langage 4D dans une méthode appelée par la formule. Toutefois, elles peuvent être passées en tant que paramètres à une méthode appelée directement par la formule :
- Cela fonctionnera : « formatNumber(This.pageNumber) »
- Cela ne fonctionnera pas : " formatNumber " avec la méthode formatNumber traitant This.pageNumber.
Par exemple, pour insérer le numéro de page dans la zone de pied de page :
$footer:=WP Get footer(4DWP;1)
WP INSERT FORMULA($footer;Formula(This.pageNumber);wk append)
//Utilisation de Formula(myMethod) avec myMethod traitant This.pageNumber
//ne fonctionnerait pas correctement
Objet contexe de formule de tableau
Lorsqu'il est utilisé dans une formule à l'intérieur du tableau, le mot-clé This donne accès à des données différentes selon le contexte :
| Contexte | Expression | Type | Retourne |
|---|---|---|---|
| N'importe où | This.table | Object | Tableau courant |
| This.row | Object | Élément de ligne de tableau courant | |
| This.rowIndex | Number | Indice de la ligne courante, à partir de 1 | |
| Lorsqu'une source de données a été définie pour le tableau | This.table.dataSource | Object (formule) | Source de données en tant que formule |
| This.tableData | Collection ou entity selection (généralement) | table.dataSource évalué | |
| Dans chaque ligne de données lorsqu'une source de données de type tableau renvoie une collection ou une entity selection | This.item.xxx | Tous | Correspond à chaque élément de la collection ou de l'entity selection de la source de données du tableau, par exemple This.item.firstName si l'entité associée possède l'attribut firstName |
| This.itemIndex | Number | Indice de l'élément courant de la collection ou de l'entity selection, à partir de 0 | |
| Dans n'importe quelle ligne (à l'exception des lignes d'en-tête), lorsqu'une source de données de tableau renvoie une collection ou une entity selection | This.previousItems | Collection ou entity selection | Éléments affichés sur les pages précédant la ligne de report inférieure (le cas échéant) ou précédant la ligne de l'expression, y compris la page sur laquelle est affichée la ligne contenant l'expression. Cette expression renvoie le même type de valeur que l'expression This.tableData. |
| Dans une ligne de rupture | This.breakItems | Collection ou entity selection | Éléments de la collection ou de l'entity selection affichés dans les lignes entre :
|
Dans tous les autres contextes, ces expressions retourneront undefined.
Pour plus d'informations sur l'insertion de formules, voir WP INSERT FORMULA.
Insertion des formules date et time
Date
Lorsque la commande Current date, une variable date ou une méthode renvoyant une date est insérée dans une formule, elle est automatiquement transformée en texte en utilisant le format date système court.
Time
Lorsque la commande Current time, une variable heure ou une méthode renvoyant une heure est insérée dans une formule, elle doit être incluse dans une commande String car le type time n'est pas pris en charge en JSON. Examinez les exemples de formules suivants :
// This code is the best practice
$formula1:=Formula(String(Current time)) //OK
// This code will work but is usually not recommended, except after "Edit formula"
$formula2:=Formula from string("String(Current time)") //OK
// Wrong code because time values would be displayed as a longint for seconds (or milliseconds), not as a time
$formula3:=Formula from string("Current time") //NOT valid
$formula4:=Formula(Current time) //NOT valid
Support de la structure virtuelle
Table and field expressions inserted in 4D Write Pro documents support the virtual structure definition of the database. La structure virtuelle exposée aux formules est définie par les commandes SET FIELD TITLES(...;*) et SET TABLE TITLES(...;*).
Quand une structure virtuelle est définie :
- les références aux expressions contenant des champs affichent des noms virtuels alors que le document 4D Write Pro affiche des références et non des valeurs.
- WP Get text retourne des noms de structures virtuelles si l'option
wk expressions as sourceest définie dans le paramètre d'expression. - WP Insert formula ignore la structure virtuelle et attend toujours de vrais noms de table/champs
When a document is displayed in "display expressions" mode, references to tables or fields that do not belong to the virtual structure are displayed with "?" characters, for example [VirtualTableName]? when the field is not defined in the virtual structure.
Affichage des formules
Vous pouvez contrôler comment les formules sont affichées dans vos documents :
- en tant que valeurs ou en tant que références
- lorsqu'il est affiché en tant que références, afficher le texte source, symbole ou nom.
Références ou valeurs
Par défaut, les formules 4D sont affichées sous forme de valeurs. When you insert a 4D formula, 4D Write Pro computes and displays its current value. If you wish to know which formula is used or what is its name, you need to display it as a reference.
Pour afficher les formules en tant que références, vous pouvez:
- check the Show references option in the Property list (see Configuring View properties), or
- use the visibleReferences standard action (see Dynamic expressions), or
- use the WP SET VIEW PROPERTIES command with the
wk visible referencesselector to True.
Les références de formule peuvent être affichées en tant que :
- textes sources (par défaut)
- symbols
- names
References as source texts (default)
When formulas are displayed as references, by default the source text of the formula appear in your document, with a default gray background (can be customized using the wk formula highlight selector).
Par exemple, vous avez inséré la date courante avec un format, la date s'affiche :
Lorsque vous affichez les formules comme références, la source de la formule est affichée :
Les références comme symboles
When formula source texts are displayed in a document, the design could be confusing if you work on sophisticated templates using tables for example, and when formulas are complex:

In this case, you can display formula references as symbols, so that the document is more compact:

Pour afficher les références de formules en tant que symboles, vous pouvez:
- check the Display formula source as symbol option in the Property list (see Configuring View properties), or
- use the displayFormulaAsSymbol standard action (see Using 4D Write Pro standard actions), or
- use the WP SET VIEW PROPERTIES command with the
wk display formula as symbolselector to True.
References as names
You can assign names to formulas, making 4D Write Pro template documents easier to read and understand for end-users. When formulas are displayed as references (and not displayed as symbols) and you have defined a name for a formula, the formula name is displayed.
Par exemple, les références de formule suivantes sont affichées comme texte source par défaut :
Si vous attribuez des noms de formule, ils sont affichés à la place des textes :
Pour attribuer un nom à une formule, vous devez utiliser la commande WP Insert formula avec un paramètre objet. Par exemple :
//inserts the previous day in the document
$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)
Only inline formulas can have a name (formulas for anchored images, break rows, and table datasource formulas cannot have names).
Formula tips
Whatever the formula display mode, you can get additional information on formulas through tips that are displayed when you hover on formulas.
-
When formulas do not have names, tips provide the source text of formulas:
-
When formulas have names but are displayed as values or as symbols, the tip provides the name of formulas:
In this context, you can display the source text of the formula by pressing Ctrl (Windows) or Cmd (macOS) while hovering on the formula.
- When formulas have names and are displayed as names, no tip is displayed by default.
You can display the source text of the formula by pressing Ctrl (Windows) or Cmd (macOS) while hovering on the formula:
[
Voir également
Download HDI database
Using commands from the Styled Text theme