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

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

Cześć! Nazywam się Tomasz. Jestem wielkim fanem automatyzacji procesów i analizy biznesowej. Skupiam się na rozwijaniu moich umiejętności w pracy z produktami Nintex i Microsoft: w szczególności Office 365, SharePoint, Flow, PowerApps. Posiadam ponad 8 lat doświadczenia w pracy z SharePoint.