IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Launchpad (ex-Infoview) Discussion :

Soucis sur publication documents pdf vides


Sujet :

Launchpad (ex-Infoview)

  1. #1
    Membre à l'essai
    Profil pro
    Chef de projet MOE
    Inscrit en
    Février 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOE

    Informations forums :
    Inscription : Février 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Soucis sur publication documents pdf vides
    Bonjour à tous,

    Sous BO Xi 3.1 SP3, je tente de créer des publications de rapports Webi qui comprennent des filtres de requêtes (invites) sur: Secteur / Année / Mois.
    Il existe 49 secteurs dans l'entreprise.
    Ces rapports Webi sont multilingues avec des restrictions dans l'univers (surcharges de connexions).

    En créant une publication pour obtenir des pdf de ces rapports dans un dossier de sauvegarde avec comme titre: le nom du secteur + année + Mois. .

    Pour cela je passe par les destinataires dynamiques, avec création d'un rapport basé sur le même univers que les documents et un objet titre (concaténation sous Oracle des objets Secteur / Année / Mois).

    J'affecte par mappage à la variable email l'objet "titre".

    J'obtiens bien le résultat voulu mais seulement pour 7 secteurs au lieu des 49 prévus.

    Les données restituées s'affichent bien dans les pdf pour ces 7 secteurs, mais pas pour les 42 autres secteurs.

    Sinon, j'ai bien 49 rapports pdf avec les bons titres, mais seulement 7 rapports pdf sont remplis des données.

    Comment expliquer ce résultat?
    L'installation de BO Xi 3.1 est basique (par défaut) dans l'entreprise.

    Est ce qu'il existe une modification à réaliser des jobserver?

    J'ai cloné les AdaptiveJobServer, PublicationJobServer, DestinationJobServer pour les intégrer dans un groupe de serveurs.
    J'ai modifié le nombre maximal de travaux simultanés à 10 (au lieu des 5 par défaut). Mais rien.
    Merci d'avance de votre aide.
    Cordialement.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    bonjour

    pour faire ce genre de taches je passe plutot par un traitement avec macro et fichier .bat
    je trouve que c'est beaucoup moins limité que la publication

    si interessé par la méthode fais moi signe

    munity

  3. #3
    Membre à l'essai
    Profil pro
    Chef de projet MOE
    Inscrit en
    Février 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOE

    Informations forums :
    Inscription : Février 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Bonjour,
    Bonjour,

    Merci d'avoir fourni une réponse.

    Je suis plûtôt preneur à titre perso.

    Les scripts BAT existent déjà pour des rapports Deski. Mais le système existant est bien compliqué.
    Nous reprennons la main sur l'administration de BO depuis septembre dernier. Et nous avons eu des surprises (ex: création de vues pour créer des univers servant à des rapports Deski ou Webi).

    Depuis septembre, nous simplifions l'organisation générale, les univers et requêtes...

    Les scripts existent pour des rapports Deski, mais peuvent certainement être simplifiés.

    Ces rapports seront ensuite à migrer en Webi quand les publications réussiront.

    Selon le cahier des charges actuel des publications, je dois utiliser uniquement les possibilités de BO.

    Et récemment j'ai découvert que pour des rapports Webi simples (ruptures sur les secteurs, 3 à 4 dimensions et 1 indicateur) les publications restaient vides sauf pour le premier de la liste.

    Cela semble correspondre à un paramètre de BO, mais lequel?

    J'ai modifié certains paramètres, puis réinitialisés. Et toujours pas le résultat voulu.

    Merci de votre aide.
    Cordialement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    de rien
    bien que je ne passe jamais par webi pour automatiser un report
    pas de vba donc.... inutile pour mon cas
    j'apprehende les prochaines versions de bo qui sont a priori exclusivement webi.....
    mais bon en attendant...
    donc comme je t'ai dit pour moi les .bat et vba excel sont une formidable solution pour faire quasiment ce que l'on veut avec un report BO
    exporter, filtrer, renommer..etc..
    voici ma méthode
    d'abord un .bat
    "E:\Program Files\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\busobj.exe" -document "\\'Racine complète + nom du fichier.rep" -user "xxxxxx" -pass "xxxxx" -system "sssssss" -auth "enterprise"
    ces informations te sont logiquement fourni par le designer ou IT de la soc
    iété

    une fois que j'ai réalisé mon .bat
    il ne me reste plus qu'à créer la macro qui va bien
    la première sert à rafraichir le rapport et l'exporter
    la seconde me permet d'initialiser l'envoi d'un email par smtp
    la troisième va cherche dans un fichier .txt les noms des personnes en A et Cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    Sub ACTUALISATION_()
    Dim Dpc As Document
    Dim Reps As Reports, Rep As Report
    Dim nbr As Integer, nir As Integer
    Dim fso As FileSystemObject
     
    On Error Resume Next
        username = Application.Variables.Item("BOUSER").Value 'permet d'initialiser le nom de l'utilisateur ouvrant la session BO
        ThisDocument.Variables(1).Value = Format(DateSerial(Year(Date - 1), Month(Date - 1), 1), "dd/mm/yyyy")
        ThisDocument.Variables(2).Value = Format(Date, "dd/mm/yyyy")
     
        If Application.Interactive = True Then
            Application.Interactive = False
        End If
     
      ThisDocument.Refresh
     
    Set Doc = Application.ActiveDocument
    Set Reps = Doc.Reports
    nbr = Reps.Count
     
        Set fso = CreateObject("Scripting.FileSystemObject")
            If fso.FolderExists(ThisDocument.Path & "\" & Format(ThisDocument.Variables(1).Value, "YYYY") & "\") = False Then
                fso.createfolder (ThisDocument.Path & "\" & Format(ThisDocument.Variables(1).Value, "YYYY") & "\")
            End If
                Chemin = ThisDocument.Path & "\" & Format(ThisDocument.Variables(1).Value, "YYYY") & "\"
            If fso.FolderExists(Chemin & "\" & Format(ThisDocument.Variables(1).Value, "MMMM") & "\") = False Then
                fso.createfolder (Chemin & "\" & Format(ThisDocument.Variables(1).Value, "MMMM") & "\")
            End If
                Chemin = Chemin & Format(ThisDocument.Variables(1).Value, "MMMM") & "\"
     
        Select Case username
            Case "xxxxxx"
                CLIENT = "xxxxxxxxx"
                    For Each Rep In Reps
                        Rep.Activate
                        Rep.AddComplexFilter "Eptica Demande BoiteMail(EPTICA_TRAITEMENT)", "=gauche(<Eptica Demande BoiteMail(EPTICA_TRAITEMENT)>, 3) =""MIA"""
                        Rep.ForceCompute
                    Next
                        fichierPDF = ThisDocument.Name & "_MIA_" & CLIENT & "_au_" & Format(ThisDocument.Variables(2).Value, "DD_MM_YYYY") & ".pdf"
                            Application.ActiveDocument.SaveAs (Chemin & fichierPDF)
                            objet = "Extraction EPTICA MIA " & CLIENT
                            message = "Bonjour" & vbCrLf & vbCrLf & "Veuillez trouver ci-joint, l'extraction EPTICA MIA " & CLIENT & " du " & ThisDocument.Variables(1).Value & " au " & ThisDocument.Variables(2).Value & "."
                            message = message & vbCrLf & vbCrLf & "Vous en souhaitant bonne réception." & vbCrLf & vbCrLf & "Cordialement."
                            dest = ""
                            cop = ""
                            URL = Chemin & fichierPDF
                        Call COURRIEL(objet, message, dest, cop, URL)
     
                    For Each Rep In Reps
                        Rep.Activate
                        Rep.AddComplexFilter "Eptica Demande BoiteMail(EPTICA_TRAITEMENT)", "=gauche(<Eptica Demande BoiteMail(EPTICA_TRAITEMENT)>, 3) <>""MIA"""
                        Rep.ForceCompute
                    Next
                        fichierPDF = ThisDocument.Name & "_HORS_MIA_" & CLIENT & "_au_" & Format(ThisDocument.Variables(2).Value, "DD_MM_YYYY") & ".pdf"
                            Application.ActiveDocument.SaveAs (Chemin & fichierPDF)
                            objet = "Extraction EPTICA HORS MIA " & CLIENT
                            message = "Bonjour" & vbCrLf & vbCrLf & "Veuillez trouver ci-joint, l'extraction EPTICA HORS MIA " & CLIENT & " du " & ThisDocument.Variables(1).Value & " au " & ThisDocument.Variables(2).Value & "."
                            message = message & vbCrLf & vbCrLf & "Vous en souhaitant bonne réception." & vbCrLf & vbCrLf & "Cordialement."
                            dest = ""
                            cop = ""
                            URL = Chemin & fichierPDF
                        Call COURRIEL(objet, message, dest, cop, URL)
     
            Case "xxxxxxx"
                CLIENT = "xxxxxxxx"
                    For Each Rep In Reps
                        Rep.Activate
                        Rep.AddComplexFilter "Eptica Demande BoiteMail(EPTICA_TRAITEMENT)", "=(0=0)"
                        Rep.ForceCompute
                    Next
                        fichierPDF = ThisDocument.Name & "_" & CLIENT & "_au_" & Format(ThisDocument.Variables(2).Value, "DD_MM_YYYY") & ".pdf"
                            Application.ActiveDocument.SaveAs (Chemin & fichierPDF)
                            objet = "Extraction EPTICA " & CLIENT
                            message = "Bonjour" & vbCrLf & vbCrLf & "Veuillez trouver ci-joint, l'extraction EPTICA " & CLIENT & " du " & ThisDocument.Variables(1).Value & " au " & ThisDocument.Variables(2).Value & "."
                            message = message & vbCrLf & vbCrLf & "Vous en souhaitant bonne réception." & vbCrLf & vbCrLf & "Cordialement."
                            dest = ""
                            cop = ""
                            URL = Chemin & fichierPDF
                        Call COURRIEL(objet, message, dest, cop, URL)
     
        End Select
     
     
        'Application.Interactive = True
        Application.Quit
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Public Sub COURRIEL(ByVal objet As String, ByVal message As String, ByVal dest As String, ByVal cop As String, ByVal URL As String)
     
    '============================================================================
    'POUR L'ENVOI NORMAL DE MAIL:
    '****************************************************************************
     
    'CALL COURRIEL(objet, message, dest, cop)
     
    'objet = "l'objet du mail"
    'message = "le message du mail"
    'dest = "le(s) destinataire(s) du mail"
    'cop = "le(s) adresse(s) en copie(s)"
    '****************************************************************************
     
    'ajouter le module Envoi_Courriel
    'ajouter de la référence: Microsoft CDO for Windows 2000 Library
    '============================================================================
     
    Dim lobj_cdomsg As CDO.message
    'Set FichierMail = CreateObject("Scripting.FileSystemObject")
    username = Application.Variables.Item("BOUSER").Value
    'envoi du courriel
     
    Dim resultat1 As String, resultat2 As String
     
            Set lobj_cdomsg = New CDO.message
                lobj_cdomsg.Configuration.Fields(cdoSMTPServer) = "a définir avec ton IT"
                lobj_cdomsg.Configuration.Fields(cdoSMTPConnectionTimeout) = 30
                lobj_cdomsg.Configuration.Fields(cdoSendUsingMethod) = cdoSendUsingPort
                lobj_cdomsg.Configuration.Fields.Update
                Call EMAIL("TO:", resultat1)
                lobj_cdomsg.To = resultat1  ' A
                Call EMAIL("CC:", resultat2)
                lobj_cdomsg.CC = resultat2  'CC
                    Select Case username
                        Case "prodglm"
                            lobj_cdomsg.From = "GLM_Reports@arvatoservices.fr"
                        Case "prodprisma"
                            lobj_cdomsg.From = "PRISMA_Reports@arvatoservices.fr"
                        Case "oaa"
                            lobj_cdomsg.From = "OAA_Reports@arvatoservices.fr"
                    End Select
                lobj_cdomsg.Subject = objet
                lobj_cdomsg.TextBody = lobj_cdomsg.TextBody & message & Chr(10) & Chr(10)
                lobj_cdomsg.TextBody = lobj_cdomsg.TextBody & "_____________________________" & Chr(10)
                lobj_cdomsg.TextBody = lobj_cdomsg.TextBody & "Service Reporting" & Chr(10)
                lobj_cdomsg.AddAttachment (URL)
                lobj_cdomsg.Send
            Set lobj_cdomsg = Nothing
            'Set FichierMail = Nothing
     
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Function EMAIL(ByVal dest As String, ByRef resultat As String)
     
    '****************** appel de la fonction **********************
    'Dim resultat As String
    'Call EMAIL("TO:", resultat)
     
    Dim Chaine As String
    Dim NumFichier As Integer
     
        NumFichier = FreeFile
     
    username = Application.Variables.Item("BOUSER").Value
    Select Case username
        Case "xxxxxx"
            Open ThisDocument.Path & "\Liste_Mail_1.txt" For Input As #NumFichier
        Case "xxxxxxx"
            Open ThisDocument.Path & "\Liste_Mail_2.txt" For Input As #NumFichier
        Case "xxxxxxx"
            Open ThisDocument.Path & "\Liste_Mail_3.txt" For Input As #NumFichier
    End Select
        Line Input #NumFichier, Chaine
     
        Select Case dest
     
            Case "TO:"
     
                Do While Not EOF(NumFichier)
     
                    Line Input #NumFichier, Chaine
                    If Chaine = "CC:" Then Exit Do
                    If Chaine <> "" Then
                    resultat = Chaine & ";" & resultat
                    End If
     
                Loop
     
            Case "CC:"
     
                Do
                    Line Input #NumFichier, Chaine
                    If Chaine = "CC:" Then Exit Do
                Loop While Not EOF(NumFichier)
     
                Do While Not EOF(NumFichier)
     
                    Line Input #NumFichier, Chaine
                    If Chaine = "" Then Exit Do
                    resultat = Chaine & ";" & resultat
     
                Loop
     
        End Select
     
     
        Close #NumFichier
     
    End Function
    il faut que j'avoue que le site m'a fortement inspiré surtout pour les filtres complexes dynamiques (encore merci d'ailleurs)
    je te joins le fichier texte pour les noms des destinaires
    je sais j'ai un gros défaut je ne mets pas de commentaires dans mes script mais bon c'est mon coté développeur ayant appris sur le net sans aucune méthode
    mais bon comme de toute facon je suis le seul à les lire et les comprendre (enfin pas toujours), cela ne me pose pas de problème

    voilà en espérant d'avoir aidé ou en tout cas mis sur une piste

    munity
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Profil pro
    Chef de projet MOE
    Inscrit en
    Février 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOE

    Informations forums :
    Inscription : Février 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Merci
    Merci de ta réponse et de ta rapidité.
    Je vais tester.
    Cordialement.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    ah oui j'oubliais
    je mets également un test sur le nombre de ligne retourné après le refresh
    cela évite la génération de fichier vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nblignes = Application.ActiveDocument.DataProviders.Item(1).NbRowsFetched
    If nblignes <> 0 Then
    Action 1
    else
    Action 2
    end if
    par contre pour un filtre complexe qui n'a aucune donnée je n'ai pas encore trouvé ou plutot cherché....
    juste au cas ou...

  7. #7
    Membre à l'essai
    Profil pro
    Chef de projet MOE
    Inscrit en
    Février 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOE

    Informations forums :
    Inscription : Février 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Merci encore.
    A+

  8. #8
    Membre à l'essai
    Profil pro
    Chef de projet MOE
    Inscrit en
    Février 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOE

    Informations forums :
    Inscription : Février 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Problème résolu
    Bonjour munity,

    J'ai enfin trouvé la solution.
    En clonant 3 fois le serveur WebIntelligence Processing Server et en mettant la limite au maxi du "Nombre maximal de documents par utilisateur" à 20.
    De plus pour un document complexe, le document source ne doit pas être purgé (contrairement à un document simple avec 1 seul fournisseur de données).
    Chaque document peut contenir des invites.

    Donc pas besoin de macros ou de SDK.

    Merci encore de ton aide.
    Cordialement.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    mais de rien meme si je n'ai pas fait grand chose...
    a plus

    cordialement

    munity

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/03/2009, 13h15
  2. [PDF] Création lien vers ancrage sur document PDF
    Par Greatz dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/12/2008, 18h06
  3. Réponses: 2
    Dernier message: 16/06/2007, 16h59
  4. [FPDF] Tableau sur document PDF
    Par pollux75012 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 09/02/2007, 18h01
  5. documents pdf sur flash 8 ?
    Par cannavaro2006 dans le forum Flash
    Réponses: 5
    Dernier message: 16/11/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo