PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → Type document et WebDev
Type document et WebDev
Iniciado por Roumegou, abr., 19 2021 3:15 PM - 6 respostas
Publicado em abril, 19 2021 - 3:15 PM
Bonjour

je dois gérer des types de contrats dans lesquels je vais substituer
des variables et insérer des paragraphes

Je voudrais utiliser pour cela le format word
faire mes substitutions
et ensuite générer des pdf.

Puis-je utiliser le type document avec WebDev ?

Dois je charger les .docx depuis le serveur ? ou depuis une base un
champs mémo ?

Existe-t-il des exemples webdev ? voire windev dont je pourrais
m'inspirer ?

Merci de vos réponses

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Membro registado
81 mensagems
Popularité : +7 (7 votes)
Publicado em abril, 19 2021 - 11:09 PM
Bonsoir,

Je ne métrise pas bien webdev, mais pour les documents générés pour mon boulot (dans le secteur bancaire) on utilise beaucoup Windev.

Pour rédiger nos documents/lettres (contrats avec des paragraphes différents, des tableaux,...etc.) on utilise le champ traitement de texte et le type "Document", le champ TT en question n'existe pas Webdev (voir comment tu peux le remplacer) en tout cas voici en quelques lignes le principe que nous avons mis en place depuis quelques années et qui a fait ses preuves (espérons que ça peut t'aider ne fus-ce que avec la logique) :

Principalement deux tables (fichiers HFSQL) :

DocTemplates :
----------------
ID
Nom
Description
Catégorie
Template Originale (de type Mémo binaire).
Template Modifié (de type Mémo binaire).
....
Tu peux directement depuis HFSQL importer ton document .DOCX de base (template) ou développer une zolie fenêtre pour gérer tes templates.
Ton document word peut contenir des variables/signets que tu peux remplacer par programmation.


- DocParagraphes :
---------------------
Même principe mais pour des paragraphes que tu peux insérer dans tes templates (en fonction de tes règles métier).

Utilisation :
------------

HReadSeekFirst(DocTemplate,IDDocTemplate,_idDocTemplate)
IF HFound(DocTemplate) THEN
sDescription = DocTemplate.doc_sDescription
sDoc = fTempDir()+DocTemplate.doc_sDescription+"_"+GetIdentifier()
IF DocTemplate.doc_fileUpdated <> "" THEN
HExtractMemo(DocTemplate,doc_fileUpdated,sDoc)
ELSE
HExtractMemo(DocTemplate,doc_fileOriginal,sDoc)
END
END
DocExample is Document = sDoc


Pour remplacer tes variables c'est juste :
DocReplace(DocExample,"[%wc_daReference%]", daReference)

Pour affecter le résultat au champ Traitement de texte :
WP_Document = DocExample

Une fois terminé tu peux enregistrer ton document en PDF avec le fonction :
DocToPDF(DocExample, sPathPDF)

Comme tu peux le constater, il s'agit d'un exemple très simple pour ne pas sortir du sujet mais en réalité tu peux faire d'autres Fichiers et Rubriques.

