Impression plusieurs documents sous forme de liste

Forum destiné aux questions d'administration

Impression plusieurs documents sous forme de liste

Messagepar edcj » 22 Fév 2011 à 23:11

Bonjour Messieurs,

Je souhaite depuis base Notes faire une impression sous la forme de liste avec des colonnes. Exemple d'une facture ou bon de commande, on a une entête client et plusieurs lignes articles, sachant que chaque ligne article est un document. Je souhaite avoir une édition, style entête, nom, prénom, tél, etc, et les lignes détail(ref, libelle, prix, qté, etc).
A votre avis quel le moyen le plus simple, avoir un modèle word avec des champs à renseigner , genre publipostage, ou faire un document Notes au format que je souhaite. J'ai commencé à regarder sur le forum, j'ai un exemple de Stéphane Maillard, mais je n'ai pas bien compris. (http://forum.dominoarea.org/pour-stepha ... 52168.html)
Auriez un exemple ou un lien svp.
Merci d'avance
Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Re: Impression plusieurs documents sous forme de liste

Messagepar pivo » 23 Fév 2011 à 09:25

Hello,

J'ai dû faire ça pas plus tard que la semaine passée. Pour ma part j'ai fait une vue embarquée dans un document. La vue ne prenant que les documents de la catégorie adéquate. Ca fait une jolie mise en page de type tableau.

Le bouton "print" créé un doc avec le masque en question, lui met la valeur du client dans un champ, et la vue récupère cette valeur pour afficher seulement les docs correspondants. Ensuite print, saveoptions=0 et close.
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Messagepar edcj » 24 Fév 2011 à 16:58

Salut Pivo,
Merci pour ta réponse, mais si ce n'est pas trop te demander, peux tu me donner un bout de code stp. En fait, je souhaite sélectionner plusieurs factures depuis une vue pour faire cette édition. je ne vois pas très bien comment faire la mise en page du tableau, le tableau devrai être variable selon le nombre de ligne de chaque factures. Merci d'avance
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar pivo » 25 Fév 2011 à 08:53

edcj a écrit:Salut Pivo,
Merci pour ta réponse, mais si ce n'est pas trop te demander, peux tu me donner un bout de code stp. En fait, je souhaite sélectionner plusieurs factures depuis une vue pour faire cette édition. je ne vois pas très bien comment faire la mise en page du tableau, le tableau devrai être variable selon le nombre de ligne de chaque factures. Merci d'avance


Ma solution marcherait pour imprimer par exemple TOUS les documents rattachés à un client selon un critère (statut non payé, par exemple). Ou tous les documents contenus dans une facture.

Si c'est bien ça que tu veux faire, je t'en dis plus. Ca ne fonctionnerait pas pour une sélection "aléatoire" de documents à mettre en tableau.
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Messagepar edcj » 25 Fév 2011 à 14:28

Salut, Oui en fait, je veux pouvoir éditer tous les documents rattachés à un même critère, çà peut être tous les documents d'un client comme tu dis, çà peut être une facture avec toutes ses lignes. Merci d'avance de ton aide et de tes conseils. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar pivo » 28 Fév 2011 à 08:10

edcj a écrit:Salut, Oui en fait, je veux pouvoir éditer tous les documents rattachés à un même critère, çà peut être tous les documents d'un client comme tu dis, çà peut être une facture avec toutes ses lignes. Merci d'avance de ton aide et de tes conseils. Cordialement


Hello,

Ben en fait c'est plusde la "mise en page" que de la programmation. Le principe (pour une facture dans ton cas) :

    créer une vue qui contiendra tous les éléments des factures (Select form="mesElementsDeFacture"). La première colonne contient l'identifiant qui relie les éléments à leurs factures : par exemple tu stockes l'universal ID des factures dans les sous-documents -> @text(factureUNID). Cette vue est catégorisée sur la première colonne. Les autres colonnes seront visibles sur l'impression. C'est ton tableau.
    créer un masque "facturePrint" qui sera appelé sur le bouton d'impression. Dans ce masque tu embarques la vue d'avant. Avec un "Show Single Category" = @text(factureUNID). Mets aussi un champ SaveOptions avec valeur en dur "0" ça évitera un message d'alerte plus tard.


