Deli putem


Operatori i identifikatori

Belešku

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 !.
.
zavisi od jezika
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 Price = 100 Jednako je
>   Price > 100 Veće od
>=   Price >= 100 Veće od ili jednako sa
<   Price < 100 Manje od
<=   Price <= 100 Manje od ili jednako sa
<>   Price <> 100 Nije jednako sa
& Operator za povezivanje niski "hello" & " " & "world" Sastavlja više niski tako da se prikazuju kontinuirano
&& ili I Logički operatori Cena < 100 && Slider1.Value = 20
ili Price < 100 And Slider1.Value = 20
Logička konjunkcija, ekvivalentna funkciji And
|| ili Or   Price < 100 || Slider1.Value = 20 ili Price < 100 Or Slider1.Value = 20 Logička disjunkcija, ekvivalentna funkciji Or
! ili Not   !(Price < 100) ili Not (Price < 100) Logička negacija, ekvivalentna funkciji Not
exactin Operatori članstva Gallery1.Selected exactin SavedItems Pripadanje kolekciji ili tabeli
exactin   Windows exactin „Prikaz prozora u operativnom sistemu Windows...“ Testiranje podniske (koje razlikuje velika i mala slova)
u   Gallery1.Selected in SavedItems Pripadanje kolekciji ili tabeli
u   „Moja“ u „Moja tastatura i monitor...“ Testiranje podniske (koje ne razlikuje velika i mala slova)
@ Razjašnjavanje operatora MyTable[@fieldname] Razjašnjavanje polja
@   [@MyVariable] Globalno razjašnjavanje
,
[zavisi od jezika]
Znak za razdvajanje liste If( X < 10, "nisko", "dobro" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Razdvaja: Ovaj znak zavisi od jezika.
;
[zavisi od jezika]
Povezivanje formula Collect(T, A); Navigate(S1, "") Razdvaja pozive funkcija u svojstvima ponašanja. Operator lančanog povezivanja zavisi od jezika.
Kao Operator As AllCustomers As Customer Zamenjuje svojstva ThisItem i ThisRecord u funkcijama opsega galerija i zapisa. As je od koristi za pružanje boljeg, određenog naziva i posebno je važan u ugnežđenim scenarijima.
Sopstveni Operator Self Self.Fill Pristup svojstvima trenutne kontrole
Nadređeno Nadređeni operator Parent.Fill Pristup svojstvima kontejnera kontrole
ThisItem Operator ThisItem ThisItem.FirstName Pristup poljima Galerije ili kontroli obrasca
ThisRecord Operator ThisItem 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.

Operatori „in“ i „exactin“

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:

  1. 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.

  2. Podesite svojstvo Items galerije prema ovoj formuli:
    Filter(Inventory, "E" in ProductName)

    U galeriji su prikazani svi proizvodi osim „Callisto“, jer je naziv tog proizvoda jedini koji ne sadrži slovo koje ste naveli.

  3. Promenite svojstvo Items galerije prema ovoj formuli:
    Filter(Inventory, "E" exactin ProductName)

    Galerija prikazuje samo stavku „Europa“, jer samo njeno ime sadrži slovo koje ste naveli u veličini koju ste naveli.

Operatori ThisItem, ThisRecord i As

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
ThisItem Kontrola Galerija
KontrolaUređivanje obrasca
Kontrola Obrazac za prikaz
Podrazumevano ime za trenutni zapis u kontroli Galerije ili obrasca.
ThisRecord ForAll, Filter, With, Sum i ostale funkcije opsega zapisa Podrazumevano ime za trenutni zapis u funkciji ForAll i drugim funkcijama opsega zapisa.
Asime Kontrola Galerija
ForAll, Filter, With, Sum i ostale 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.

Operator ThisItem

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

Zaposleni prikazani u galeriji.

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

Formula za sliku zaposlenog.

Isto tako, formula za ime takođe koristi operator ThisItem:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

Formula za prvu i prezime zaposlenog.

Operator ThisRecord

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" ) )

Filtriranje zaposlenih na osnovu imena pomoću ovog programaRecord.

ThisRecord je opcionalan i podrazumeva se direktno korišćenjem polja, na primer, u ovom slučaju, mogli bismo 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. Operator ThisRecord je opcionalan, dok je ThisItem uvek obavezan.

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 } ) ) )

