Solución provisional de restricciones de seguridad

Secuencia de comandos que modifica el modelo sourceSet o su elemento secundario, invalida la certificación del formulario y no se puede seguir confiando en el formulario. Puesto que un formulario puede hacerse certificado en cualquier momento de su ciclo de vida, es importante usar técnicas de creación de secuencias de comandos que eviten que el formulario falle después de certificarlo.

Es preferible que trabaje con clones del modelo en lugar del modelo, si tiene la intención de utilizar secuencias de comandos que modifiquen el modelo sourceSet o cualquiera de sus elementos secundarios. La clonación evita que el formulario falle cuando las secuencias de comandos modifican un modelo de datos. Por ejemplo, los formularios que ejecutan tareas comunes, como mostrar registros en una base de datos o seleccionar registros específicos en una base de datos, requieren la modificación de los nodos de conexión de datos contenidos en el modelo sourceSet.

Para clonar el modelo sourceSet, debe crear un método en la secuencia de comandos que defina la conexión de datos que desea modificar en le modelo sourceSet y asegurarse de que la secuencia de comandos sigue utilizando el clon en lugar de la definición.

Tome la siguiente secuencia de comandos de una lista desplegable de datos. La secuencia de comandos rellena la lista a partir de los datos de un origen de datos.

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

Para clonar el modelo sourceSet, es necesario que cambie la línea que accede a él anexando el método clone (1) al final de la sentencia:

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

Nota: Puede almacenar el nodo de conexión de datos clonado en una variable o en una variable definida en un objeto de secuencia de comandos.