Maintenant tu peux ajouter un bouton "Print" dont le code sera à peu près :

Code : Tout sélectionner
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument, tuidoc As NotesUIDocument
Dim doc As NotesDocument, tdoc As NotesDocument

Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

Set tdoc = db.CreateDocument()
tdoc.form = "facturePrint"
tdoc.factureUNID = Cstr(doc.UniversalID)
Set tuidoc = workspace.EditDocument(False, tdoc)
Call tuidoc.Print
Call tuidoc.Close(True)


L'idée est donc de créer un document temporaire avec le masque d'avant, de lui ajouter la référence de la facture, afin qu'il charge dans sa vue embarquée les bons documents.

Courage c'est pas si difficile !!

++
pivo

PS : par contre jusqu'à présent pas trouvé le moyen d'imprimer en "landscape"
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Messagepar edcj » 02 Mars 2011 à 00:52

salut Pivo, je te remercie pour ta réponse, mais j'ai un souci.
Je t'explique, je pars d'une vue A qui affiche des factures 1,2,3,4. Je sélectionne la facture 2 et je fais Print depuis cette vue, donc çà devait créér le document temporaire avec cette facture et l'imprimer, mais j'ai un message "object variable not set". Le bouton "Print doit être placé ou ? sur la vue de départ ou dans le document ouvert. Autre Question: Dis moi, j'avais déjà essayé la même démarche avec des formules(@command(compose ..., file print, close), çà fonctionne à peu près sauf que j'ai du mal à passer mon numéro de facture au"Show Single Category" . as tu une explication concernant le code en LS ou en formule Lotus. Je continue de fouiller, merci si tu as une idée. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar pivo » 02 Mars 2011 à 10:20

edcj a écrit:salut Pivo, je te remercie pour ta réponse, mais j'ai un souci.
Je t'explique, je pars d'une vue A qui affiche des factures 1,2,3,4. Je sélectionne la facture 2 et je fais Print depuis cette vue, donc çà devait créér le document temporaire avec cette facture et l'imprimer, mais j'ai un message "object variable not set". Le bouton "Print doit être placé ou ? sur la vue de départ ou dans le document ouvert. Autre Question: Dis moi, j'avais déjà essayé la même démarche avec des formules(@command(compose ..., file print, close), çà fonctionne à peu près sauf que j'ai du mal à passer mon numéro de facture au"Show Single Category" . as tu une explication concernant le code en LS ou en formule Lotus. Je continue de fouiller, merci si tu as une idée. Cordialement


Hello,

Oui là j'ai mis le code comme si le bouton était dans le document. As-tu essayé en l'y mettant (déjà pour voir si le reste marche) ?

Sinon avec l'action dans la vue, tu dois passer par un notesDocumentCollection qui reprend les db.unprocesseddocuments et les traiter un par un. Le reste est pareil. Les exemples doivent foisonner un peu partout tellement c'est courant.

En @formule sérieux je passe la main, j'utilise l'aide à chaque ligne...
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Messagepar edcj » 02 Mars 2011 à 21:00

Salut Pivo,
J'avais déjà essayé dans le document mais çà fonctionnait pas, j'ai trouvé le pourquoi, voici le bon code depuis un document, j'ai changé la clé de recherche:
[syntax="LotusScript"]
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument, tuidoc As NotesUIDocument
Dim doc As NotesDocument, tdoc As NotesDocument
Dim db As NotesDatabase
Dim s As New NotesSession

Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set db = s.CurrentDatabase
Set tdoc = db.CreateDocument()
tdoc.form = "Edition"
tdoc.css_ticket_display= doc.css_ticket_display
Msgbox doc.UniversalID
Set tuidoc = workspace.EditDocument(False, tdoc)
Call tuidoc.Print
Call tuidoc.Close(True)
End Sub
[/syntax]

NB: Par contre voici mon code que j'essaie depuis une vue, j'ai une erreur quand je sélectionne un doc et j'exécute mon bouton Print "Object variable not set", il semblerait que ce soit les Dim Tuidoc te uidoc qui posent problème, as tu une idée stp:

