Comment définir des champs calculés

Le module Normes Définition de champ Type d’enregistrement1 est utilisé pour calculer et attribuer une valeur à n’importe quel champ dans n’importe quel module :

Un enregistrement Définition de champ contient du code qui est exécuté chaque fois qu’un enregistrement est créé ou modifié, dont le résultat est une valeur attribuée à un champ immédiatement avant l’enregistrement de l’enregistrement. Cela permet de définir vos propres valeurs Données sommaires, Données étendues ou tout autre calcul de champ sans qu’Axiell ait à modifier les formulaires de la base de données.

L’Entrée de Registre Calculated est utilisée pour contrôler quels champs ont des valeurs calculées. La prise en charge est assurée pour les champs à valeur unique et multiple. Seuls les champs répertoriés dans une Entrée de Registre Calculated auront des valeurs calculées, et tous les autres champs continueront à utiliser le générateur de valeurs par défaut d’EMu.

Pour définir un champ calculé :

  1. Créez un nouvel enregistrement dans le module Normes et sélectionnez Définition de champ dans la liste déroulante Type d’enregistrement :

    Définition de champ

  2. Dans l’onglet Champ, nous nommons la Définition de champ et définissons le module et le champ dont la valeur doit être calculée. Dans Champs de Script nous sélectionnons un ou plusieurs champs dont les valeurs seront disponibles pour le code du script lors du calcul de la valeur du champ :

    Nous voyons ici un exemple d’onglet Champ pour le champ Données sommaires dans le module Thésaurus :

    Définition de champ

  3. L’onglet Script sert à définir une sous-routine Perl (fieldFormat ) pour calculer la valeur du champ. Il comprend deux champs :

    Code

    Champ

    Détails

    Script

    Saisissez une sous-routine Perl permettant de calculer la valeur du champ.

    Conseil : Si une Entrée de Registre Preview a été définie pour cette définition de champ (nommée dans Nom : (Nom du champ)), le bouton Aperçu sera activé. Cliquez sur le bouton pour prévisualiser la valeur du champ calculé.

    Une sous-routine de script Perl vide appelée fieldFormat est ajouté au champ Script lorsqu’un enregistrement de Définition de champ est créé :

    Modifiez la sous-routine pour produire la valeur du champ. La valeur souhaitée pour le champ est définie à l'aide de l'instruction return. Dans cet exemple, return ""; définit la valeur du champ comme étant vide.

    Une valeur return de la fonction Perl undef ne modifie pas la valeur du champ.

    Remarques :
    • Strict : le code de la sous-routine doit être conforme au module strict de perl et toutes les variables utilisées doivent être strictement définies. Ainsi, chaque définition de variable doit être précédée du mot réservé my.
    • Conteneur : le code de la sous-routine s’exécute à l’intérieur d’un conteneur afin que l’exécution du code ne permette que le calcul de la valeur et n’autorise pas l’accès aux fonctions Perl qui interagissent avec la machine (appels du système d’exploitation ou fonctions de fichiers, par exemple).
    Variables prédéfinies

    Les variables Perl suivantes sont accessibles dans le code du script :

    @fields

    liste Perl des valeurs des champs de script.

    $json

    référence à un hachage Perl des valeurs de Champs de Script.

    $luts

    référence à un hachage Perl contenant des valeurs de Liste de consultation au niveau du système.

    $langdelim

    délimiteur utilisé entre les différentes langues.

    $langcount

    nombre de langues prises en charge.

    $ENV{dateformat}

    la chaîne de format de date utilisée dans votre implémentation d'EMu.

    $ENV{timeformat}

    la chaîne de format d’heure utilisée dans votre implémentation d'EMu.

    Chacune de ces variables prédéfinies est présentée ci-dessous :

    Erreurs

    Une liste en lecture seule des erreurs identifiées dans la routine Perl. Toutes les erreurs doivent être corrigées avant que la valeur du champ puisse être générée.