Donnez vie à vos documents numériques !
 

Répondre à : Gérer l’ordre d’exécution des scripts

abracadabraPDF Forums PDF – Général Gérer l’ordre d’exécution des scripts Répondre à : Gérer l’ordre d’exécution des scripts

#60704
Merlin
Maître des clés

Bonjour et bienvenue.

Il faut savoir une chose : la propriété Obligatoire des champs n’est vérifiée qu’avant l’utilisation de la fonction “Submit”, et uniquement celle là.
C’est pour ça qu’on doit utiliser du JavaScript si on veut détourner cette propriété pour vérifier les champs avant signature, impression, etc.

Ce qui me crève les yeux dans ton script c’est que la vérification ne sert à rien puisqu’il ne se passe rien à la fin, et parce-que quoi qu’il arrive la fonction “Submit” est ensuite exécutée, avec préalablement la vérification des champs obligatoires puisque par nature c’est à ça que ça sert.

C’est pour ça que tu as l’impression que la vérification ne s’effectue qu’après, mais en fait elle s’effectue deux fois : avant signature mais sans jamais réagir, et avant l’envoi, avec une réaction appropriée.

En clair, tout ce qui se trouve après la dernière accolade fermante devrait se trouver à la place de :

Code:
// script d’envoi de l’email

qui est une ligne désactivée.

Comme ceci (non testé) :

Code:
console.clear();
var variableObligat = “oui”;
var emptyTest = /^s*$/;
  for(var i=0;i  var nameField = this.getNthFieldName(i);
  var fld = this.getField(nameField);
      if(fld.type==”text”) {
        if(fld.required) {
            console.println(“Nom du champ = ” + nameField + “rNom utilisateur : ” + fld.userName);
            if(emptyTest.test(fld.value)) {
              var alertOblig2 = “Champ “” + fld.userName + “”.nn” + “Ce champ est obligatoire. Merci de le corriger.”;
              app.alert({cMsg: alertOblig2, cTitle: “FO 0027”, nIcon: 1});
              var variableObligat = “non”;
              fld.strokeColor = rougeCorporate;
              fld.setFocus();
              break;
            }
            else {fld.strokeColor = color.transparent;}
        }
      }
  }
if (variableObligat == “oui”) {
    var docName = this.documentFileName;
var vDot = docName.indexOf(“.”,0);
var fTitre = docName.substring(0,vDot);
app.mailMsg(true, “”, “”, “”, “FO 0027″+”_”+fTitre, “Bonjour,nnVous trouverez ici (mettre le lien hypertexte du FO) la fiche de circulation citée en objet pour commentaires et signature.nLes tableaux de résultats ainsi que toute information utile (courbes, images, etc…) sont placés en PJ du pdf.nnBien cordialement,”);
    }

D’autre part tu devrais faire attention aux caractères accentués dans les alertes, pour obtenir un affichage cohérent entre plateformes il faut utiliser l’encodage Unicode.
Voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/

Sinon tu risques d’obtenir du charabia de ce genre :

ascii.png