Limite max de calcul  (Lu 109 fois) Partager ce sujet Imprimer

1 B


fasm  03 mars 2021 : 12:57

Bonjour,
Je fabrique des configurateurs  avec acrobat pro depuis 4 ans.
J'utilise pas mal de formules simple, des boutons radios (140 qui exportent des valeurs différentes qui me servent d'index), des listes pour au final calculer un prix suivant les différentes options sélectionnées
Je cache certains champs suivant les configurations.
Jusqu'ici pas de problème.
Sauf qu'aujourd'hui je plante.
En voulant ajouter un ensemble de liste fille mère qui marche très bien toute seule si je l'ajoute sur une page de calcul bien fournie acrobat plante.
Si je l'ajoute sur une autre page du document mais sans formule de calcul pas de soucis.
Après différentes tentatives j'ai l'impression que c'est du à une sorte de 'maximum de calcul - ou formule' possible sur une page.
Car tous les calculs sont compatibles indépendamment entre eux.

Avez-vous déjà rencontrer un problème similaire ?
Merci



IP archivée


Merlin  03 mars 2021 : 13:32

Bonjour

Non, je ne connais pas ce problème. J'ai eu parfois des lenteurs avec des gros calculs mais sans plus.
As-tu testé avec un autre ordi ?

Par-contre il est vrai que depuis toujours j'entends dire et j'ai pu constater qu'il vaut mieux éviter les calculs dans la mesure du possible, car chaque action sur n'importe quel champ déclenche systématiquement tous les scripts de calcul.
Voir ce qui est dit à propos des calculs à la fin de cet article :
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/

S'agissant de scripts récupérés sur ce forum, ou ailleurs, il faut commencer par vérifier tous les noms de variables et de champs pour s'assurer qu'il n'y a pas de collisions.
Quand on poste des exemples on utilise souvent des noms génériques, notamment pour les variables, ce qui peut provoquer des effets indésirables quand on assemble plusieurs scripts.

IP archivée


Merlin  03 mars 2021 : 13:47

Autre problème potentiel : les exemples donnés ne sont jamais, ou rarement, protégés.
Par exemple si on me demande comment changer la couleur du texte du champ MACHIN en rouge je vais répondre simplement :

this.getField("MACHIN").textColor = color.red;

Mais si le champ MACHIN n'existe pas, le script s'arrête là et la Console renvoie une erreur.

Alors que dans la vraie vie pour m'en protéger et pour assurer un maximum de souplesse à mes scripts j'utilise toujours :

if (this.getField("MACHIN") != null) {this.getField("MACHIN").textColor = color.red;}

Ainsi l'action ne s'exécute que si le champ MACHIN existe, sinon il ne passe rien et script continue comme si de rien n'était.
On peut aussi utiliser continue ou try / catch

 :Smiley03:

IP archivée


bebarth  03 mars 2021 : 13:57

bonjour,
Je dirais la même chose que Merlin.
De mémoire, les "plantages" que j'ai pu rencontrés sont toujours dus à des boucles infinies, sinon on a tout le temps un message dans la console, mais pas de plantage !
Il ne faut pas hésiter à consulter la console et y renvoyer des valeurs de variables pour trouver où ça plante.
Personnellement, lorsque je ne trouve pas je mets des parties de script en "try" avec une alerte en "catch" et je rétrécie la partie de script au fur et à mesure. Généralement je finis toujours par trouver... c'est plus ou moins long.
@+
 :bonjour:

IP archivée


fasm  03 mars 2021 : 19:17

Merci pour votre retour,C'est vrai que j'ai énormément de calcul, une 100 sur une page peut-être. Je suis obligé de veiller rigoureusement à l'ordre de calcul, une erreur est si vite arrivée.
D'autre part je suis moins regardant sur les noms de variables. Il faut que je fasse une revérification.
En changeant d'ordinateur (vers un mac plus ancien mais plus puissant en ram) ça marche...
Je continue mes vérification, merci !

IP archivée