Donnez vie à vos documents numériques !
 

Formulaire multi-utilisateur

abracadabraPDF Forums PDF – Général Formulaire multi-utilisateur

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46304
    Ngoumma
    Membre

    Bonjour à tous.
    Voilà la situation.
    Ma connaissance en JavaScript est très très très limitée… mais pour le boulot il faut que je fasse un formulaire multi-utilisateur.
    Après des heures de lecture de forum et de tuto vidéo sur YouTube, j’arrive a faire quelques trucs mais a un moment ça bloque… :mur:
    Environnent: Windows 10 + Adobe Acrobat Standard DC

    Le But : un formulaire avec un opérateur qui va remplir certains champs, mais qui n’a pas accès a tous les champs. Une fois complété, un bouton pour enregistrer, un autre bouton pour envoyer par mail. le réceptionnaire fait pareil, rempli sa partie et renvoi.
    En cliquant le bouton enregistrer, il faut vérifier que certains champs ne soit pas vide, verrouiller ces champs (read only) puis enregistrer.
    Voilà ce que j’ai mis dans mon script :

    Code:
    var RequiredFields = new Array(4);
    RequiredFields[0] = “numero_chrono”;
    RequiredFields[1] = “date_de_verif”;
    RequiredFields[2] = “commentaire_tech”;
    RequiredFields[3] = “societe”;

    var AlertMsg = new Array(4);
    AlertMsg[0] = “Veuillez remplir le champ du Numéro chrono”;
    AlertMsg[1] = “Veuillez remplir la date de vérification”;
    AlertMsg[2] = “Veuillez remplir le champ commentaire”;
    AlertMsg[3] = “Veuillez remplir le champ Société”;

    var bSuccess=true
    var emptyTest=/^s*$/;
    var fieldCount=RequiredFields.length
    var fld=0;
    for(var i=0;i{
    fld=this.getField(RequiredFields);
    if(emptyTest.test(fld.value))
    {
    bSuccess=false;
    app.alert(AlertMsg);
    fld.setFocus();
    break;
    }
    }

    if(bSuccess==true)
    {
    this.getField(“societe”).readonly = true;   
    this.getField(“nom_tech”).readonly = true;
    this.getField(“numero_GPI”).readonly = true;
    this.getField(“numero_element”).readonly = true;
    this.getField(“classe”).readonly = true;
    this.getField(“date_de_verif”).readonly = true;
    this.getField(“numero_chrono”).readonly = true;
    this.getField(“commentaire_tech”).readonly = true;
    this.getField(“element_lies”).readonly = true;
    this.getField(“source”).readonly = true;
    this.getField(“NC”).readonly = true;
    };

    Suite à ça, je vais « exécuter une commande du menu / enregistrer sous ». (j’ai essayé avec app.execMenuItem (« SaveAs ») mais il ne se passe rien….)
    Le problème c’est que même lorsqu’un champ est vide, il me met un popup pour dire «ce champs est vide », puis il ne va pas plus loin et il enregistre quand même…
    Il y a certainement plein d’incohérences dans ce code, mais c’est tout  ce que j’ai pu trouver grâce au forum en adaptant des bout de code issus de plusieurs sujets différents… je m’en excuse d’avance.
    Merci à ceux qui me lanceront une bouée de sauvetage ! :bonjour: :bonjour:
    Mika

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #67480
    Merlin
    Maître des clés

    Bonjour

    Il faudrait que tu partages ton document ou une maquette avec les champs concernés parce-qu’en l’état on ne peut pas comprendre : l’instruction “Save as” n’apparait pas dans ton script, donc il manque des éléments.
    Sinon ce script a l’air correct.

    il me met un popup pour dire «ce champs est vide », puis il ne va pas plus loin

    Ça c’est normal et attendu, c’est dû à la ligne :
    break;
    Mais si tu l’enlèves il s’affichera autant d’alertes que de champs vides, il faudra modifier le script plus en profondeur.

    Au-dessus de l’éditeur de message de ce forum il y a plusieurs icônes dont #
    Elle sert à baliser les scripts qu’on poste comme étant du code à ne pas interpréter, faute de quoi ledit code est interprété et ça cause des formatages indésirables (gras, italique, etc.) dans le texte du message.
    J’ai corrigé ton message ci-dessus.
    :Smiley15:

    #67481
    Merlin
    Maître des clés

    Comme tu utilises Acrobat Standard tu devrais installer addDocumentScripts.js, un utilitaire gratuit qui permet de retrouver quelques unes des fonctions JavaScript manquantes par rapport à Acrobat Pro :
    http://khkonsulting.com/2014/10/document-level-scripts-acrobat-standard/

    :Smiley03:

    #67482
    Ngoumma
    Membre

    Merci Merlin pour ta réponse et la modif de la mise e npage. j’y ferais atention maintenant.
    je vais voir pour rajouter ce complement mais je ne sais pas si je vais avoir l’autorisation. les PC sont sécurisés et je ne peux pas fairer ce que je veux.

    pour le Save as je ne l’ai pas mis, car j’ai essayé dans le script ca ne fonctionnait pas et du coup je l’ai mis dans une autre action. une action “executer le javascript” et une deuxieme action “executer une commande du menu.

    #67483
    Merlin
    Maître des clés

    Le But : un formulaire avec un opérateur qui va remplir certains champs, mais qui n’a pas accès a tous les champs. Une fois complété, un bouton pour enregistrer, un autre bouton pour envoyer par mail. le réceptionnaire fait pareil, rempli sa partie et renvoi.

    Tu devrais utiliser AdobeSign ou un de ses concurrents, c’est une fonction native : chacun remplit et signe sa partie, ce qui la verrouille, avant de transmettre aux autres.

    #67484
    Ngoumma
    Membre

    Voici le fichier pdf joint.
    La premiere partie doit etre rempli par un technicien, qui va l’envoyer a un verificateur qui va l’envoyer a l’utilisateur pour évaluation.
    si ca peut etre plus clair pour aider a comprendre ce que je veux faire…
    Merci.

    PS: effectivement je ne peux pas installer de .js sur c:…..

    #67485
    Merlin
    Maître des clés

    Pour moi ça fonctionne, sauf le bouton “Envoi par email” : la première ligne du script ne sert à rien d’autre qu’à causer une erreur (ReferenceError: document is not defined), sinon elle est inutile et n’a rien à faire là.
    :Smiley15:

    #67486
    Ngoumma
    Membre


    Pour moi ça fonctionne, sauf le bouton “Envoi par email” : la première ligne du script ne sert à rien d’autre qu’à causer une erreur (ReferenceError: document is not defined), sinon elle est inutile et n’a rien à faire là.
    :Smiley15:

    Bonjour.
    Merci, je vais supprimer la premiere ligne.

    qu’est ce que je dois rajouter a mon script:

    Code:
    this.mailDoc({
        cTo: this.getField(“Nom responsable verif”).value,
        cSubject: this.getField(“Info titre cadre détéction element”).value +”OOS n°” + this.getField(“numero_chrono”).value,
        cMsg: “Si vous voulez ne plus faire parti de la liste de diffusion veuillez envoyer un mail à toto@hotmail.com
    });

    pour lui dire de passer le champ XX en modifiable et le champ YY en lecture seule, avant d’envoyer par mail?

    #67487
    bebarth
    Maître des clés

    bonjour,
    Avant la ligne “this.mailDoc” tu écris :

    Code:
    this.getField(“XX”).readonly=false;
    this.getField(“YY”).readonly=true;

    …et il faut penser à mettre une adresse mail en valeur d’exportation de ta liste “Nom responsable verif”.
    @+
    :bonjour:

    #67488
    Ngoumma
    Membre

    bonjour,
    Avant la ligne “this.mailDoc” tu écris :

    Code:
    this.getField(“XX”).readonly=false;
    this.getField(“YY”).readonly=true;

    …et il faut penser à mettre une adresse mail en valeur d’exportation de ta liste “Nom responsable verif”.
    @
    :bonjour:

    Merci!!!
    Ça me parissait simple pourtant et j’avais essayé mais ça ne fonctionnait pas… je pense que j’oubliais une majuscule ou une virgule un truc du genre… la ça fonctionne… :extra: :bonjour:
    pour les mails, ça fonctionne comme ça. La messagerie par defaut s’ouvre et après ça va taper dans la base de nom des personnes de la société.

    est ce qu’il y a un code pour écrire dans le champ XX le nom de l’utilisateur connecte a Windows ou son identifiant ?
    merci.

    #67489
    bebarth
    Maître des clés

    Ça ne sera pas possible à partir d’un bouton !
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fidentity_properties.htm%23TOC_loginNamebc-3&rhtocid=_6_1_8_37_0_2
    Tu écris les 2 exemples donnés dans la console, ça marche. Tu écris la même chose dans un bouton, ça marche pas !!!
    @+
    :bonjour:

    #67490
    Merlin
    Maître des clés

    Sécurité des données personnelles oblige !

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.