Scripts client

Le client riche est capable d’exécuter des scripts en local. Ceux-ci sont utilisés afin de mettre en place des macros et des procédures de test ainsi que pour préremplir certains écrans avec des valeurs basées sur le contexte courant.

Les scripts sont présents dans le répertoire Config/Scripts, dans un fichier correspondant à la tâche à laquelle il est associé. Par exemple les scripts de la tâche CRM06 sont situés dans Config/Scripts/CRM06.script.

Syntax

Les scripts sont stockés dans le répertoire Config/Scripts/. Chaque fichier script contient les méthodes pour une tâche spécifique.

OnFieldChange :
{
    // The function OnFieldChange is executed when a field has the property ScriptOnValidate set to "true"

    // We check whether the page containing the field is ATTESTAT ...
    if (CURRENT_DATAPAGE_ID = "ATTESTAT")
    {
        // ... and whether the datafield of the modified field is the end date
        if (CURRENT_DATAFIELD_ID = "ADRDOS.ATTESTAT.FM_PAGE_END_DATE")
        {
            // We check whether that start date has been filled in
            datestr = ADRDOS.ATTESTAT.FM_PAGE_START_DATE (toString)
            if (datestr.length < 2)
            {
                // If the field is not filled-in, display a message to the user
                showMessage("Merci de remplir le champ 'Début incapacité' !");
            }

            // If the timespan is larger than 300 days, we enable the INCAPACITELONGUEDUREE checkbox
            if (ADRDOS.ATTESTAT.FM_PAGE_END_DATE - ADRDOS.ATTESTAT.FM_PAGE_START_DATE > 300)
            {
                ADRDOS.ATTESTAT.INCAPACITELONGUEDUREE = true;
            }
        }
    }

    return;
}

Variables

  • Le langage n’est pas typé.
  • Toutes les variables sont globales. Aucune variable ne peut être locale.
  • Les variables sont déclarées à l’assignation par l’opérateur =.
Counter = 0
PI = 3.14159
Name = "Mattet"
Prénom = "Pierre"
Birthdate = 23/06/1984

L’exemple ci-dessus illustre la déclaration de quelques variables. Notez que les variables peuvent contenir des caractères accentués.

Comme expliqué plus haut, les variables n’ont pas de type, l’interpréteur de script utilise le contexte dans lequel la variable est utilisée pour décider quelles fonctions sont appliquées.

Expressions conditionnelles

Les expressions conditionnelles disponibles sont le si : if (...) { ... } else { ... }.

La condition doit être précisée entre parenthèses. Si plusieurs instructions doivent être exécutés dans une des deux branches, des accolades doivent être ajoutée pour cette branche.

 if (A = B)
 {
     // Instructions
 }
 else if (A = C)
 {
     // Instructions
 }
 else
 {
     // Instructions
 }

Les opérateurs de comparaisons sont =, !=, <, >, <= et >= :

A = B      // Tests if A and B are equal
A != B     // Tests if A and B are different

A > B      // Tests if A is bigger than B
A < B      // Tests if A is smaller than B

A >= B     // Tests if A is bigger or equal than B
A <= B     // Tests if A is smaller or equal than B

Les conditions peuvent être combinés par les opérateurs booléens and et or.

A = 3 or A = 7             // Tests if A equals 3 or 7
A >= 3 and A <= 7          // Tests if A is bigger than 3 and smaller than 7

A >= 3 or (A = 0 and B = 0)
A >= 3 || (A = 0 && B = 0)

Boucles

Le langage de script SAINet permet d’utiliser deux types de boucle : for et while.

For :

 for (i = 1 .. n)
 {
     // Instructions
 }

While:

i = 1
while (i <= n)
{
   // Instruction
   i++
}

Il est possible de combiner l’utilisation d’une boucle for avec l’utilisation de la fonction eval afin d’itérer sur une liste de champs et récupérer les valeurs d’un écran complet :

Total = 0.0;

for (i = 1 .. 9)
{
    Num = i (toString);
    val = eval("ADRDOS.SITUATION_FIN.REVENU0" :: Num);
    Total += val;
}

Fonctions

Tableaux

Goto