Aller au contenu principal
Version : 21

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é.

note

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ésTypeDescription
This.titleTextTitre défini dans l'attribut wk title
This.authorTextAuteur défini dans l'attribut wk author
This.subjectTextSujet défini dans l'attribut wk subject attribute
This.companyTextEntreprise définie dans l'attribut wk company attribute
This.notesTextNotes définies dans l'attribut wk notes
This.dateCreationDateDate de création définie dans l'attribut wk date creation
This.dateModifiedDateDate de modification définie dans l'attribut wk date modified
This.pageNumber (*)NumberNuméro de page tel qu'il est défini :
  • - à partir du début du document (par défaut) ou
  • - à partir de la première page de la section s'il est défini par section.
Cette formule est toujours dynamique ; elle n'est pas affectée par la commande WP FREEZE FORMULAS.
This.pageCount (*)NumberNombre de pages : nombre total de pages.
Cette formule est toujours dynamique ; elle n'est pas affectée par la commande WP FREEZE FORMULAS.
This.documentObjectDocument 4D Write Pro
This.dataObjectContexte des données du document 4D Write Pro défini par WP SET DATA CONTEXT
This.sectionIndexNumberL'indice de la section dans le document 4D Write Pro à partir de 1
This.pageIndexNumberLe 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.sectionNameStringLe nom que l'utilisateur donne à la section
note

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 :

ContexteExpressionTypeRetourne
N'importe oùThis.tableObjectTableau courant
This.rowObjectÉlément de ligne de tableau courant
This.rowIndexNumberIndice de la ligne courante, à partir de 1
Lorsqu'une source de données a été définie pour le tableauThis.table.dataSourceObject (formule)Source de données en tant que formule
This.tableDataCollection 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 selectionThis.item.xxxTousCorrespond à 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.itemIndexNumberIndice 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 selectionThis.previousItemsCollection 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 ruptureThis.breakItemsCollection ou entity selectionÉléments de la collection ou de l'entity selection affichés dans les lignes entre :
  • la ligne de rupture actuelle et la ligne de rupture précédente du même niveau (ou le début du tableau) si la ou les ligne(s) de rupture sont affichées après la ligne de données.
  • la ligne de rupture courante et la suivante du même niveau (ou la fin du tableau) si la ou les ligne(s) de rupture sont affichées avant la ligne de données.

Dans tous les autres contextes, ces expressions retourneront undefined.

note

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 source est définie dans le paramètre d'expression.
  • WP Insert formula ignore la structure virtuelle et attend toujours de vrais noms de table/champs
note

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 references selector 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 symbol selector 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)

note

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