Operator As

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

Galerija zaposlenih, koristeći operator

Formule za sliku i ime podešavaju se tako da koriste ovo ime za trenutni zapis:

Employee.Picture

Slika zaposlenog koji koristi skup imena zaposlenog kod operatora

Employee.'First Name' & " " & Employee.'Last Name'

Prvo prezime zaposlenog koji koristi ime zaposlenog postavljeno kod operatora

As takođe može da se koristi sa funkcijama opsega zapisa za zamenu podrazumevanog imena 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:

Tekst šahovske table prikazan u kontroli oznake.

Hajde da vidimo šta se ovde dešava:

  • Započinjemo ponavljanjem neimenovane tabele od 8 numerisanih zapisa iz funkcije Sequence. Ova petlja je za svaki red table, što se obično naziva Rank i zato mu dajemo to ime.
  • Za svaki red ponavljamo još jednu neimenovanu tabelu od 8 kolona i dajemo zajedničko ime File.
  • Ako je Rank.Value + File.Value neparan broj, kvadrat dobija X, inače dobija tačku. Ovaj deo formule se odnosi na obe petlje ForAll, što je omogućeno operatorom As.
  • Concat se koristi dva puta, prvo za sastavljanje kolona, a zatim redova, sa ubačenim znakom Char(10) da kreira novi red.

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

Ilustracija galerije koja obezbeđuje iteraciju ranga.

U okviru ove galerije postavićemo horizontalnu galeriju za File, koja će se replicirati za svaki Rank, sa svojstvom Items:

Sequence(8) as File

Ilustracija unutrašnje galerije koja obezbeđuje iteraciju datoteke.

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 )

Kontrola nalepnica unutar dve galerije koja obezbeđuje naizmenične boje za šahovsku tablu.

Opratori Self i Parent

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.
Operator Self Č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.
Operator Parent 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 identifikatora

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.

Imena za prikaz i logička imena

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 – Naziv za koji je zagarantovano da je jedinstven, ne menja se nakon kreiranja, obično ne dozvoljava razmake ili druge posebne znakove i nije lokalizovan 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 – Naziv koji je lak za korisnika i koji je zamišljen tako 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:

Dodat je entitet naloga sa prilagođenim poljem koji prikazuje ime za prikaz

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:

Polje za formulu studija koje prikazuje predloge za imena polja naloga sa ime za prikaz

Nakon odabira predloga, na traci za formule prikazuje se 'Prilagođeno polje' i podaci se preuzimaju:

Polje za formulu studija koje prikazuje upotrebu ime za prikaz

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:

Polje za formulu studija koje prikazuje upotrebu logičkog cr5e3_customfield za polje.

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.

Belešku

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.

Razjašnjavanje naziva

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 dogodi, logičko ime će biti dodato na kraj ime za prikaz zagradama za jedno od neusaglašenih 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:

Studijsko polje za formulu koje prikazuje upotrebu logičkog imena cr5e3_customfieldalt da bi se onemogućile dve verzije

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.

Razjašnjavanje operatora

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 @:

  • Da biste pristupili vrednostima iz ugnežđenih opsega zapisa, koristite operator @ sa nazivom tabele kojom upravljate kada koristite ovaj obrazac:
    Table[@FieldName]
  • Da biste pristupili globalnim vrednostima, kao što su izvori podataka, kolekcije i promenljive konteksta, koristite obrazac [@ObjectName] (bez oznake tabele).

Za više informacija i primera, pogledajte opsege zapisa.