Accès simultané à une liste sharepoint

  • Accès simultané à une liste sharepoint

    Posté par Alain Pujol sur 3 août 2022 at 5h51

    Bonjour,

    J’ai une liste sharepoint qui répertorie des magasins d’articles, puis j’ai une liste sharepoint par magasin qui contient les articles.

    Depuis POWER APPS j’accède à un magasin et je fais des entrées /sorties, je mets donc à jour des quantitatifs.
    Je voudrais éviter que plusieurs utilisateurs accèdent en même temps au même magasin. Pour cela je pensais bloquer le magasin lors de l’accès du premier utilisateur en mettant un flag de réservation à 1 = occupé et à 0 = libre.
    Comment remettre à 0 ce flag si l’application est fermée sans clic sur le bouton quitter?

    J’ai fais des recherches mais je n’ai rien trouvé comme solution.

    Quel est votre avis

    Merci par avance

    Cordialement

    PostID=wLOrWTvTRRMGKvV

    Alain Pujol a répondu 11 months, 3 weeks ago 1 Membre · 3 Réponses
  • 3 Réponses
  • DavidZed

    Member
    3 août 2022 at 8h30

    Bonjour,

    Il y a peut être moyen d’obtenir le statut d’une session power apps via un power automate, mais je suis assez peu optimiste la dessus.
    L’idée serait de stocker l’ID de session d’exécution de l’appli dans ton item SP. Et d’avoir un flux planifié qui vérifie si la session est fermée, auquel cas il déverrouillerai l’item. Solution à explorer mais sans garantie de résultat
    Pour obtenir l’Id de session : GetPowerAppsSessionID.Run()

    Autre option, qui par contre marcherait à coup sûr :
    – Ajouter une variable (VarLock) true/false quand ton formulaire d’édition est ouvert
    – Ajouter un Timer de 4min (hors champ ou masqué) avec
    Autostart & Repeat : VarLock
    OnTimerEnd : If(Form1.Mode=DisplayMode.Edit;Patch(ListeSP;VarItem;{LockedBy : User().Email}))

    Sur ton DisplayMode du formulaire:

    If(VarItem.LockedBy = User().Email || DateDiff(VarItem.ModifiedOn;Now();Minutes)>5;DisplayMode.Edit;DisplayMode.View)

    Résultat :
    Tant que le formulaire est ouvert en édition sur un item, on patch toutes les 4 min l’item avec le nom de l’utilisateur dans la colonne LockedBy
    Quand on sélectionne un item, si l’utilisateur est celui qui l’a verrouillé ou si l’item n’a pas été verrouillé depuis plus de 5 min, on ouvre le formulaire en mode édition, sinon on l’ouvre en mode lecture

    CommentID=Xa78D5RQABFUcd0, PostID=wLOrWTvTRRMGKvV

  • R3dKap

    Member
    3 août 2022 at 10h18

    Alain Pujol l’idée de DavidZed est bonne. Je précise un peu comment je vois les choses :

    • une colonne LockDateTime de type date et heure

    • une colonne LockUser de type utilisateur

    • lorsque l’utilisateur rentre dans le magasin démarrage d’un timer qui se déclenche toutes les 5mn

    • à chaque déclenchement du timer (et au démarrage aussi), mise à jour de LockDateTime à Now() et LockUser à User()

    • lorsque l’utilisateur quitte le magasin, arrêt du timer et mise à blanc de LockDateTime et LockUser (pour ce faire, attention de bien activer le paramètre Gestion des erreurs au niveau de la formule dans les fonctionnalités expérimentales)

    • un utilisateur quelconque est autorisé à entrer dans le magasin si et seulement si :

      • LockDateTime et LockUser sont vides
        OU
        Now() > LockDateTime + 5mn (ce qui laisse sous-entendre que l’utilisateur qui avait précédemment verrouillé le magasin n’y est plus)

    CommentID=rN3SujWnFY8GkUE, PostID=wLOrWTvTRRMGKvV

  • Alain Pujol

    Member
    3 août 2022 at 12h56

    Merci a tous les deux pour vos réponses, je vois un peu mieux comment je vais solutionner mon problème.

    Bonne journée,

    Cordialement

    CommentID=uJRYFChpgRMaa0K, PostID=wLOrWTvTRRMGKvV

Connectez-vous pour répondre.