[syntax="LotusScript"]

Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim tuidoc As NotesUIDocument
Dim uidoc As NotesUIDocument
Dim tdoc As NotesDocument
Dim doc As NotesDocument
Dim UIView As NotesUIView
Dim db As NotesDatabase
Dim s As New NotesSession
Dim dc As NotesdocumentCollection
Dim wVue As NotesView


Set wVue = db.GetView("Editticket")
Set db = s.CurrentDatabase
Set dc = db.unprocessedDocuments
Set UIView = ws.CurrentView

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document

Set tdoc = db.CreateDocument()

Set doc = dc.GetFirstDocument
While Not doc Is Nothing
tdoc.form = "Edition"
tdoc.css_ticket_display = doc.css_ticket_display
Set tuidoc = ws.EditDocument(False, tdoc)
Call tuidoc.Print
Call tuidoc.Close(True)
Set doc = dc.GetNextDocument( doc )
Wend

Call ws.ViewRefresh
Call UIView.DeselectAll
End Sub
[/syntax]
Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar Michael DELIQUE » 03 Mars 2011 à 09:15

salut

les ouvertures de uidoc en boucle comme tu le fait ont tendance a planter.

sinon si tu as un masque dédié à l'impression, je mettrait les commande d'impression et de fermeture dans le queyopen du masque ce qui devrait régler ton probleme
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar pivo » 07 Mars 2011 à 14:47

Hello,

De retour d'un looooong week-end ! Moi je dis : tu as beaucoup trop de variables inutiles dans ton code, on sait plus trop sur quoi on tourne/incrémente/navigue (garder ce qui convient le mieux). Sur les UIDoc, les docs, les vues...

Version simplifiée qui devrait pas trop faire d'erreur "object variable not set" :

[syntax="LotusScript"]

Sub Click(Source As Button)

Dim s As New NotesSession
Dim ws As New NotesUIWorkspace

Dim db As NotesDatabase
Dim dc As NotesdocumentCollection

Dim tuidoc As NotesUIDocument
Dim tdoc As NotesDocument
Dim doc As NotesDocument

Set db = s.CurrentDatabase
Set dc = db.unprocessedDocuments

Set doc = dc.GetFirstDocument
While Not doc Is Nothing
' doc temporaire pour l'impression :
Set tdoc = db.CreateDocument()
tdoc.form = "Edition"
' récupère le no de facture :
tdoc.css_ticket_display = doc.css_ticket_display(0)
' ouverture en UI pour print :
Set tuidoc = ws.EditDocument(False, tdoc)
Call tuidoc.Print
Call tuidoc.Close(True)

Set doc = dc.GetNextDocument( doc )
Wend

Call ws.ViewRefresh
Call ws.CurrentView.DeselectAll

End Sub
[/syntax]
pivo
Posteur néophyte
Posteur néophyte
 
Message(s) : 69
Inscrit(e) le : 29 Oct 2010 à 09:15
Localisation : Entre Genève et Martigny, mais surtout Lausanne

Messagepar edcj » 11 Mars 2011 à 16:31

Salut Pivo, Je suis revenu hier après un long weekend de carnaval (Martinique) et je suis sur autre chose pour l'instant, mais je teste dès que possible et je vous tiens au courant. J'ai essayé la solution de Mickael mais sans succès pour l'instant. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar edcj » 16 Mars 2011 à 17:01

Salut Pivo,
Un grand merci, çà fonctionne. Le champ de sélection qui est créé tout en en haut de la vue intégrée dans le document ainsi que d'autres champs s'éditent bien, mais sur plusieurs pages. A t' on une solution pour que mes champs d'entête s'impriment sur la même page que la vue privée. Prenons l'exemple d'une facture, j'aurai souhaité que le nom du client, son adresse s'affichent sur la même page que les lignes détail. j'ai une page pour l'entête, une page pour le détail et une page blanche. J'ai testé les paramètres d'édition sur les propriétés du masque ainsi que propriétés de l'imprimante, mais sans succès . Avez vous de suggestions, je suis preneur, merci d'avance. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar edcj » 16 Mars 2011 à 22:01

Salut,

Complément d'informations, par rapport à mon dernier post, j'ai une sélection disons qui aurait du être éditée sur plusieurs, mais il me fait une seule page. Salutations
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29


Retour vers Administration

cron