Top
PowerApps

Czyszczenie kolumn z odnośnikami i osobami w PowerApps


Czy kiedykolwiek męczyłeś się z brakiem możliwości wyczyszczenia wartości z pól typu liczba, osoba lub lookup używając PowerApps? Ostatnio znalazłem się w takiej sytuacji. Logika biznesowa mojej aplikacji wymagała, by usuwać wartości z pól formularza, w tym właśnie liczbowych, osób i lookupów. Niestety przekonałem się, że nie jest to możliwe (albo, jeszcze nie).

Próbowałem każdego podejścia jakie przyszło mi do głowy i jakie znalazłem w internecie: wstawiając puste wartości, używając pustych obiektów dla lookupów:

{
  '@odata.type' : "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference",
  Id: 0,
  Value: null
}

i peoplepicker, jednak wciąż nic nie działało. Gdy już naprawdę miałem się poddać i uznać, że nie jest to możliwe, przypomniałem sobie o bliskiej integracji i współpracy pomiędzy PowerApps i Microsoft Flow.

Rozwiązanie

Używając Flow wyzwalanego poprzez zdarzenie w PowerApps (naciśnięcie na przycisk, zaznaczenie, etc…) okazało się to bardzo proste. Najpierw otwórz kartę “Actions” (1) w interfejsie PowerApps, następnie kliknij “Flow” (2). Teraz kliknij przycisk, z którym ma zostać związana akcja (3). Następnie w wyświetlonej karcie utwórz nowy Flow (4). Wystarczy dodać tu jedną akcję: “Call HTTP endpoint in SharePoint” (zauważ, że jest to nowa akcja w Flow i jest ekstremalnie użyteczna, ponieważ znosi konieczność korzystania z akcji HTTP request, nadawania uprawnień do logowania OAuth, czy ustalania trust w SharePoint. Łatwo i prosto). Następnie powiąż stworzony Flow z przyciskiem (5) i wstaw parametr do wywołania (6):

Prepare Flow for button click in PowerApps

Simple "PowerApps button" Flow

Dlaczeo użyłem tej akcji? Zorientowałem się, że używanie regularnej akcji „Zaktualizuj element listy” nie pozwala również na wyczyszczenie kolumn osoba i lookup (serio!), co więcej nie pozwala na aktualizację tylko jednego pola, a na raz wszystkich. Żeby więc nie wyczyścić wszystkiego, najpierw trzeba odpytać SharePoint o dane elementu, potem uzupełnić wszystkie pola w akcji aktualizacji. Sporo pracy, gdy chce się aktualizować jedno tylko pole.

Konfiguracja akcji “Call HTTP endpoint in SharePoint” wygląda następująco:

Send an HTTP Request to SharePoint

[tds_info] Aby uzyskać wartość „type”, wykonaj zapytanie do /_api/Web/Lists/GetByTitle(’List Name’)?$select=ListItemEntityTypeFullName i pobierz wartość zwróconą przez atrybut ListItemEntityTypeFullName. Ważne jest również to, że pola odnośników (lookup, person) muszą mieć swoje nazwy wewnętrzne zakończone „Id”.[/tds_info]

Następnie dodaj akcję “Return to PowerApps”, dzięki czemu będziesz mógł tworzyć sekwencję zdarzeń w PowerApps lub zwrócić informację z powrotem do swojej aplikacji.

Naprawdę działa to jak marzenie!

PowerApps and Flow clearing fields in SharePoint


Tomasz Poszytek

Cześć! Nazywam się Tomasz. Jestem ekspertem w dziedzinie automatyzacji procesów i budowaniu rozwiązań dla biznesu z użyciem Power Platform. Jestem Microsoft MVP i Nintex vTE.

Brak komentarzy

Wyślij komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.