DavidZed
MembreRéponses céées sur le Forum
-
DavidZed
Membre19 mai 2024 à 21h23 en réponse à: [Débutant]Comment filtrer et récupérer des pdfs dans des sous-dossier sharepointSinon 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 -
DavidZed
Membre19 mai 2024 à 21h20 en réponse à: [Débutant]Comment filtrer et récupérer des pdfs dans des sous-dossier sharepointHello,
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
Membre17 mai 2024 à 22h46 en réponse à: Comment fixer la valeur par défaut d’une heure dans un champ date et heure ?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.
-
DavidZed
Membre14 mai 2024 à 19h53 en réponse à: Comment fixer la valeur par défaut d’une heure dans un champ date et heure ?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
-
- 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 } ) - Question 1a : dans mon cas la liste parante est Boite80. C’est bien cela?
-
- 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 )
- Question 1a : dans mon cas la liste parante est Boite80. C’est bien cela?
-
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 !
-
DavidZed
Membre8 mai 2024 à 11h04 en réponse à: Execution d’automate dans Power Apps pour tous les utilisateursHello
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
- En DEV :
-
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 :
- Publier ta solution
- L’exporter en tant que solution managée
- L’importer sur l’environnement de destination
-
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
-
Bonjour
Pour ce type d’usage, l’intégration d’une Power App Canvas au rapport me paraît l’idéal
-
Voilà ce que j’ai trouvé de plus optimisé :
en syntaxe fr :
<div>
<div>Left(ParseJSON(JSON(Button2_2.Fill));7)
</div>
</div> -
DavidZed
Membre30 avril 2024 à 10h50 en réponse à: Création d’une collection qui concatène les informations de 3 tables DataversePS : ça fonctionnera si la colonne lookup dans Table1 se nomme Table2, si la colonne se nomme
cdx9_Télephone
par exemple, il faudra indiquercdx9_Télephone.cdx9_Phone
etcdx9_Télephone.cdx9_Indicateur
dans le Addcolumns -
DavidZed
Membre30 avril 2024 à 10h44 en réponse à: Création d’une collection qui concatène les informations de 3 tables DataverseLe 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
)
)