Le script qui modifie le modèle sourceSet ou ses enfants rend la certification du formulaire incorrecte et le formulaire ne peut plus être approuvé. Puisqu’un formulaire peut être certifié à tout moment au cours de son cycle de vie, il est important d’utiliser des techniques de script qui empêchent l’échec du formulaire après sa certification.
Vous devez travailler avec des clones de ce modèle plutôt qu’avec ce modèle si vous envisagez d’utiliser des scripts qui modifient le modèle sourceSet ou l’un de ses enfants. Le clonage empêche l’échec du formulaire lorsque les scripts modifient un modèle de données. Par exemple, les formulaires qui exécutent des tâches communes, telles que l’affichage des enregistrements ou la sélection d’enregistrements spécifiques dans une base de données, nécessitent la modification des nœuds de connexion des données contenus dans le modèle sourceSet.
Pour cloner le modèle sourceSet, vous devez créer une méthode sur le script qui définit la connexion des données que vous souhaitez modifier dans le modèle sourceSet et vous assurer que le script continue d’utiliser le clone au lieu de la définition.
Prenez en considération le script suivant dans une liste déroulante de données. Le script remplit la liste à partir d’une source de données.
...
var oDB = xfa.sourceSet.nodes.item(nIndex);
...
// Search node with the class name "command"
var nDBIndex = 0;
while(oDB.nodes.item(nDBIndex).className != "command")
nDBIndex++;
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayBOF", "bofAction");
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayEOF", "eofAction");
Pour cloner le modèle sourceSet, vous devez modifier la ligne qui a accès à ce dernier en modifiant la méthode de clonage (1) à la fin de l’instruction :
var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);
Remarque : vous pouvez stocker le nœud de connexion de données clonées dans une variable ou une variable définie dans un objet de script.