Astuces :
---------
- Tu peux créer un template Header (toujours un document .docx) avec juste l'entête et le logo et l'emplacement de l'adresse du client (des variables ou des signets).
- Idem pour le Footer qui peut contenir le signataire et le signataire extra avec des variables par exemple (le nom, la fonction et l'image de la signature) et tout en bas les coordonnées de l'entreprise.
- Tu peux préparer plusieurs templates (Body). Lettre X, Lettre Y, Lettre Z,...etc. et dans ton ta lettre combine le Header le Body et le Footer.
- Dans ta lettre (le Body) tu peux ajouter des paragraphes depuis la table DocParagraphes en fonction des besoins.
- Si tu dois gérer des langues différentes, il suffit de mettre chaque template dans un record (enregistrement de DocTemplate). Ex. comme je suis en Belgique pour chaque template il y a deux enregistrements (Template FR et Template NL) et en fonction de la langue du dossier client on choisit le Template FR ou NL.

Avantages :
------------
Avec le champ TT et le type Document, c'est le control total de ton document, par exemple :
Dans les tables DoncTemplates et DocParagraphes nous avons d'autres colonnes très utiles :
- Qui le signataire de cette lettre et qui le signataire extra (juste des IDUtilisateur) que les responsables peuvent modifier.
- Le groupe d'utilisateurs qui peut générer cette lettre.
- Faut-il insérer l'image de la signature ou non (idem pour la signature extra).
- Grace au signets on peut dire qu'il s'agit d'une lettre pour monsieur X puis dire que la même lettre est finalement pour madame Y.
....

Inconvénients :
----------------
Nous avons généré des tableaux d'amortissements avec beaucoup de lignes (pour des crédits de 30 ans par exemple) mais dessiner des tableaux par programmation prend un peut du temps à les afficher (entre 30 et 60 secondes) pour les tableaux avec beaucoup de pages le champ Etat est sorti gagnant hhh (3-5 sec) et donc pour ce genre de documents on utilise des états.
Publicado em abril, 19 2021 - 11:10 PM
Bonjour

je dois gérer des types de contrats dans lesquels je vais substituer des
variables et insérer des paragraphes

Je voudrais utiliser pour cela le format word
faire mes substitutions
et ensuite générer des pdf.

Puis-je utiliser le type document avec WebDev ?

Dois je charger les .docx depuis le serveur ? ou depuis une base un champs
mémo ?

Existe-t-il des exemples webdev ? voire windev dont je pourrais m'inspirer ?

Merci de vos réponses


bon je me réponds
pas trouvé d'exemple mais j'ai fait des tests en windev, puis transcris
cela en webdev
le type document convient bien ; cela va le faire !

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Membro registado
3.844 mensagems
Popularité : +227 (347 votes)
Publicado em abril, 20 2021 - 5:59 AM
Bonjour,
Lorsqu'on ouvre l'aide d'une fonction ou d'un type de variable, tout en haut on a un bandeau bourré d'icône qui précise les plates-formes sur lesquelles sont disponibles la fonction.
Ainsi pour Document on a ça.




On voit que Document peut être utilisé dans Windev, Webdev mais pas Windev Mobile.
Que sous Webdev ce type peut être utilisé côté serveur avec Linux ou Windows, mais pas dans une page PHP ni dans la partie Navigateur.

Donc un variable Document est utilisable sous Webdev mais uniquement dans le code serveur

--
Il y a peut être plus simple, mais, ça tourne
Membro registado
1.603 mensagems
Popularité : +64 (70 votes)
Publicado em abril, 20 2021 - 7:30 AM
Bonjour,

Chercher aussi une vidéo dans youtube
Cela a été présenté il y a quelques années

--
Cordialement
François
Membro registado
3.844 mensagems
Popularité : +227 (347 votes)
Publicado em abril, 20 2021 - 8:29 AM
Par contre pour sélectionner ton docx, tu va devoir te bidouiller un TreeView via fListeFichier, fSelecteur et fSelRepertoire ne sont pas disponible en Webdev. Une autre solution est de faire un DnD via l'explorateur de fichier

--
Il y a peut être plus simple, mais, ça tourne
Publicado em abril, 20 2021 - 10:35 AM
Bonjour

je dois gérer des types de contrats dans lesquels je vais substituer des
variables et insérer des paragraphes

Je voudrais utiliser pour cela le format word
faire mes substitutions
et ensuite générer des pdf.

Puis-je utiliser le type document avec WebDev ?

Dois je charger les .docx depuis le serveur ? ou depuis une base un champs
mémo ?

Existe-t-il des exemples webdev ? voire windev dont je pourrais m'inspirer ?

Merci de vos réponses


Merci à tous de vos réponses

effectivement comme dit dans un précédent message, cela va le faire.

ce test marche super en webdev
Au début j'avais utilisé les signets pour insérer mes variables mais je
trouve que dans Word c'est pas évident pour mes utilisateurs
alors que la bonne vieille technique du rechercher remplacer à le
mérite d'être claire et visible
Donc je vais développer mon truc, cela va être parfait pour mon besoin.

Encore merci à tous pour vos réponses. Dommage qu'avec la modération,
cela arrive en différé.



SAI_Fichier est une chaîne

SAI_Fichier=fRepWeb+[fSep]+"files\modeleContrat.docx"

monDoc est un Document
pI est un entier
monDoc=DocOuvre(SAI_Fichier)

wval,listevaleur,listesignet est une chaîne
listesignet = "NAMEPASSAGER;DATENAISSANCE"
listevaleur = "ERIC DUPUIS;28 janvier 1977"
pI = 0

tabFragments est tableau de docFragments

POUR TOUTE CHAÎNE wsig DE listesignet SÉPARÉE PAR ";"
pI++
VariableRAZ(tabFragments)
wval = ExtraitChaîne(listevaleur,pI,";")
tabFragments = DocRecherche(monDoc, "[%"+wsig+"%]")
// Remplacement de tous les "%NomClient%" par le nom du client
POUR TOUT f DE tabFragments
f.Texte = wval
FIN
FIN



newfichier est une chaîne
newfichier=fExtraitChemin(SAI_Fichier,fDisque+fRépertoire)+[fSep]+"newcontrat.pdf"
DocVersPDF(monDoc,newfichier)

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus