Operatori i identifikatori platforme Power Apps
Odnosi se na: Aplikacije od gotovih gradivnih elemenata Aplikacije stvorene prema modelu
Neki od tih operatora ovise o jeziku autora. Dodatne informacije o jezičnoj podršci u aplikacijama od gotovih gradivnih elemenata potražite u odjeljku Globalne aplikacije.
Simbol | Tip | Primjer | Opis |
---|---|---|---|
'...' | Identifikator | 'Naziv računa' | Identifikatori koji sadrže posebne znakove, uključujući razmake, nalaze se u jednostrukim navodnicima |
"..." | Tekstni niz | "Hello, World" | Tekstni nizovi nalaze se u dvostrukim navodnicima |
$"..." | Interpolacija niza | $"Dear {FirstName}," | Formule ugrađene unutar tekstnog niza |
. | Birač svojstva | Slider1.Value Color.Red Acceleration.X |
Izdvaja svojstvo iz tablice, kontrole, signalaili nabrajanja. Za povratnu kompatibilnost može se koristiti i !. |
. [ovisi o jeziku] |
Decimalni znak odjeljivanja | 1.23 | Znak odjeljivanja između cijelog broja i razlomka. Znak ovisi o jeziku. |
( ) | Zagrada | Filter (T, A < 10) (1 + 2) * 3 |
Primjenjuje redoslijed prioriteta i grupira podizraze u veći izraz |
+ | Aritmetički operatori | 1 + 2 | Zbrajanje |
- | 2 - 1 | Oduzimanje i predznak | |
* | 2 * 3 | Množenje | |
/ | 2 / 3 | Dijeljenje (pogledajte također funkciju Mod) | |
^ | 2 ^ 3 | Potenciranje, ekvivalentno funkciji Power | |
% | 20 % | Postotak (ekvivalentno "* 1/100") | |
= | Operatori usporedbe | Cijena = 100 | Jednako |
> | Cijena > 100 | Veće od | |
>= | Cijena >= 100 | Veće od ili jednako | |
< | Cijena < 100 | Manje od | |
<= | Cijena <= 100 | Manje od ili jednako | |
<> | Cijena <> 100 | Nije jednako | |
& | Operator za povezivanje niza | "Hello" & " " &; "Svijet" | Čini da se višestruki nizovi prikazuju neprekidno |
&&ili I | Logički operatori | Cijena < : 100 &&; Klizač1.Vrijednost = 20 ili Price < 100 And Slider1.Value = 20 |
Logička konjunkcija, ekvivalentna vrijednosti funkcije And |
|| ili Ili | Price < 100 || Slider1.Value = 20 ili Price < 100 Or Slider1.Value = 20 | Logička disjunkcija, ekvivalentna vrijednosti funkciji Or | |
! ili Ne | !(Price < 100) ili Not (Price < 100) | Logička negacija, ekvivalentna vrijednosti funkciji Not | |
exactin | Operatori za članstvo | Gallery1.Selected exactin SavedItems | Pripadaju zbirci ili tablici |
exactin | "Windows" exactin “Za prikaz prozora u operacijskom sustavu Windows...” | Testiranje podniza (prepoznaje velika i mala slova) | |
u | Gallery1.Selected in SavedItems | Pripadaju zbirci ili tablici | |
u | "The" u "The keyboard and the monitor..." | Testiranje podniza (ne prepoznaje velika i mala slova) | |
@ | Operator rješavanja nesklada | MyTable[@fieldname] | Rješavanje nesklada polja |
@ | [@MyVariable] | Globalno rješavanje nesklada | |
, [ovisi o jeziku] |
Razdjelnik popisa | If( X < 10, "Low", "Good" ) { X: 12, Y: 32 } [ 1, 2, 3 ] |
Razdvaja: Taj znak ovisi o jeziku. |
; [ovisi o jeziku] |
Ulančavanje formule | Collect(T, A); Navigate(S1, "") | Odvojeni pozivi funkcija u svojstvima ponašanja. Operator ulančavanja ovisi o jeziku. |
Kao | Operator As | AllCustomers As Customer | Nadjačava funkcije ThisItem i ThisRecord u galerijama i funkcijama djelokruga zapisa. Operater As koristan je za davanje boljeg, specifičnog naziva i posebno je važan u ugniježđenim scenarijima. |
Self | Operator Self | Self.Fill | Pristup svojstvima trenutačne kontrole |
Parent | Nadređeni operator | Parent.Fill | Pristup svojstvima kontrolnog spremnika |
ThisItem | Operator ThisItem | ThisItem.FirstName | Pristup poljima galerije ili kontroli obrasca |
ThisRecord | ThisRecord operator | ThisRecord.FirstName | Pristup cjelokupnom zapisu i pojedinačnim poljima zapisa unutar funkcija ForAll, Sum, With i drugih funkcija djelokruga zapisa. Može se nadjačati operatorom As. |
Napomena
Operator @ također se može koristiti za provjeru vrste objekta zapisa prema izvoru podataka. Na primjer, Collect(coll,Account@{'Account Number: 1111')
u završnim exactin operatorima
Koristite operatore in i exactin za pronalaženje niza u izvoru podataka, kao što je zbirka ili uvezena tablica. Operator in identificira podudaranja bez obzira na slučaj, a operator exactin identificira podudaranja samo ako su ispisani velikim slovima na isti način. Evo primjera:
Stvarate ili uvozite zbirku po imenu Zaliha i prikažite je u galeriji kao prvi postupak u opisima Prikaži slike i tekst u galeriji.
Postavite svojstvo Items za galeriju na ovu formulu:
Filter(Inventory, "E" in ProductName)Gallery prikazuje sve proizvode osim Callisto jer je naziv tog proizvoda jedini koji ne sadrži slovo koje ste naveli.
Promijenite svojstvo Items za galeriju na ovu formulu:
Filter(Inventory, "E" exactin ProductName)Gallery prikazuje samo Europa jer samo njeno ime sadrži slovo koje ste naveli u slučaju koji ste naveli.
Operatori ThisItem, ThisRecord i As
Nekoliko kontrola i funkcija primjenjuje formule na pojedinačne zapise tablice. Za upućivanje na pojedinačni zapis u formuli koristite jedno od sljedećeg:
Operater | Odnosi se na | Opis |
---|---|---|
ThisItem | Galerija kontrola Uređivanje obrasca kontrola Prikaz obrasca kontrola |
Zadani naziv za trenutni zapis u Galeriji ili kontroli obrasca. |
ThisRecord | ForAll, Filter, With, Sum i druge funkcije djelokruga zapisa | Zadani naziv za trenutni zapis u funkciji ForAll i drugim funkcijama djelokruga zapisa. |
Kaonaziv | Galerija kontrola ForAll, Filter, With, Sum i druge funkcije djelokruga zapisa |
Definira naziv za trenutni zapis zamjenjujući zadanu funkciju ThisItem ili ThisRecord. Koristite operator As da biste pojednostavili formule i riješili nejasnoće pri ugnježđivanju. |
Operator ThisItem
Primjerice, u sljedećoj kontroli Galerija, svojstvo Stavke postavljeno je na izvor podataka Zaposlenici (kao što je tablica Zaposlenici uključena u uzorak Northwind TRaders):
Employees
Prva stavka u galeriji je predložak koji se ponavlja za svakog zaposlenika. U predlošku, formula za sliku koristi funkciju ThisItem za upućivanje na trenutnu stavku:
ThisItem.Picture
Isto tako, formula za naziv također koristi ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
Operator ThisRecord
ThisRecord se koristi u funkcijama koje imaju djelokrug zapisa. Na primjer, možemo koristiti funkciju Filter sa svojstvom Items naše galerije za prikaz samo imena koja počinju sa slovom M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
Operator ThisRecord nije obavezan i podrazumijeva se direktnom upotrebom polja, na primjer, u ovom smo slučaju mogli napisati:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Iako nije obavezna, upotreba operatora ThisRecord može olakšati razumijevanje formula i može biti potrebna u nejasnim situacijama kada naziv polja može biti i naziv odnosa. Operator ThisRecord nije obavezan, ali ThisItem uvijek jeste.
Koristite operator ThisRecord za upućivanje na cijeli zapis s funkcijama Patch, Collect i ostalim funkcijama djelokruga zapisa. Na primjer, sljedeća formula postavlja status svih neaktivnih zaposlenika u aktivne:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Operator As
Koristite operator As za imenovanje zapisa u galeriji ili funkciji djelokruga zapisa, nadjačavajući zadani operator ThisItem ili ThisRecord. Imenovanje zapisa može vam olakšati razumijevanje formula i može biti potrebno u ugniježđenim situacijama za pristup zapisima u drugom djelokrugu.
Na primjer, možete izmijeniti svojstvo Items naše galerije za upotrebu operatora As kako bismo utvrdili da radimo sa zaposlenikom:
Employees As Employee
Formule za sliku i naziv prilagođene su upotrebi ovog naziva za trenutni zapis:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
Operator As se također može koristiti s funkcijama djelokruga zapisa za zamjenu zadanog naziva ThisRecord. To možemo primijeniti na naš prethodni primjer da bismo pojasnili zapis s kojim radimo:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Pri ugnježđivanju galerija i funkcija djelokruga zapisa, operatori ThisItem i ThisRecord uvijek se odnose na unutarnji djelokrug, što zapise u vanjskom djelokrugu ostavlja nedostupnim. Koristite operator As da bi svaki djelokrug postao dostupan tako što ćete mu dati jedinstven naziv.
Na primjer, ova formula stvara uzorak šahovske ploče kao tekstni niz ugnježđivanjem dviju funkcija ForAll:
Concat(
ForAll( Sequence(8) As Rank,
Concat(
ForAll( Sequence(8) As File,
If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " )
),
Value
) & Char(10)
),
Value
)
Postavljanje svojstva Text kontrole Label prema ovoj formuli prikazat će sljedeće:
Analizirajmo što se ovdje događa:
- Počinjemo iteracijom neimenovane tablice od 8 numeriranih zapisa iz funkcije Sequence. Ova petlja je za svaki red ploče koji se obično naziva Rang i zato mu dajemo ovaj naziv.
- Za svaki red ponavljamo još jednu neimenovanu tablicu od 8 stupaca i dajemo zajednički naziv Datoteka.
- Ako je vrijednost Rank.Value + File.Value neparni broj, kvadrat dobiva X, u suprotnom, točku. Ovaj dio formule odnosi se na obje petlje ForAll, što je omogućeno pomoću operatora As.
- Concat koristi se dvaput, prvo za sastavljanje stupaca, a zatim redaka, uz funkciju Char(10) ubačenu za stvaranje novog retka.
Sličan primjer moguć je s ugniježđenim kontrolama Gallery umjesto funkcijama ForAll. Započnimo s okomitom galerijom za Rang. Ova kontrola galerije imat će formulu Items sačinjenu od:
Sequence(8) as Rank
Unutar ove galerije postavit ćemo vodoravnu galeriju za Datoteku, koja će se replicirati za svaki Rang, sa svojstvom Items sačinjenim od:
Sequence(8) as File
Na kraju ćemo unutar ove galerije dodati kontrolu Label koja će se replicirati za svaku Datoteku i svaki Rang. Podesit ćemo njenu veličinu kako bi ispunila cijeli prostor i upotrijebit ćemo svojstvo Fill za pružanje boje pomoću ove formule:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Operatori Self i Parent
Postoje tri načina za upućivanje na kontrolu i njena svojstva u formuli:
Način | Opis |
---|---|
Prema nazivu kontrole | Na bilo koju kontrolu može se uputiti prema nazivu s bilo kojeg mjesta unutar aplikacije. Na primjer Label1.Fill odnosi se na svojstvo fill kontrole pod nazivom Label1. |
Operator Self | Često je prikladno uputiti na drugo svojstvo iste kontrole pri pisanju formule. Umjesto apsolutnog upućivanja prema nazivu lakše je i prijenosnije koristiti relativno upućivanje self na samog sebe. Operator Self omogućuje taj jednostavan pristup trenutačnoj kontroli. Na primjer Self.Fill odnosi se na boju ispuna trenutne kontrole. |
Nadređeni operator | Neke kontrole udomaćuju druge kontrole poput kontrola Screen i Gallery. Hostirana kontrola za kontrole unutar sebe naziva se nadređena. Poput operatora Self operator Parent pruža jednostavno relativno upućivanje na kontrolu spremnika. Na primjer Parent.Fill odnosi se na svojstvo ispuna kontrole koje je spremnik za trenutnu kontrolu. |
Self i Parent su operatori, a ne svojstva na samim kontrolama. Upućivanje na Parent.Parent, Self.Parent ili Parent.Self nije podržano.
Nazivi identifikatora
Nazivi varijabli, izvora podataka, stupaca i drugih objekata mogu sadržavati svaki Unicode standard.
Upotrijebite pojedinačne navodnike oko naziva koji sadrži razmak ili drugi posebni znak.
Upotrijebite dva jednostruka navodnika zajedno kako biste predstavili jedan jednostruki navodnik u nazivu. Nazivima koji ne sadrže posebne znakove ne trebaju jednostruki navodnici.
Evo nekoliko primjera naziva stupaca na koje možete naići u tablici i načina njihova prikazivanja u formuli:
Naziv stupca u bazi podataka | Referenca stupca u formuli |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Naziv s razmacima | 'Name with spaces' |
Naziv s „dvostrukim” navodnicima | 'Name with "double" quotes' |
Naziv s 'jednostrukim' navodnicima | 'Name with ''single'' quotes' |
Naziv sa znakom @ | 'Name with an @ at sign' |
Dvostruki navodnici upotrebljavaju se za određivanje tekstnih nizova.
Prikaz naziva i logičkih naziva
Neki izvori podataka kao što su SharePoint i Microsoft Dataverse imaju dva različita naziva koja se odnose na istu tablicu ili stupac podataka:
Logički naziv – Naziv za koji se jamči da je jedinstven, ne mijenja se nakon stvaranja, obično ne dopušta razmake ili druge posebne znakove i ne prevodi se na različite jezike. Kao rezultat, naziv može biti zagonetan. Ove nazive upotrebljavaju profesionalni razvojni inženjeri. Na primjer, cra3a_customfield. Ovaj se naziv može također navesti kao naziv sheme ili samo naziv.
Zaslonski naziv – naziv koji je prilagođen korisniku i vidljiv krajnjim korisnicima. Taj naziv možda nije jedinstven, može se vremenom mijenjati, može sadržavati razmake i svaki Unicode znak, a može biti preveden na različite jezike. U skladu s prethodnim primjerom, zaslonski naziv može biti Prilagođeno polje s razmakom između riječi.
Budući da su zaslonski nazivi lakše razumljivi, aplikacije od gotovih gradivnih elemenata predložit će ih kao odabir, a neće predlagati logička imena. Iako logički nazivi nisu predloženi, i dalje ih se može upotrebljavati ako se upišu neizravno.
Na primjer, zamislite da ste dodali Prilagođeno polje u tablicu na usluzi Dataverse. Logički naziv dodijelit će vam sustav i možete ga mijenjati samo tijekom stvaranja polja. Rezultat bi bio sličan sljedećem:
Tijekom stvaranja reference na polje Računi predložit će se uporaba naziva „Prilagođeno polje”, budući da je to zaslonski naziv. Moraju se koristiti jednostruki navodnici jer ovaj naziv sadrži razmak:
Nakon odabira prijedloga, na traci formule prikazuje se 'Prilagođeno polje' i podatci se preuzimaju:
Iako nije predloženo, mogli bismo za ovo polje upotrijebiti i logički naziv. To će rezultirati preuzimanjem istih podataka. Jednostruki navodnici nisu potrebni jer ovaj naziv ne sadrži razmake ili posebne znakove:
Iza scene održava se mapiranje između zaslonskih naziva koji se vide u formulama i pozadinskih logičkih imena. Budući da se logički nazivi moraju upotrijebiti za interakciju s izvorom podataka, ovo se mapiranje upotrebljava za automatsko pretvaranje trenutačnog zaslonskog naziva u logički naziv i to je ono što se vidi u mrežnom prometu. Ovo se mapiranje koristi i za pretvaranje natrag u logičke nazive za prelazak na nove zaslonske nazive, na primjer, ako se zaslonski naziv promijeni ili autor uredi aplikaciju na drugom jeziku.
Napomena
Logički se nazivi ne prevode tijekom premještanja aplikacije između okruženja. Za sistemske tablicei nazive polja usluge Dataverse to ne bi trebao predstavljati problem jer su logički nazivi dosljedni u svim okruženjima. Ali svako prilagođeno polje, poput cra3a_customfield u ovom prethodnom primjeru ,može imati drugačiji prefiks okruženja (u ovom slučaju cra3a). Prednost imaju zaslonski nazivi jer se mogu prilagoditi zaslonskim imenima novog okruženja.
Rješavanje nesklada polja
Budući da zaslonski nazivi nisu jedinstveni, isti zaslonski naziv može se prikazati više puta u istoj tablici. Kada se to dogodi, logički naziv dodat će se na kraju zaslonskog naziva unutar zagrada za jedan od više sukobljenih naziva. Vodeći se gornjim primjerom, ako je postojalo drugo polje istog zaslonskog naziva Prilagođeno polje i logičkog imena cra3a_customfieldalt tada bi prijedlozi pokazali:
Nizovi s dvoznačnim nazivima dodaju se u drugim situacijama u kojima dolazi do sukoba imena, poput naziva tablice, odabira i drugih stavki usluge Dataverse.
Operator rješavanja nesklada
Neke funkcije stvaraju opsege zapisa za pristup poljima tablice tijekom obrade svakog zapisa, kao što su Filter, AddColumns i Sum. Nazivi polja dodani s pomoću opsega zapisa zamjenjuju iste nazive svugdje u aplikaciji. Kada se to dogodi, i dalje možete pristupiti vrijednostima izvan opsega zapisa s pomoću operatora za rješavanje nesklada @:
- Za pristup vrijednostima s ugniježđenih opsega zapisa upotrijebite operator @ s nazivom tablice kojom se koristi ovaj uzorak:
Tablica[@Naziv polja] - Za pristup globalnim vrijednostima, poput izvora podataka, zbirki i varijabli konteksta, upotrijebite uzorak [@ObjectName] (bez oznake tablice).
Dodatne informacija i primjere potražite u odjeljku Opsezi zapisa.