Réponses céées sur le Forum

Page 9 sur 70
  • Sinon je remplacerai :

    EndsWith(‘Chemin d’accès au dossier’; “General/RH/Feuilles de présence/”) 

    par

    StartsWith(‘Chemin d’accès au dossier’; “General/RH/Feuilles de présence/”) 

    Qui te permettra d’avoir tous les fichiers dans le dossier Feuilles de présence et ses sous-dossiers

  • Hello,

    Voici quelques explications :

    Le problème que tu rencontres est un avertissement relatif à la délégation, la délégation, c’est ce qui permet à Power apps de déléguer ta requête (ton filtre) à la source de données.

    Seules certaines requêtes sont délégables : dans le cas de sharepoint, le EndsWith est délégable, ton filtre est donc censé fonctionner… Mais, car il y a un mais… Les colonnes “système”, c’est à dire les colonnes crées par SharePoint pour faire fonctionner les listes et les bibliothèques ont une liste de fonctions délégables encore plus restreinte… et donc le EndsWith() met cet avertissement sur la colonne “chemin d’accès complet”…

    Il y a plusieurs options pour contourner cette limitation (de la plus simple à la plus complexe) :

    • Si ta bibliothèque contient (et contiendra toujours) moins de 2000 éléments : Tu peux ignorer l’avertissement et simplement augmenter la limite du nombre d’enregistrements retournés dans les paramètres de l’appli
    • Tu peux utiliser une collection, le principe est de faire le filtrage délagable dans un ClearCollect, et d’utiliser les filtres non-délégables sur cette collection (attention, le résultat du 1er filtre devra toujours faire moins de 2k éléments)
    • Tu peux créer un flux qui va copier le chemin d’accès dans une colonne de métadonnées dès qu’un fichier est modifié : les fonction StartsWith et EndsWith seront délégables sur cette colonne
    • Tu peux utiliser un flux instantanné qui va effectuer la requête et renvoyer le résultat sous forme de Json à Power Apps
  • DavidZed

    Membre
    18 mai 2024 à 21h38 en réponse à: Certification PL-300

    Je ne sais pas à quel fichier tu fais référence, mais voici le learn path pour la PL-300

  • Sinon tu peux peux-être passer par une commande custom dans la command bar :

    ça te permet de faire des fonction custo en Power Fx très facilement, tu pourrais patcher l’enregistrement actuel avec les valeurs qui te conviennent.

  • 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
    )
    )

Page 9 sur 70