Réponses céées sur le Forum

Page 7 sur 68
  • Hello,

    Si la valeur par défaut est une date fixe ou calculée par rapport à un autre champ date, tu peux le faire avec une business rule

    Pour les cas où la business rule ne répond pas au besoin (exemple si on veut l’heure actuelle par défaut),

    il faut le faire soit :

    • En JavaScript
    • Avec un flux
    • ou faire un composant Canevas
  • DavidZed

    Membre
    13 mai 2024 à 17h36 en réponse à: Mixer une galerie, formulaire et position
    • Question 1a : dans mon cas la liste parante est Boite80. C’est bien cela?
      • Exact
    • Question 1b: dans ma liste Boite80 je n’ai pas de colonne qui s’appelle Id. j’ai uniquement la colonne titreBoiteNum et lieuStockage. De quel colonne s’agit il alors?
      • La colonne ID est présente dans toute liste et tout bibliothèque, elle est générée automatiquement par Sharepoint, même si elle n’est pas affichée par défaut

    Donc cela donne :

    Patch( BoiteEmplacement ; Record ; { BoiteEmplacement :{ Id: ID-mere ; Value : Lookup( 'Boite80' ; ID=ID-mere ; titreBoiteNum ) } } )

    C’est bien cela?

    ça me paraît correct, si ce n’est qu’il y a peut être confusion avec la colonne ID-mere, il faut fournir l’ID de la colonne du même nom (encore une fois, pas une colonne que tu as créé, la colonne ID de la liste Boites80 qui a été générée par Sharepoint à la création de la liste ) ID-mere n’étant pas un ID mais une colonne lookup.

    Admettons que tu as un ComboBox_1 qui te permet de choisir le lieu de stockage, donc qui dans Items : Boites80

    Ton patch devrait ressembler à :

    Patch( BoiteEmplacement ; Record ; { Titre: $"{ComboBox_1.Selected.titreBoiteNum} {Text(Now(),"yyyymmdd-hhmmss")}" ; // Titre est une colonne requise on peut y mettre un numéro de référence d'après le N° de boite et la date
    ID-mere:{ Id: ComboBox_1.Selected.ID ; Value : ComboBox_1.Selected.titreBoiteNum } ;
    Emplacement : 5 } )
  • DavidZed

    Membre
    13 mai 2024 à 17h23 en réponse à: Mixer une galerie, formulaire et position
    • Question 1a : dans mon cas la liste parante est Boite80. C’est bien cela?
      • Exact
    • Question 1b: dans ma liste Boite80 je n’ai pas de colonne qui s’appelle Id. j’ai uniquement la colonne titreBoiteNum et lieuStockage. De quel colonne s’agit il alors?
      • La colonne ID est présente dans toute liste et tout bibliothèque, elle est générée automatiquement par Sharepoint, même si elle n’est pas affichée par défaut

    Donc cela donne :

    Patch( BoiteEmplacement ; Record ; { BoiteEmplacement :{ Id: ID-mere ; Value : Lookup( 'Boite80' ; ID=ID-mere ; titreBoiteNum ) } } )

    C’est bien cela?

    ça me paraît correct, si ce n’est qu’il y a peut être confusion avec la colonne ID-mere, il faut fournir l’ID de la colonne du même nom (encore une fois, pas une colonne que tu as créé, la colonne ID de la liste Boites80 qui a été générée par Sharepoint à la création de la liste )

  • DavidZed

    Membre
    8 mai 2024 à 11h23 en réponse à: Changement de nom d’une pièce jointe

    Bonjour,

    Le premier problème que tu vas rencontrer, c’est que le champ pièces jointes est multivalué: il est prévu pour accueillir plusieurs pièces jointes. Du coup si tu as un textinput unique, tu ne pourras que changer le nom de toutes les pièces jointes.

    Il est possible d’utiliser une collection que l’on actualise à l’ajout ou à la suppression d’une pièce jointe sur les évènements OnAddFile OnRemoveFile OnUndoRemoveFile :

    Voici un exemple où le nom de la première pièce jointe est renommée “Invoice date.pdf”

    <code class="hljs language-lisp">ClearCollect(colAttachments, DataCardValue10.Attachments);
    RemoveIf(colAttachments, Id = "");
    Patch(colAttachments, First(colAttachments), {
        Name: "invoice" & Text(Now(), "yyy-mm-dd-hh-mm-ss") & ".pdf",
        DisplayName: "invoice" & Text(Now(), "yyyy-mm-dd-hh-mm-ss") & ".pdf"
    });

    Ensuite il suffit de mettre la collection dans l’update du datacard à la place du

    <code class="hljs language-lisp"> DataCardValue10.Attachments

    Attention, dans le renommage, il faut veiller à préserver l’extension du fichier !

  • Hello

    Il m’est arrivé un problème similaire, mais avec un déploiement manuel, le contexte de déclenchement n’était plus transmis de l’app au flux en TEST et en PROD, mais fonctionnait bien en DEV, à tester sur un flux :

    • En DEV :
      • Retirer un flux de l’application
      • dans le flux : supprimer et recréer le déclencheur
      • Réintroduire le flux dans l’app
      • Redéployer
  • DavidZed

    Membre
    6 mai 2024 à 16h39 en réponse à: se connecter a powerapps

    Hello Brahim,

    Ton compte appartient à un Tenant, un tenant correspond à une organisation

    Un Tenant peut avoir plusieurs environnements (tu as d’ailleurs créé un environnement développeur à ton nom)

    Si tu veux partager une application au sein de ton organisation, il faut que les utilisateurs aient accès à ton enviornnement (ou déployer l’application sur un environnement auquel ils ont accès comme l’environnement par défaut)

    Si tu veux mettre à disposition ton application à une autre organisation, il faut la déployer dans un environnement du Tenant de cette organisation

    Pour déployer une application, le plus simple est de passer par une solution :

    Il faudra créer une solution et y ajouter ton application,

    Ensuite tu pourras dans l’ordre :

    1. Publier ta solution
    2. L’exporter en tant que solution managée
    3. L’importer sur l’environnement de destination

      Voici un guide sur l’ALM avec les solutions

  • DavidZed

    Membre
    3 mai 2024 à 9h36 en réponse à: Mixer une galerie, formulaire et position

    Hello,

    Garde la colonne recherche, c’est la best-practice 🙂

    Pour patcher une colonne lookup, tu dois fournir un enregistrement qui contient deux valeurs : Id et Value

    • Id correspond à la colonne ID de la liste parente (destination du lookup)
    • Value correspond à la colonne Title ou Titre de la liste parente

    Cette conversion rend le patch compliqué avec sharepoint (C’est beaucoup plus simple et intuitif avec Dataverse ! ), si tu as l’ID, tu peux reconstituer l’engistrement à fournir au patch de plusieurs manières :

    Patch( Source ; Record ; { BooiteEmplacement :{ Id: ID-mere ; Value : Lookup( 'Liste destination du lookup' ; ID=ID-mere ; Title ) } } )

    Ou alors en faisant un lookup sur la choicelist de la colonne recherche :

    Patch( Source ; Record ; { BooiteEmplacement : Filter( Choices([@'Liste des boites'].'Nom de la colonne recherche') ; Id = ID-mere } )

    en partant du principe que ID-mere est au format integer et non texte

  • DavidZed

    Membre
    2 mai 2024 à 18h22 en réponse à: Bouton sur rapport qui appelle une URL

    Bonjour

    Pour ce type d’usage, l’intégration d’une Power App Canvas au rapport me paraît l’idéal

  • DavidZed

    Membre
    2 mai 2024 à 16h31 en réponse à: récupération du code couleur d’une label

    Voilà ce que j’ai trouvé de plus optimisé :

    en syntaxe fr :

    <div>
    <div>Left(ParseJSON(JSON(Button2_2.Fill));7)</div>
    </div>

  • PS : ça fonctionnera si la colonne lookup dans Table1 se nomme Table2, si la colonne se nomme cdx9_Télephone par exemple, il faudra indiquer cdx9_Télephone.cdx9_Phone et cdx9_Télephone.cdx9_Indicateur dans le Addcolumns

  • Le AddColumns doit être imbriqué dans le showcolumns et ce dernier doit afficher les colonnes ajoutées :

    ClearCollect(
    colSR,
    ShowColumns(
    AddColumns(
    Table1,
    cdx9_Phone,
    Table2.cdx9_Phone,
    cdx9_Indicateur,
    Table2.cdx9_IndicateurPays
    ),
    cdx9_Nom,
    cdx9_Prenom,
    cdx9_Email,
    cdx9_Phone,
    cdx9_Indicateur
    )
    )

  • DavidZed

    Membre
    29 avril 2024 à 17h40 en réponse à: Problème flux d’approbation

    Hello,

    Par défaut les executions dans une boucle For Each sont séquentielles : les itérations de la boucle sont exécutées les unes après les autres : une nouvelle itération démarre uniquement quand la précédente a terminé.

    Le soucis c’est que l’action démarrer et attendre une approbation attend une réponse d’une personne pour poursuivre l’execution du flux.

    La solution :

    Il y a un paramètre à activer dans la boucle “appliquer à chacun”, c’est le parrallélisme, qui permet à la boucle de lancer plusieurs itération en parrallèle :

    Attention, à ne pas activer si dans la boucle on change des valeurs de variables (définir une variable) mais l’incrémentation ou l’ajout à un tableau restent possible

  • C’est étrange, peux tu montrer ton collect ?

  • DavidZed

    Membre
    29 avril 2024 à 17h21 en réponse à: récupération du code couleur d’une label

    Hello,

    Tu dois pouvoir y parvenir avec la commande JSON() :

    exemple

    JSON( LabelText.Fill )

    renvoie par exemple :

    “#6495edff”

    Attention car les 2 derniers caractères sont la transparence et il faudra certainement faire un substitue() pour enlever les “”

  • Hello,

    Si tu souhaites une table avec toutes les liaisons, pourquoi ne pas simplement conserver la structure de ta Table 1 et de sa colonne lookup vers la table 2 ?

    Si c’est pour des questions de performances et que tu as bien laissé cette option désactivée :

    faire des ShowColumns / DropColumns pour ne remonter que les données qui t’interessent ne va pas te faire gagner grand chose, dans la mesure où si une colonne n’est pas utilisée dans ton app, la donnée ne sera pas requêtée.

    Sinon pour faire ce que tu souhaites : applatir les relations en une table unique, il faudra faire un AddColumns pour chaque colonne enfant à afficher :

    ShowColumns(AddColumns(Table1 ; Added_Phone ; 'Nom de la colonne lookup'.cmd_Phone ) ; [Colonnes à afficher] )

Page 7 sur 68