fabrice
(Mouttet)
April 4, 2022, 6:04am
1
Bonjour,
Je cherche à faire un export CSV :
J’ai créé une publication avec le type TEXT
J’ai créé une méthode qui construit le contenu du fichier texte
J’ai placé un bouton ACTION dans le template et lorsque l’utilisateur clique dessus, la méthode de construction du CSV est appeléé
Comment est-ce que je passe le contenu à la publication ?
la publication
¨
La méthode
public void boutonTransAttr()
{
ObjectDB eleve = this.getGrant().getTmpObject("HertaEleve");
eleve.resetFilters();
// eleve.getField("HertaEleveNom").setFilter(" ='Dutoit'");//setFilter("='direct' or ='indirect' or ='nonFin'");
eleve.resetOrders();
List<String[]> rows = eleve.search();
String csv = "nom;prenom\n" ;
//boucle sur les élèves
for (String[] row: eleve.search() ){
eleve.setValues(row);
String nom = eleve.getField("HertaEleveNom").getValue();
String prenom = eleve.getField("HertaElevePrenom").getValue();
csv += nom +";"+ prenom ;
csv += "\n";
}
AppLog.info("message fichier CSV pour MICROGIS :::" + "\n" + csv, getGrant());
AppLog.info(getClass(), "Bouton TransAttr", null , getGrant());
if (this.getField("HertaProcessStatut").getValue().equals("2"))
{
this.setFieldValue("HertaProcessStatut", "3");
}
try{new BusinessObjectTool(this).validateAndSave();}
catch(Exception e){AppLog.error(getClass(), e.getStackTrace()[0].getMethodName(), "Bouton TransAttr", e, null);}
}
La version :
Simplicité version5.1.36
Built on2022-03-25 23:37
Merci d’avance
Fabrice Mouttet
scampano
(Simon Campano)
April 4, 2022, 9:41am
3
Bonjour Fabrice,
Pourquoi utilisez-vous une action? Pour un export, typiquement, une publication suffit.
Cordialement,
fabrice
(Mouttet)
April 4, 2022, 10:21am
4
j’ai choisi via une action parce que l’export est déclenché via un bouton dans le template
scampano
(Simon Campano)
April 4, 2022, 10:24am
5
S’il était possible de placer le bouton de publication dans le template, cela correspondrait-il à votre besoin?
fabrice
(Mouttet)
April 4, 2022, 10:25am
6
oui… je suis passé par l’action parce que je n’ai pas trouvé de possibilité de mettre la publication dans le template
fabrice
(Mouttet)
April 4, 2022, 10:50am
7
j’ai réussi à faire l’export en mettant le contenu du csv en setParameter et ce retour dans l’action
return this.javascript("$ui.displayPrint(null, 'HertaPctMicrogis', '" + this.getName() + "', '" + this.getRowId() + "')");
et dans la méthode de la publication je récupère le csv
public byte[] creationFichierCsv()
{
AppLog.info(getClass(), "Appel de creationFichierCsv", null , getGrant());
String csv = this.getParameter("CSV");
return csv.getBytes();
}
Dans la méthode l’action, je mets également un champ à jour
if (this.getField("HertaProcessStatut").getValue().equals("2"))
{
this.setFieldValue("HertaProcessStatut", "3");
}
try{
new BusinessObjectTool(this).validateAndSave();
}
catch(Exception e){
AppLog.error(getClass(), e.getStackTrace()[0].getMethodName(), "Bouton TransAttr", e, null);
}
Le champ se met bien à jour, mais je suis obligé de recharger le formulaire manuellement. Comment puis-je faire un reload par code?
Francois
(François Genestin)
April 4, 2022, 12:10pm
8
Un Print génère une action qui commence par “print_” ou “printlist_…” en fonction de son type.
Donc à priori on peut le déplacer dans le template avec son nom, du style :
<div class="action" data-action="print_HertaPctMicrogis"></div>
Sinon le bouton pourrait être juste un javascript qui click sur l’item de menu export ?
$("[data-action='print_HertaPctMicrogis']").click()
(à adapter en fonction du nom du print dans le dom)
scampano
(Simon Campano)
April 4, 2022, 4:21pm
9
Après vérification sur une v5 à jour (v5.1.36), l’ajout de l’action de type “publication” est bien disponible dans le template editor via “Ajouter > Action”, est-ce que cela ne répond pas à votre problématique de façon plus directe?
fabrice
(Mouttet)
April 5, 2022, 4:51am
10
j’avais essayé ça, mais la publication n’était pas visible dans la liste. J’ai changé “export” pour “partout” dans la publication et cette fois elle était dans la liste.
Du coup je l’ai ajoutée dons mon template et si elle apparaît bien dans la prévisualisation, elle n’apparaît pas dans le formulaire réel :
Template :
Formulaire
scampano
(Simon Campano)
April 5, 2022, 8:55am
11
Screenshot? Je ne vois pas de quoi vous parlez.
Je vais essayer de reproduire, avez-vous bien essayé de vider le cache Simplicité et celui de votre navigateur?
fabrice
(Mouttet)
April 5, 2022, 10:57am
12
Oui, j’ai vidé le cache et même changé de navigateur.
scampano
(Simon Campano)
April 6, 2022, 10:21am
13
Bonjour,
Je confirme qu’en v5.1.36, de mon côté, je n’ai non seulement pas de mal à ajouter l’action de publication au template (ça résulte comme vous en un <div class="action" data-action="print_PublicationCode"></div>
dans le template de zone d’attributs) mais aussi qu’elle s’affiche sur le formulaire et fonctionne correctement .
Comment est configurée votre publication? Fonctionne-t-elle correctement si elle n’est pas dans le formulaire? Avez-vous moyen de reproduire comme moi votre cas avec le module Demo?
fabrice
(Mouttet)
April 7, 2022, 12:56pm
14
Je vous remercie pour ces pistes, en l’occurrence je reste sur le démarrage via mon action.
Le fichier produit a l’extension txt, est-ce que c’est possible de le mettre en csv?
system
(system)
Closed
May 7, 2022, 12:56pm
15
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.