abracadabraPDF › Forums › PDF – Général › Script qui a l’air de marcher mais…
- Ce sujet contient 7 réponses, 2 participants et a été mis à jour pour la dernière fois par
michel c., le il y a 1 année et 5 mois.
-
CréateurSujet
-
17 décembre 2021 à 19:31 #70156
michel c.
ParticipantBonjour, j’ai fait un script (j’ai adapté un script qui m’a été proposé ici il y a quelques jours)
Il fonctionne mais la console affiche une erreur : Field:Calculate:5: TypeError: this.getField(…) is null
L’idée c’est que lorsque les élèves sont en stage (PFMP) ou en vacances, les apprentis ne peuvent pas être au lycée.
Si l’utilisateur coche la case Au lycée pour l’apprenti alors que la case au lycée n’est pas cochée pour les élèves, une alerte apparait et la case est décochée…
Merci
Attachments:
You must be logged in to view attached files. -
CréateurSujet
-
AuteurRéponses
-
19 décembre 2021 à 17:34 #70159
Merlin
Maître des clésBonjour
« Le champ n’existe pas » parce-que tu fais faire une boucle au script alors qu’il n’y a que des champs « .0« , donc pas besoin de boucle ni de « +i« .
if (this.getField("CheckBox.0").value == "A" & this.getField("TheckBox.0").value != "D") {
app.alert({cMsg:"Attention, les apprentis ne peuvent pas être au lycée quand les élèves sont en PFMP ou en vacances", nIcon:2});
this.getField("CheckBox.0").value = "Off"
}
Attachments:
You must be logged in to view attached files.19 décembre 2021 à 19:05 #70161michel c.
ParticipantBonjour,
j’avais voulu simplifier mon document pour le poster mais ce n’était pas une bonne idée.
Voici le document complet ou presque.
Cette erreur est toujours présente et je n’arrive pas à activer la ligne 37 sans que le message d’alerte s’affiche 53 fois…
Merci
Attachments:
You must be logged in to view attached files.20 décembre 2021 à 11:29 #70163michel c.
ParticipantJe viens de tenter un truc : créer des variables de A à I avec une valeur 0 qui se mettent à 1 pour chaque « erreur »
Et les messages d’alertes qui s’affichent si la valeur de ces variables est différente de 0.
La variable J avec valeur initiale 0 se met à 1 si toutes les autres variables ont des valeurs différentes de 1.
Si la variable J est différente de 0, le message d’alerte indiquant que tout est ok s’affiche.
Toutes les alertes étant en dehors de la boucle for, je me disais que ça devrait marcher.
Sauf que non….
var condA=0
var condB=0
var condC=0
var condD=0
var condE=0
var condF=0
var condG=0
var condH=0
var condI=0
var condJ=0
if (this.getField("SLR").value != this.getField("LT").value) {var condA = 1;}
if (this.getField("SER").value != this.getField("ET").value) {var condB = 1;}
//Le nombre de PFMP pour les apprentis n'est pas conforme
if (this.getField("SCR").value != this.getField("VT").value) {var condC = 1;}
//Le nombre de semaines de congé pour les apprentis n'est pas conforme
if (this.getField("SLRE").value != this.getField("LE").value) {var condD = 1;}
//Le nombre de semaines au lycée pour les élèves n'est pas conforme
if (this.getField("SERE").value != this.getField("PFMP").value) {var condE = 1;}
//Le nombre de PFMP pour les élèves n'est pas conforme
if (this.getField("SCRE").value != this.getField("VE").value) {var condF = 1;}
//Le nombre de vacances pour les élèves n'est pas conforme
for (var i = 0; i < this.numFields; i++) {
if (this.getField("CheckBox."+i).value == "A" & this.getField("TheckBox."+i).value != "D") {var condG = 1;
///Attention pour les semaines en rouge, les apprentis ne peuvent pas être au lycée quand les élèves sont en PFMP ou en vacances
this.getField("semaine."+i).fillColor = color.red;}
if (this.getField("CheckBox."+i).value == "Off") {var condH = 1;
//Indiquer ou sont les apprentis pour les semaines en vert
this.getField("semaine."+i).fillColor = color.green;}
if (this.getField("TheckBox."+i).value == "Off") {var condI = 1;
//Indiquer ou sont les élèves pour les semaines mises en bleu
this.getField("semaine."+i).fillColor = color.blue;}
if (condA !=1 & condB !=1 & condC !=1 & condD !=1 & condE !=1 & condF !=1 & condG !=1 & condH !=1 & condI !=1) {var condJ=1;
this.getField("semaine."+i).fillColor = color.transparent;}
}
if (condA !=0) {app.alert({cMsg:"Le nombre de semaines au lycée pour les apprentis n'est pas conforme", nIcon:2});}
if (condB !=0) {app.alert({cMsg:"Le nombre de PFMP pour les apprentis n'est pas conforme", nIcon:2});}
if (condC !=0) {app.alert({cMsg:"Le nombre de semaines de congé pour les apprentis n'est pas conforme", nIcon:2});}
if (condD !=0) {app.alert({cMsg:"Le nombre de semaines au lycée pour les élèves n'est pas conforme", nIcon:2});}
if (condE !=0) {app.alert({cMsg:"Le nombre de PFMP pour les élèves n'est pas conforme", nIcon:2});}
if (condF !=0) {app.alert({cMsg:"Le nombre de vacances pour les élèves n'est pas conforme", nIcon:2});}
if (condG !=0) {app.alert({cMsg:"Attention pour les semaines en rouge, les apprentis ne peuvent pas être au lycée quand les élèves sont en PFMP ou en vacances", nIcon:2});}
if (condH !=0) {app.alert({cMsg:"Indiquer ou sont les apprentis pour les semaines en vert", nIcon:2});}
if (condI !=0) {app.alert({cMsg:"Indiquer ou sont les élèves pour les semaines mises en bleu", nIcon:2});}
if (condJ !=0) {app.alert({cMsg:"Tout est ok", nIcon:2});}
Attachments:
You must be logged in to view attached files.20 décembre 2021 à 12:31 #70165Merlin
Maître des clésLe problème c’est la boucle :
for (var i = 0; i < this.numFields; i++) {
this.numFields ça veut dire : nombre de champs contenus dans le document (199 dans ce document).
Les champs à calculer sont nommés avec des suffixes qui vont de xxxxx.0 à xxxxx.52
Comme il y a plus que 52 champs dans le document quand « i » arrive à la valeur 53 ça provoque une erreur puisque ces champs n’existent pas (en JavaScript « null » ça veut dire : n’existe pas).
Donc il faut remplacer la ligne ci-dessus par celle-ci, qui indique zéro comme valeur de départ et 52 comme valeur à ne pas dépasser :
for (var i = 0; i < 53; i++) {
-
Cette réponse a été modifiée le il y a 1 année et 5 mois par
Merlin.
20 décembre 2021 à 23:30 #70167michel c.
ParticipantMerci beaucoup !!!
J’ai pu enfin arriver au bout de ce que je voulais faire. J’ai également amélioré la vérification finale afin qu’elle soit plus fonctionnelle.
Voici le fichier terminé, en espérant qu’il n’y ait pas de bug.
Une des questions que je me pose, sans savoir si cela est possible par la programmation c’est si en spécifiant une année quelle quelle soit (par exemple 2024) est ce qu’il est possible que pour chaque champ (semaine.0 à semaine.53) soit inscrit automatiquement la semaine spécifiée (du lundi au dimanche) en commençant par la 1ère semaine de septembre.
Je ne demande pas le code qui doit être assez long à faire mais juste savoir si c’est possible ou pas.
Merci
Attachments:
You must be logged in to view attached files.21 décembre 2021 à 10:23 #70169Merlin
Maître des clésCeci pourrait peut être aider à répondre à ta dernière question (dont je ne connais pas la réponse) :
21 décembre 2021 à 11:16 #70170michel c.
ParticipantJe viens de regarder mais quelle que soit la date choisie, c’est la semaine qui commence le 21/12/2021 qui s’affiche en semaine 1 comme en semaine 2 avec mon logiciel (PDF XChange Editor) alors qu’avec adobe acrobat DC ça fonctionne.
C’est la 1ère fois que je vois un script qui dysfonctionne avec ce logiciel…
-
Cette réponse a été modifiée le il y a 1 année et 5 mois par
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.