Sari la conținut

Functii in Power Apps – cele mai utile

“Radu, ai cumva vreo lista cu cele mai utile functii in Power Apps?” – asta a fost o intrebare primita recent la un curs despre Power Apps. Raspunsul meu pe loc a fost atunci ca nu, dar fac, si asa s-a nascut acest articol, multumesc pentru provocare. Vedeti, m-am tinut de cuvant chiar daca voi credeati ca uit. 🙂

Logo Power Apps

Cuprins

Articolul va fi unul mai lung, asa ca am zis ca ar fi bun un cuprins.

Ce e Power Apps?

Ca si raspuns la intrebarea aceasta Microsoft ne spune:

Power Apps is a suite of apps, services, and connectors, as well as a data platform, that provides a rapid development environment to build custom apps for your business needs.

Adica pe scurt, o platforma de dezvoltare “low code” care ne poate ajuta sa dezvoltam rapid aplicatii customizate pe ceea ce avem nevoie. Vezi mai jos cateva resurse care te-ar putea sa intelegi mai bine lucrurile:

Da, normal ca avem un curs online si pe acest subiect. Ok, hai sa ne apucam de treaba, suficient cu introducerea.

E o functie care ma ajuta ca sa merg de la un ecran la altul.

Navigate(target, transition, context
  • target: ecranul pe care vrem sa mergem
  • transition (optional): daca vrem vreo animatie cand schimbam ecranul
  • context (optional): daca vrem sa transmitem vreo variabila de context pe un alt ecran

Functia Set

Aceasta functie ma ajuta sa schimb valoarea unei variabile. Nu pot in Power Apps sa spun variabila_x = 100, pot insa ca sa folosesc functia Set in felul urmator.

Set(variabila_x,100)
  • variable: numele variabilei, primul parametru
  • value: valoarea pe care vreau sa o pun in variabila

Functiile cu Form la final

Aici ma refer la SubmitForm, NewForm, EditForm, ViewForm. Voi da exemplu cu o singura functie, sintaxa este la fel insa si la restul.

SubmitForm(form)
  • form: denumirea formularului, ai intuit bine

Functia Filter

O functie care ma poate ajuta sa filtrez randurile pe care le aduc dintr-o sursa de date (de ex. lista din SharePoint). Hai sa ne uitam in primul rand la sintaxa si apoi sa luam cateva exemple:

Filter(source, logical_test, ...)
  • source: tabelul de unde vrem sa luam date
  • logical_test: care e conditia pe care trebuie sa o respecte randurile pentru a le aduce in Power Apps

Hai sa luam un exemplu: vrem sa afisam pe ecran toate randurile care au fost create de catre persoana care utilizeaza aplicatia. Nu am vrea sa vada ce solicitari au facut colegii.

Filter(Solicitari,'Created By'.Email = User().Email)

Si hai sa mai luam inca unul, in exemplul de mai jos implementam o functie de cautare. Vrem sa afisam doar randurile acolo unde numele clientului incepe cu ceea ce scriem intr-un input box (TextInput1).

Filter(Clienti, StartsWith(Denumire_client_SharePoint,TextInput1.Text))

Functia Sort

O functie care ma poate ajuta sa modific sortarea elementelor dintr-un tabel.

Sort(source, expression)
  • source: tabelul pe care vrem sa il reordonam
  • expression: de obicei coloana in functie de care vrem sa sortam
  • order: crescator sau descrescator

Hai sa vedem un exemplu, mai jos afisam lista de clienti in ordine alfabetica.

Sort(Clienti, Denumire_client, SortOrder.Ascending)

In cazul meu folosesc de multe ori functia Sort in combinatie cu Filter, nu degeaba le-am pus impreuna. Vezi mai jos cum poti sa afizezi alfabetic doar clientii creati de tine.

Sort(
   Filter(Solicitari,'Created By'.Email = User().Email), 
   Denumire_client, SortOrder.Ascending
)

O functie similara cu Filter care te poate ajuta sa implementezi functionalitatea de cautare in Power Apps, dupa cum ii spune si numele.

Search(source, text, column, column, ...
  • source: tabelul in care cautam
  • text: cuvantul sau cuvintele in functie de care cautam
  • column: coloana in care cautam

Reiau exemplul de mai sus, vrem sa pastram intr-o galerie doar clientii care au in denumire ceea ce scriu intr-un text input. Formula ar arata cam asa:

Search(Clienti, text_input, Denumire_client, Adresa_client)

Dupa cum vezi, cu functia search eu pot sa caut in mai multe coloane cu o singura formula. De asemenea, functia search nu ma forteaza ca si filter sa fie scris tot numele clientului pentru a mi-l arata pe ecran. La filter a trebuit sa fac combinatia cu StartsWith pentru a avea un rezultat similar.

Functia are insa si un dezavantaj fata de Filter, nu este delegabila, o problema importanta daca baza ta de date e in SharePoint. Nu e aici locul in care sa scriu mai multe, pe scurt va genera erori daca vrei sa cauti in tablele care au mai mult de 2000 de randuri.

Functia LookUp

O functie care ma ajuta sa gasesc un anumit rand dintr-o lista. Te rog sa observi ca vorbesc la singular. LookUp cauta un singur rand in timp de Filter cauta mai multe.

LookUp(source, condition, result)
  • source: tabelul in care cautam
  • condition: care e conditia
  • result: ce coloana vrem sa returnam din tabel

Hai sa luam un exemplu. Vrem sa returnam cand a fost creat randul cu ID 13.

LookUp(Clienti, ID = 13, Created)

Ultimul parametru este optional, pot sa il ignor atunci cand vreau sa caut un rand intreg si nu o coloana specifica.

Functia If

Nu cred ca trebuie sa iti spun ce face functia IF, dar totusi o fac, ma ajuta sa definesc o conditie si apoi actiuni in functie de asta.

If(logical_test, true_value, else_value)
  • logical_test: intrebarea pe care o punem
  • true_value: ce facem daca raspunsul e pozitiv
  • else_value: ce facem daca raspunsul e negativ

Ca si exemplu, vrem ca un buton sa fie vizibil doar daca Form1 este pe modul Edit. Ca si mentiune aici, formula de mai jos o scriem pe proprietatea Visible.

If(Form1.DisplayMode = DisplayMode.Edit,true,false)

Functia RemoveIf

O functie foarte utila cand vrem sa eliminam un rand specific, sau mai multe.

RemoveIf(collection, condition)
  • collection: tabelul de unde vrem sa stergem randuri
  • condition: conditia pe care o setam

Si aici merge un exemplu, vrem sa stergem randul selectat intr-un data table (DataTable1).

RemoveIf(Clienti, ID = DataTable1.Selected.ID)

Atentie cu functia asta, sa nu stergi lucruri aiurea fara confirmare.

Functia UpdateIf

Similara cu functia RemoveIf, cu mentiunea ca aceasta ma ajuta sa inlocuiesc continutul unui rand sau a unei valori.

UpdateIf(collection, condition, item)
  • collection: tabelul in care vrem sa facem update
  • condition: care e conditia
  • item: ce inlocuim mai exact

Ca si exemplu, vrem sa inlocuim informatia de pe coloana adresa din tabelul de clienti de pe randul 13 cu ceea ce scrie in TextInput1.

UpdateIf(Clienti, ID = 13, { Adresa: TextInput1.Text })

Functia Patch

O functie similara cu UpdateIf, o folosesc tot pentru a actualiza informatia intr-o baza de date fara sa fie nevoie de un formular.

Patch(source, record, update)
  • source: tabelul in care vrem sa facem modificari
  • record: randul pe care vrem sa il actualizam
  • update: ce vrem sa actualizam mai exact

In exemplul de mai jos vrem sa actualizam informatia de pe randul selectat intr-un data table pe 2 coloane separate.

Patch(Clienti, LookUp(Clienti, ID = DataTable1.Selected.ID),
   {
      Tip: "Aici punem un text",
      Numar: 10
   }
) // - aici inchidem paranteza de la Patch

Functiile Collect, ClearCollect

Functii foarte utile daca lucram cu colectii, sau tabele locale in Power Apps. Nu intru aici in detalii, poate ar fi relevant un articol separat despre colectii, sper sa prind si acea zi in care sa fie suficient de mare interesul incat sa scriu si despre asta.

Hai sa vedem sintaxa la Collect in primul rand:

Collect(collection, item, ...)

Si acum hai sa vedem la ClearCollect:

ClearCollect(collection, item, ...)

Daca ti se pare ca ele cam seamana, inseamna ca vezi bine. Este totusi o diferenta importanta intre ele:

  • Collect: va adauga randuri in continuarea unei colectii existente
  • ClearCollect: va sterge randurile existente si va pastra doar randurile noi

Ce mi-a scapat?

Wow, tu chiar ai ajuns pana aici, felicitari. Ce functie mai trebuie sa fie in aceasta lista? Scrie-mi pe pagina de contact.

.

Daca ai ajuns pana aici cautand sectiunea de comentarii, sa stii ca aceasta nu exista :). Poti insa ca sa ne pui intrebari in partea de forum a site-ului, te asteptam acolo.

Comentarii

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *