Kringgå säkerhetsbegränsningar

Skript som ändrar sourceSet-modellen eller dess underordnade objekt gör formulärets certifiering ogiltigt och formuläret därigenom ej längre tillförlitligt. Eftersom ett formulär kan certifieras när som helst under sin livscykel är det viktigt att du använder skripttekniker som förhindrar formuläret från att lyckas sedan det har certifierats.

Du måste arbeta med kloner av modellen snarare än med själva modellen om du avser att använda skript som ändrar sourceSet-modellen eller dess underordnade objekt. Klonande förhindrar formuläret från att misslyckas när skript ändrar en datamodell. Formulär som t.ex. exekverar vanliga uppgifter som att visa poster i en databas eller välja specifika poster i en databas kräver att dataanslutningsnoderna i sourceSet-modellen ändras.

Om du vill klona sourceSet-modellen måste du skapa en metod i skriptet som definierar den dataanslutning som du vill ändra i sourceSet-modellen och se till att skriptet använder klonen istället för definitionen.

Studera följande skript från en datalista. Skriptet fyller listan med data från en datakälla.

... 
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");

Om du vill klona sourceSet-modellen måste du ändra den rad som ger tillgång till den genom att lägga till clone (1)-metoden i slutet av uttrycket:

    var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);

Obs! Du kan lagra den klonade dataanslutningsnoden i en variabel eller en variabel definierad i ett skriptobjekt.