Događaj
Moćni Devs konferencija i Hack Together
12. feb 23 - 28. feb 23
Pridružite se online konferenciji i 2-nedeljnom hackathonu da istražite izgradnju moćnih rešenja sa Pover Platform.
Registrujte se odmahOvaj pregledač više nije podržan.
Nadogradite na Microsoft Edge biste iskoristili najnovije funkcije, bezbednosne ispravke i tehničku podršku.
Napomena
Microsoft Power Fx je novo ime za jezik formula za aplikacije sa podlogom. Ovi članci su u izradi dok izdvajamo jezik iz aplikacija na platnu, integrišemo ga sa drugim Microsoft Power Platform proizvodima i činimo ga dostupnim u vidu otvorenog koda. Počnite sa Microsoft Power Fx pregledom za uvod u jezik.
Operatori u Microsoft Power Fx su opisani u nastavku. Neki od ovih operatora zavise od jezika autora. Za više informacija, pogledajte globalne aplikacije.
Simbol | Tip | Sintaksa | Opis |
---|---|---|---|
. | Birač svojstava | Slider1.Value Color.Red |
Izdvaja svojstvo iz kontrole tabele ili nabrajanja. Za obrnutu kompatibilnost, možete da se koristi !. |
. jezik zavisi |
Znak za razdvajanje decimala | 1.23 | Znak za razdvajanje između celih i decimalnih delova broja. Znak zavisi od jezika. |
( ) | Zagrade | Filter (T, A < 10) (1 + 2) * 3 |
Nameće redosled prioriteta i grupiše podizraze u veći izraz |
+ | Aritmetički operatori | 1 + 2 | Sabiranje |
- | 2 - 1 | Oduzimanje i znak | |
* | 2 * 3 | Množenje | |
/ | 2 / 3 | Deljenje (takođe pogledajte funkciju Mod) | |
^ | 2 ^ 3 | Stepenovanje, ekvivalentno funkciji Power | |
% | 20% | Procenat (ekvivalentno sa „* 1/100“) | |
= | Operatori poređenja | Cena = 100 | Jednako je |
> | Cena > 100 | Veće od | |
>= | Cena > = 100 | Veće od ili jednako sa | |
< | Cena < 100 | Manje od | |
<= | Cena < = 100 | Manje od ili jednako sa | |
<> | Cena <> 100 | Nije jednako sa | |
& | Operator za povezivanje niski | "zdravo" & " " & "svet" | Sastavlja više niski tako da se prikazuju kontinuirano |
&& ili I | Logički operatori | Цena < 100 && Slider1.Vrednost = 20 ili Price < 100 And Slider1.Value = 20 |
Logička konjunkcija, ekvivalentna funkciji And |
|| ili Ili | Cena < 100 || SliderKSNUMKS.Value = KSNUMKS ili cena < KSNUMKS ili SliderKSNUMKS.Value = KSNUMKS | Logička disjunkcija, ekvivalentna funkciji Or | |
! ili Not | ! (Cena < 100) ili ne (Cena < 100) | Logička negacija, ekvivalentna funkciji Not | |
ekaktan | Operateri članstva | Galerija1.Izabrani ekactin SačuvanePredmeti | Pripadanje kolekciji ili tabeli |
ekaktan | "Vindovs" ekactin "Za prikaz prozora u operativnom sistemu Vindovs..." | Testiranje podniske (koje razlikuje velika i mala slova) | |
U | Galerija1.Izabrano u SavedItems | Pripadanje kolekciji ili tabeli | |
U | "The" u "Tastatura i monitor..." | Testiranje podniske (koje ne razlikuje velika i mala slova) | |
@ | Operator višeznačnosti | MyTable[@fieldname] | Razjašnjavanje polja |
@ | [@MyVariable] | Globalno razjašnjavanje | |
, [zavisi od jezika] |
Znak za razdvajanje liste | Ako(Ks < 10, "Nisko", "Dobro") { Ks: 12, I: 32 } [ 1, 2, 3 ] |
Razdvaja: Ovaj znak zavisi od jezika. |
; [zavisi od jezika] |
Povezivanje formula | Collect(T, A); Navigacija (S1, "") | Razdvaja pozive funkcija u svojstvima ponašanja. Operator lančanog povezivanja zavisi od jezika. |
Kao | Kao operater | AllCustomers kao kupac | Zamenjuje svojstva ThisItem i ThisRecord u funkcijama opsega galerija i zapisa. Kao što je korisno za pružanje boljeg, specifičnog imena i posebno je važno u ugniježđenim scenarijima. |
Bilten | Samo operater | Samo.Popunite | Pristup svojstvima trenutne kontrole |
Roditelj | Roditeljski operater | Roditelj.Popuni | Pristup svojstvima kontejnera kontrole |
Preuzmite | ThisItem operator | Srpskohrvatski / srpskohrvatski | Pristup poljima Galerije ili kontroli obrasca |
ThisRecord | ThisItem operator | ThisRecord.FirstName | Pristup celokupnom zapisu i pojedinim poljima zapisa unutar funkcija ForAll, Sum, With i drugih funkcija opsega zapisa. Može se zameniti operatorom As. |
Koristite operatore in i exactin da pronađete nisku u izvoru podataka, poput kolekcije ili uvezene tabele. Operator in identifikuje podudaranja bez obzira na veličinu slova, a operator exactin identifikuje podudaranja samo ako je veličina slova ista. Evo primera:
Kreirate ili uvozite kolekciju pod nazivom Inventar i prikazujete je u galeriji, kao što to opisuje prvi postupak u članku Prikaz slika i teksta u galeriji.
Podesite svojstvo Items galerije prema ovoj formuli:
Filter(Inventar, "E" u ProductName)
U galeriji su prikazani svi proizvodi osim „Callisto“, jer je naziv tog proizvoda jedini koji ne sadrži slovo koje ste naveli.
Promenite svojstvo Items galerije prema ovoj formuli:
Filter(Inventar, "E" ekactin ProductName)
Galerija prikazuje samo stavku „Europa“, jer samo njeno ime sadrži slovo koje ste naveli u veličini koju ste naveli.
Nekoliko kontrola i funkcija primenjuju formule na pojedinačne zapise tabele. Da biste upućivali na pojedinačni zapis u formuli, koristite jedno od sledećeg:
Operator | Odnosi se na | Opis |
---|---|---|
Preuzmite | Galerija kontrola Uređivanje kontrole obrasca Kontrola obrasca za prikaz |
Podrazumevano ime za trenutni zapis u kontroli Galerije ili obrasca. |
ThisRecord | Zasve, Filter, Sa, Sum i druge funkcije opsega zapisa | Podrazumevano ime za trenutni zapis u funkciji ForAll i drugim funkcijama opsega zapisa. |
Kaoime | Galerija kontrola Zasve, Filter, Sa, Sum i druge funkcije opsega zapisa |
Definiše ime za trenutni zapis, zamenjujući podrazumevano ThisItem ili ThisRecord. Koristite As kako bi se formule lakše razumele i razrešile nejasnoće prilikom unošenja. |
Na primer, u sledećoj kontroli Galerija, svojstvo Items je postavljeno na izvor podataka Employees (kao što je entitet Employees uključen u primer Northwind Traders):
Employees
Prva stavka u galeriji je predložak koji se replicira za svakog zaposlenog. U predlošku formula za sliku koristi operator ThisItem da upućuje na trenutnu stavku:
ThisItem.Picture
Isto tako, formula za ime takođe koristi operator ThisItem:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
ThisRecord se koristi u funkcijama koje imaju opseg zapisa. Na primer, možemo da koristimo funkciju Filter sa svojstvom Items da se prikažu samo imena koja počinju sa M:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord je opciono i podrazumeva se direktnim korišćenjem polja, na primer, u ovom slučaju, mogli smo napisati:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Iako opcionalno, koristeći ThisRecord može olakšati razumevanje formula i može biti potreban u dvosmislenim situacijama gde ime polja takođe može biti naziv relacije. ThisRecord je opciono, dok je ThisItem uvek potreban.
Koristite operator ThisRecord da referencirate čitav zapis funkcijama Patch, Collect i drugim funkcijama opsega zapisa. Na primer, sledeća formula postavlja status svih neaktivnih zaposlenih na „aktivan“:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Koristite operator As da imenujete zapis u galeriji ili funkciji opsega zapisa, zamenjujući podrazumevani operator ThisItem ili ThisRecord. Imenovanjem zapisa može vam biti lakše da razumete formule i može biti potrebno u ugnežđenim situacijama za pristup zapisima u drugim opsezima.
Na primer, možete da modifikujete svojstvo Items naše galerije da koristi As da identifikovali da radimo sa zaposlenim:
Employees As Employee
Formule za sliku i ime podešavaju se tako da koriste ovo ime za trenutni zapis:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
Kao što se takođe može koristiti sa funkcijama opsega zapisa da zameni podrazumevano ime ThisRecord. To možemo primeniti na naš prethodni primer da razjasnimo zapis sa kojim radimo:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees As Employee,
Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )
Prilikom ugnežđavanja galerija i funkcija opsega zapisa, operatori ThisItem i ThisRecord uvek se odnose na sasvim unutrašnji opseg, ostavljajući zapise u spoljnim opsezima nedostupnim. Koristite As da biste sve opsege zapisa učinili dostupnim tako što ćete svakom dati jedinstveno ime.
Na primer, ova formula pravi uzorak šahovske table kao tekstualnu nisku umetanjem dve funkcije 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
)
Podešavanje svojstva Text kontrole Oznaka na ovu formulu prikazuje:
Hajde da vidimo šta se ovde dešava:
Sličan primer je moguć i sa ugnežđenim kontrolama Galerija umesto funkcija ForAll. Krenimo od vertikalne galerije za Rank. Ova kontrola galerije će imati formulu Items:
Sequence(8) as Rank
U okviru ove galerije postavićemo horizontalnu galeriju za File, koja će se replicirati za svaki Rank, sa svojstvom Items:
Sequence(8) as File
I na kraju, u ovu galeriju dodaćemo kontrolu Oznaka koja će se replicirati za svaki File i svaki Rank. Promenićemo veličinu tako da popunimo ceo prostor i iskoristimo svojstvo Fill da se obezbedimo boju ovom formulom:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Postoje tri načina da u formuli referencirate kontrolu i njena svojstva:
Metod | Opis |
---|---|
Po nazivu kontrole | Svaka kontrola se može pozivati po nazivu bilo gde u aplikaciji. Na primer, Label1.Fill se odnosi na svojstvo ispunjavanja kontrole čiji naziv je Label1. |
Samo operater | Često je prikladno uputiti neko drugo svojstvo iste kontrole prilikom pisanja formule. Umesto da upotrebljavate apsolutnu referencu po imenu, lakše je i pokretnije da koristite relativnu referencu na sebe. Operator Self omogućava lak pristup svojstvima trenutne kontrole. Na primer, Self.Fill se odnosi na boju popune trenutne kontrole. |
Roditeljski operater | Neke kontrole sadrže i druge kontrole, poput kontrola Screen i Gallery. Kontrola koja sadrži druge kontrole u sebi naziva se nadređena. Poput operatora Self, operator Parent pruža jednostavnu relativnu referencu na kontrolu kontejnera. Na primer, Parent.Fill se odnosi na svojstvo popune kontrole koja je kontejner za trenutnu kontrolu. |
Self i Parent su operatori, a ne svojstva na samim kontrolama. Reference Parent.Parent, Self.Parent ili Parent.Self nisu podržane.
Nazivi promenljivih, izvora podataka, kolona i drugih objekata mogu sadržati bilo koji Unikod.
Koristite jednostruke navodnike oko naziva koju sadrže razmak ili drugi posebni znak.
Koristite dva jednostruka navodnika zajedno da biste predstavili jedan jednostruki navodnik u nazivu. Nazivi koji ne sadrže posebne znakove ne zahtevaju jednostruke navodnike.
Evo nekih primera naziva kolona na koje možete naići u tabeli i način na koji su predstavljeni u formuli:
Naziv kolone u bazi podataka | Referenca kolone u formuli |
---|---|
SimpleName | SimpleName |
NameWith123Numbers | NameWith123Numbers |
Naziv sa razmacima | 'Name with spaces' |
Naziv sa "dvostrukim" navodnicima | 'Name with "double" quotes' |
Naziv sa 'jednostrukim' navodnicima | 'Name with ''single'' quotes' |
Naziv sa znakom @ | 'Name with an @ at sign' |
Dvostruki navodnici se koriste da označite tekstualne niske.
Neki izvori podataka kao što su SharePoint i Microsoft Dataverse imaju dva različita naziva koja se odnose na istu tabelu ili kolonu podataka:
Logičko ime - Ime koje je garantovano jedinstveno, ne menja se nakon kreiranja, obično ne dozvoljava razmake ili druge specijalne znakove i nije lokalizovano na različite jezike. Kao rezultat, ime može biti kriptično. Te nazive koriste profesionalni programeri. Na primer, cra3a_customfield. Ovaj naziv se takođe može nazvati ime šeme ili samo ime.
ime za prikaz - Ime koje je prilagođeno korisniku i namenjeno da ga vide krajnji korisnici. Taj naziv možda nije jedinstven, može se vremenom menjati, može sadržavati razmake i bilo koji Unikod znak i može biti lokalizovan na različite jezike. U skladu sa gornjim primerom, ime za prikaz može biti Prilagođeno polje sa razmakom između reči.
Budući da su imena za prikaz lakše razumljiva, Power Fx će ih predložiti kao izbor, a ne kao logička imena. Iako logička imena nisu predložena, ipak se mogu koristiti ako ih upišete indirektno.
Na primer, zamislite da ste dodali Prilagođeno polje entitetu u usluzi Dataverse. Sistem će vam dodeliti logičko ime koje možete izmeniti samo prilikom kreiranja polja. Rezultat bi izgledao nalik ovome:
Kada kreirate referencu na polje Poslovni kontakti, koristiće se predlog 'Prilagođeno polje', pošto je to ime za prikaz. Moraju se koristiti jednostruki navodnici, jer ovo ime ima razmak:
Nakon odabira predloga, na traci za formule prikazuje se 'Prilagođeno polje' i podaci se preuzimaju:
Iako nije predloženo, mogli bismo koristiti i logičko ime za ovo polje. To će rezultirati preuzimanjem istih podataka. Jednostruki navodnici nisu obavezni, jer ovo ime ne sadrži razmake niti posebne znakove:
Iza kulisa, održava se mapiranje između imena za prikaz koja se vide u formulama i osnovnih logičkih imena. Pošto se logička imena moraju koristiti za interakciju izvorom podataka, ovo mapiranje se koristi za automatsko konvertovanje iz trenutnog imena za prikaz u logičko ime i to je ono što se vidi u mrežnom saobraćaju. Ovo mapiranje se takođe koristi za povratno konvertovanje u logička imena koja se prebacuju u nova imena za prikaz, na primer, ako se ime za prikaz promeni ili autor na drugom jeziku uređuje aplikaciju.
Napomena
Logička imena se ne prevode kada se aplikacija premešta između okruženja. Za Dataverse sistemski entitet i nazive polja to ne bi trebalo da predstavlja problem, jer su logička imena konzistentna u okruženjima. Ali bilo koja prilagođena polja, poput cra3a_customfield u prethodnom primeru, može imati drugačiji prefiks okruženja (cra3a u ovom slučaju). Poželjnija su imena za prikaz, jer se mogu podudariti sa imenima za prikaz u novom okruženju.
Budući da imena za prikaz nisu jedinstvena, isto ime za prikaz može se pojaviti više puta u istom entitetu. Kada se to desi, logičko ime će biti dodato na kraj ime za prikaz u zagradama za jedno od više konfliktnih imena. Na osnovu gornjeg primera, ako je postojalo drugo polje sa istim imenom za prikaz Prilagođeno polje sa logičkim imenom cra3a_customfieldalt, tada bi predlozi pokazali:
Niske sa razjašnjenim nazivima dodaju se u drugim situacijama u kojima se javljaju neusaglašenosti naziva, poput imena entiteta, skupa opcija i drugih Dataverse stavki.
Neke funkcije kreiraju opsege zapisa za pristupanje poljima tabele tokom obrade svakog zapisa, kao što su Filter, AddColumns i Sum. Nazivi polja koji su dodati s opsegom zapisa zameniće ista imena na drugim mestima u aplikaciji. Kad se to dogodi, i dalje možete pristupati vrednostima izvan opsega zapisa pomoću operatora za razjašnjavanje @:
Za više informacija i primera, pogledajte opsege zapisa.
Događaj
Moćni Devs konferencija i Hack Together
12. feb 23 - 28. feb 23
Pridružite se online konferenciji i 2-nedeljnom hackathonu da istražite izgradnju moćnih rešenja sa Pover Platform.
Registrujte se odmah