Cumul de ligne de table enfant depuis la table parent

  • Cumul de ligne de table enfant depuis la table parent

    Posté par Djamchid sur 27 mai 2024 à 17h30

    Hello la communauté,

    Je cherche à pallier à l’inconvenient de la colonne de cumul calculée sur Dataverse qui s’éxécute selon une fréquence planifiée.

    L’idéale serait que ma colonne de cumul de la table parente (liées à une table enfant par une colonne de recherche) qui calcule la somme des valeurs d’une colonne de la table enfant s’éxécute à chaque fois la table enfant est modifiée.

    J’ai tenté de pallier au problème via un flux power automate mais j’ai été limité par le fait qu’il est impossible d’utiliser les valeurs de la colonne de recherche pour filtrer les données récupérées dans la table enfant.

    Comment gérez vous cette problématique ? J’ai suis preneur des bonnes pratiques et des retours d’expérience.

    Djamchid a répondu Il y a 3 mois 2 Membres · 17 Réponses
  • 17 Réponses
  • Tanguy Touzard

    Membre
    27 mai 2024 à 17h33

    Je ne suis pas certain de comprendre la limitation dont tu parles.

    Peux tu expliciter?

  • Djamchid

    Membre
    27 mai 2024 à 18h09

    Concernant le flux automate, il s’avère que pour l’action lister lignes, je peux récupérer des valeurs de la table enfant dans les colonnes de mon souhait sauf pour la colonne de recherche. Quand je lui indique le nom de la colonne de recherche en sélection ou en filtre (j’ai éffectué plusieurs tests), il me renvoi un message d’erreur indiquant que la colonne est introuvable sur le type Microsoft.Dynamics.CRM..

    Pour plus d’information,

    J’ai deux tables, “Devis clients” relié par sa colonne iddevis à la table “Ligne de devis” par une colonne de recherche nommé iddevisclient.

    Dans la table “Ligne de devis” figure une colonne montanthtlignededevis.

    Dans la table “Devis clients” figure une colonne montanthtdevis, dont la valeur doit être la somme de montanthtlignededevis pour chaque iddevis.

    La colonne de calcul cumulée remplirai bien cette tache mais le montant total d’un devis dois s’afficher à la modification du devis et non selon une fréquence horaire.

    Un flux power automate permet de renseigner la colonne montanthtdevis en calculant la somme de la colonne montanthtlignededevis, le seul incovénient et que je ne peux pas filtrer ces valeurs sommées par la colonne iddevisclient car power automate n’arrive pas à appeler une colonne de recherche dans l’action “List row” (lister les lignes).

  • Tanguy Touzard

    Membre
    27 mai 2024 à 18h30

    Alors en fait, ça n’est pas une limitation mais pour les colonnes de recherche, il faut utiliser _nom-du-champ_value au lieu de nom-du-champ

    je pense que tu réussiras à faire ce que tu veux une fois cette notation utilisée

  • Djamchid

    Membre
    27 mai 2024 à 18h35

    Chatgpt4 m’a dit la même chose avant de me retourne vers la communauté😅, ça n’as pas marché.

  • Tanguy Touzard

    Membre
    27 mai 2024 à 18h36

    Alors ça DOIT marcher!

    peux tu mettre la requête ici?

  • Djamchid

    Membre
    27 mai 2024 à 19h07

    Affirmatif, mon erreur était sur l’absence du “_” en début d’écriture.

    Mon problème n’est pas résolu pour autant. Dans ma colonne iddevisclient (colonne recherche), les valeurs sont les suivants :

    Sur un simple flux automate pour tester la récupération de ces valeurs, le résultat est différent, au lieu d’avoir des numéros de devis, je retrouve des numéros qui ressemblent typiquement à des GUID.

  • Tanguy Touzard

    Membre
    27 mai 2024 à 19h21

    Il faut rajouter un $expand qui va permettre de récupérer la donnée de la table liée OU utiliser la notation pour afficher la valeur formatée de la colonne de recherche qui contiendra le libellé attendu.

    je te précise tout ça demain si nécessaire

  • Tanguy Touzard

    Membre
    28 mai 2024 à 11h02

    De retour!

    Donc, pour afficher la valeur du champ principal de la table issue de la colonne de recherche, tu peux faire:

    items('Apply_to_each')?['_cr3d3_iddevisclient_value@OData.Community.Display.V1.FormattedValue']

    ou alors, tu peux rajouter un expand dans ta requête, qui devrait ressembler à peu près à ça:

    cr3d3_iddevisclient($select=cr3d3_name)

    Et pour la récupération, ca donnerait:

    items('Apply_to_each')?['cr3d3_iddevisclient/cr3d3_name']

    A noter, que le terme pour l’expand doit être le nom de schéma de la colonne de recherche (qui respecte la casse, donc). Ca peut être un truc du genre cr3d3_IDDevisClient, faut que tu regardes dans les personnalisations pour avoir le bon terme

  • Djamchid

    Membre
    31 mai 2024 à 15h17

    Bonjour,

    J’ai testé la première solution (select columns = items(‘Apply_to_each’)?[‘_cr3d3_iddevisclient_value@OData.Community.Display.V1.FormattedValue’])et reçu le message d’erreur suivant,


    Ensuite j’ai testé la deuxième solution. Les informations que je cherche se trouvant dans la colonne cr3d3_iddevis de la table associée à celle de la colonne de recherche, j’ai essayé les paramètres suivant sans succès pour l’Expand Query (toujours avec le paramétrage select columns = _cr3d3_iddevisclient_value):

    cr3d3_iddevisclient($select=cr3d3_iddevis)

    _cr3d3_iddevisclient_value($select=cr3d3_iddevis)

    _cr3d3_iddevisclient_($select=cr3d3_iddevis)

    _cr3d3_iddevisclient($select=cr3d3_iddevis)

    J’’ai toujours un message du style

  • Tanguy Touzard

    Membre
    31 mai 2024 à 16h52

    Je ne reconnais pas les écrans qui présentent les messages d’erreur (c’est copilot?)

    Mais je suis certain de mon coup, le @OData.Community.Display.V1.FormattedValue devrait fonctionner, je l’utilise régulièrement…

    Peux tu montrer une capture d’écran du List Rows?

    Pour l’expand, il faut utiliser le nom de schéma qui est sensible à la casse. Regarde dans les propriétés de la colonne pour trouver le nom de schéma. C’est lui qu’il faut utiliser dans l’Expand.

  • Djamchid

    Membre
    31 mai 2024 à 17h24

    Je te réponds ASAP pour le @OData.Community.Display.V1.FormattedValue.

    Pour l’Expand Query, en effet, il faut utiliser utiliser le nom du schéma, mon erreur a était l’utilisation du nom logique.

    • Djamchid

      Membre
      31 mai 2024 à 17h25

      Affirmatif pour le message d’erreur, c’est bien une capture du Copilot.

  • Djamchid

    Membre
    31 mai 2024 à 21h29

    L’Odata aussi fonctionne.

    J’ai retenu cette méthode pour mettre à jour mon flux permettant de sommer le montant des lignes de devis.

    Je peux maintenant incrémenter les sommes dans une variable et envoyer un mail pour chacun des résultats, grâce aux paramétrages ci-dessous, et comme j’ai deux devis, je reçois mes deux mails avec mes deux sommes correctes. Il me reste un dernier point de blocage qui est la mise à jour des deux lignes de la table “Devis client” grâce à cette variable qui somme les montant de la table “Lignes de devis”.

    En ajoutant une action Update a row pour la table ligne de devis, je peux spécifier le Row ID avec triggerBody()?[‘_cr3d3_iddevisclient_value’] mais ce n’est pas ce que je veux, car cela mettrais à jour uniquement la ligne avec l’ID devis correspondant à l’ID devis du déclencheur. Il serait plus approprié d’utiliser items(‘Apply_to_each’)?[‘_cr3d3_iddevisclient_value’] à mon sens mais cela ne fonctionne pas.

    Que puis-je faire ?

  • Djamchid

    Membre
    5 juin 2024 à 13h35

    Bonjour,

    Je reste disposé à vous fournir toute information nécéssaire à la résolution de la problématique évoqué dans mon dernier message.

    Agréable après-midi à vous,

    Djamchid

  • Tanguy Touzard

    Membre
    5 juin 2024 à 17h07

    items(‘Apply_to_each’)?[‘_cr3d3_iddevisclient_value’] est l’identifiant du devis, pas de la ligne que tu souhaites mettre à jour.

    il faudrait mettre items(‘Apply_to_each’)?[‘<nom du champ primaire de la ligne de devis>4’]

  • Djamchid

    Membre
    6 juin 2024 à 5h41

    Bonjour,

    En effet :

    1. la table que je souhaite mettre à jour est bien “Devis client” (clés primaire : cr3d3_iddevis) et non la table “Ligne de devis” (table enfant qui sert aussi de déclencheur au flux).


    2. les valeurs de la colonne cr3d3_iddevis sont récupéré par le 1er List rows et utiliser à la suite par le Foreach et non le Apply to each (celui-ci utilise les valeurs de cr3d3_iddevisclients de la table “Ligne de devis”).

    3. Au regard de ces informations, j’ai tenté les inscriptions suivantes dans le champ Row ID de l’Update a row, sans succès :

    items(‘Foreach’)?[‘cr3d3_iddevis’]

    items(‘Foreach’)?[‘cr3d3_iddevis_value’]

    items(‘Foreach’)?[‘cr3d3_iddevis4’]

    items(‘Foreach’)?[‘<cr3d3_iddevis>4’]

    La logique m’échappe d’autant plus que le flux accepte pour le Row ID l’utilisation d’un @triggerBody()?[‘_cr3d3_iddevisclient_value’] issue du déclencheur ce qui n’est pas adapté pas à mon cas (la ligne qui doit être mis à jours doit avoir l’id devis correspondant à celui de la boucle Foreach en cours pour un résultat conforme).

    A dispo.

Page 1 sur 2

Connectez-vous pour répondre.