Macros .set_object, .set_value et .unset

Ces macros sont utilisées afin de définir une variable locale de type objet (objet local) ou un type de valeur, ou d'annuler leur définition.

Utilisez la syntaxe suivante pour créer un objet local :
.set_object ( [portée.] nom [,ref-objet [,mode]])
Utilisez la syntaxe suivante pour créer une variable locale :
.set_value ( [portée.] nom, valeur [,mode] [,unescape])
Utilisez la syntaxe suivante pour supprimer un objet local ou une variable locale :
.unset ( [portée.] nom)

Les paramètres suivants sont disponibles :

Paramètre

Description

portée

[facultatif] Spécifie la portée qualifiante. Si vous ne définissez pas de portée, la portée de l'objet est la portée courante. Utilisez le mot clé this pour attributer de façon explicite la portée de l'objet courant, ou Parent pour attriibuer celle de l'objet parent .

Type : Template simple qui renvoie une portée d'objet ou de collection

nom

Spécifie le nom de l'objet ou de la variable, que vous pouvez référencer ailleurs dans le template sous la forme %name%.

Type : Template simple

ref-objet

[.set_object uniquement - facultatif] Spécifie une référence d'objet. Si aucune référence n'est spécifiée ou si une chaîne vide est fournie, la variable est une référence à l'objet actif dans la portée de conversion courante.

Type : [portée.]portée-objet]

valeur

[.set_value uniquement] Spécifie la valeur à donner à la variable.

Type : Template simple (les séquences d'échappement sont ignorées)

mode

[facultatif] Spécifie le mode de création. Vous pouvez choisir l'une des valeurs suivantes :
  • new - Force la (re)-définition de la variable à la portée courante. Recommandé lorsqu'une variable portant le même nom peut être déjà définie dans une portée précédente.

  • update – [défaut] Si une variable du même nom existe déjà, celle-ci est modifiée, dans le cas contraire, une nouvelle variable est créée.

  • newifundef - Définit la variable dans la portée courante si elle n'a pas été définie dans une portée externe, dans le cas contraire, rien ne se passe.

unescape

[.set_value uniquement - facultatif] Spécifie que les caractères d'échapement tels que \n dans la valeur fournie doivent être interprétés. Par défaut, ces caractères ne sont pas interprétés.

Examples:
Exemples
.set_object(Attribute1, Attributes.First)
.set_value(FirstAttributeCode, %Attributes.First.Code%)
%FirstAttributeCode% (OID: %Attribute1%)
Résultat :
a1 (OID: 63442F85-48DF-42C8-92C1-0591F5D34525)
.set_value(this.key, %Code%-%ObjectID%)
Résultat :
C1-40D8F396-EE29-4B7B-8C78-E5A0C5A23325
.set_value(i, 1, new)
%i?%
.unset(i)
%i?%
Résultat :
true
false
Le premier appel à %i?% produit true car la variable i est définie, et le second produit false, car elle a été annulée.
.set_value(oneline, "line1\nline2")   
.set_value(twolines,"line3\nline4",, unescape)
%oneline%
%twolines%
Result:
line1\nline2
line3
line4
Remarque : Vous pouvez utiliser l'opérateur déréférençant, * (voir Opérateurs du langage de génération par template), afin de convertir la valeur d'une variable avec la macro .set_value en un nom de template. Par exemple, le code suivant équivaut à %Code%.:
.set_value(i, Code)
%*i%