Sdílet prostřednictvím


Operátory a identifikátory

Poznámka:

Microsoft Power Fx je nový název jazyka vzorců pro aplikace plátna. Práce na těchto článcích stále probíhá, jak extrahujeme jazyk z aplikací plátna, integrujeme jej s ostatními produkty Microsoft Power Platform a zpřístupňujeme jako open source. Začněte v části Přehled jazyka Microsoft Power Fx obsahující úvod do jazyka.

Operátory v Microsoft Power Fx jsou popsány níže. Některé z těchto operátorů jsou závislé na jazyce autora. Další informace najdete v tématu Globální aplikace.

Symbol Typ Syntaxe Popis
. Výběr vlastnosti Posuvník1.Hodnota
Color.Red
Extrahuje vlastnost z tabulky, ovládacího prvku nebo výčtu. Pro zpětnou kompatibilitu lze použít také !.
.
jazykově závislý
Oddělovač desetinných míst 1.23 Oddělovač mezi celou a zlomkovou částí čísla. Znak závisí na jazyku.
( ) Závorky Filtr(T, A < 10)

(1 + 2) * 3
Vynucuje přednosti a seskupuje dílčí výrazy do větších výrazů.
+ Aritmetické operátory 1 + 2 Součet
-   2:1 Odčítání a znaménko
*   2 * 3 Násobení
/   2/3 Dělení (viz také funkce Mod)
^   2 ^ 3 Umocnění, odpovídá funkci Power
%   20 % Procento (odpovídá "* 1/100")
= Operátory porovnání Cena = 100 Rovno
>   Cena > 100 Je větší než
>=   Cena >= 100 Větší než nebo rovno
<   Cena < 100 Je menší než
<=   Cena <= 100 Menší než nebo rovno
<>   Cena <> 100 Nikoli rovno
& Operátor spojení řetězců "ahoj" & " " & "svět" Zobrazí více řetězců tak, aby vypadaly souvisle.
&& nebo A Logické operátory Cena < 100 && Posuvník 1. Hodnota = 20
nebo Cena < 100 And Slider1.Value = 20
Logická konjunkce, odpovídá funkci And
|| nebo Nebo   Cena < 100 || Posuvník1.Hodnota = 20 nebo Cena < 100 Nebo Posuvník1.Hodnota = 20 Logická disjunkce, odpovídá funkci Or
. nebo Not   !(Cena < 100) nebo Ne (Cena < 100) Logická negace, odpovídá funkci Not
exaktní Provozovatelé členství Galerie 1. Vybráno přesně v SavedItems Patřící do kolekce nebo tabulky
exaktní   "Windows" přesně v "Zobrazení oken v operačním systému Windows..." Test podřetězců (rozlišování velkých a malých písmen)
v   Galerie 1. Vybráno v SavedItems Patřící do kolekce nebo tabulky
v   "The" v "Klávesnici a monitor..." Test podřetězců (rozlišování velkých a malých písmen)
@ Disambiguační operátor MyTable[@fieldname] Mnohoznačnost polí
@   [@Moje proměnná] Globální mnohoznačnost
,
[zavislý na jazyku]
Oddělovač seznamu If(X < 10, "Nízký", "Dobrý")
{ X: 12, Y: 32 }
[1, 2, 3]
Odděluje: Tento znak závisí na jazyku.
;
[zavislý na jazyku]
Řetězení vzorců Collect(T, A); Navigovat (S1, "") Volání funkcí můžete oddělit ve vlastnostech chování. Operátor řetězení závisí na jazyku.
Jak Jako operátor AllCustomers jako zákazník Přepíše ThisItem a ThisRecord v galeriích a zaznamená funkce rozsahu. Jak je užitečný pro poskytnutí lepšího, konkrétního názvu a je zvláště důležitý ve vnořených scénářích.
Vlastní provozovatel Self.Fill Poskytuje přístup k vlastnostem aktuálního ovládacího prvku
nadřazený nadřazený operátor Parent.Fill Přístup k vlastnostem kontejneru ovládacího prvku
TatoPoložka Operátor ThisItem ThisItem.FirstName Přístup k polím ovládacího prvku Galerie nebo Formulář
Tento záznam Operátor ThisItem ThisRecord.FirstName Přístup k úplnému záznamu a jednotlivým polím záznamu uvnitř funkce ForAll, Sum, With a dalších funkcí rozsahu záznamu. Lze přepsat pomocí operátoru As.

operátory in a exactin

Operátory in a exactin použijte k vyhledání řetězce ve zdroji dat, jako je například kolekce nebo importovaná tabulka. Operátor in identifikuje shody bez ohledu na malá a velká písmena a operátor exactin identifikuje pouze takové shody, které mají stejná velká a malá písmena. Tady je příklad:

  1. Naimportujte nebo vytvořte kolekci s názvem Inventory a zobrazte ji v galerii podle popisu v prvním postupu v článku o zobrazení obrázků a textů v galerii.

  2. Nastavte vlastnost Items galerie na tento vzorec:
    Filtr (Inventář, "E" v ProductName)

    Galerie zobrazí všechny produkty, kromě produktu Callisto, protože název tohoto produktu jako jediný neobsahuje vámi zadané písmeno.

  3. Změňte vlastnost Items galerie na tento vzorec:
    Filtr (inventář, "E" přesně v názvu produktu)

    Galerie zobrazí pouze produkt Europa, protože jako jediný obsahuje vámi zadané písmeno velké E.

Operátory ThisItem, ThisRecord a As

Několik ovládacích prvků a funkcí aplikuje vzorce na jednotlivé záznamy tabulky. Chcete-li odkazovat na jednotlivý záznam ve vzorci, použijte jednu z následujících možností:

Operátor Platí pro Popis
TatoPoložka Galerie řízení
Upravit formulář řízení
Zobrazit formulář řízení
Výchozí název aktuálního záznamu v ovládacím prvku Gallery nebo formulář.
Tento Záznam ForAll, Filtr, S, Součet a další rozsah záznamu funkcí Výchozí název aktuálního záznamu ve funkci ForAll a ostatních funkcích rozsahu záznamu.
Jak jméno Galerie řízení
Pro všechny, Filtr, S, Součet a další funkce rozsahu záznamu
Definuje název pro aktuální záznam, čímž nahrazuje výchozí ThisItem nebo ThisRecord. Funkci As použijte pro usnadnění porozumění vzorcům a vyřešení dvojznačnosti při vnoření.

Operátor ThisItem

V následujícím ovládacím prvku Gallerie je například vlastnost Items nastavena na zdroj dat Zaměstnanci (jako je entita Zaměstnance obsažená v ukázce Northwind Traders):

Employees

Zaměstnanci v galerii.

První položka v galerii je šablona, která je replikována pro každého zaměstnance. Vzorec pro obrázek v šabloně používá ThisItem k odkazování na aktuální položku:

ThisItem.Picture

Vzorec pro obrázek zaměstnance.

Podobně používá vzorec pro název také ThisItem:

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

Vzorec pro křestní jméno a příjmení zaměstnance.

Operátor ThisRecord

ThisRecord se používá ve funkcích, které mají rozsah záznamu. Můžeme například použít funkci Filter s vlastností Items galerie, aby se zobrazila pouze křestní jména začínající na M:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

Filtrování zaměstnanců podle jména pomocí ThisRecord.

ThisRecord je volitelný a předpokládá se přímým použitím polí, například v tomto případě bychom mohli napsat:

Filter( Employees, StartsWith( 'First Name', "M" ) )

I když je použití funkce ThisRecord volitelné, může usnadnit porozumění vzorců a může být potřeba v nejednoznačných situacích, kdy název pole může být také název vztahu. ThisRecord je volitelný, zatímco ThisItem je vždy povinný.

Funkci ThisRecord použijte k odkazování na celý záznam s funkcemi rozsahu Patch, Collect a dalšími funkcemi rozsahu záznamu. Například následující vzorec nastaví stav pro všechny neaktivní zaměstnance na aktivní:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees, 
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

Operátor As

Použijte operátor As k pojmenování záznamu v galerii nebo funkci rozsahu záznamu, čímž se přepíše výchozí ThisItem nebo ThisRecord. Pojmenování záznamu může usnadnit pochopení vašich vzorců a ve vnořených situacích může být vyžadováno pro přístup k záznamům v jiných oblastech.

Například můžete upravit vlastnost Items naší galerie k použití As pro určení, že pracujeme se zaměstnancem:

Employees As Employee

Galerie zaměstnanců, použití operátoru As.

Vzorce pro obrázek a jméno jsou upraveny tak, aby používaly tento název pro aktuální záznam:

Employee.Picture

Obrázek zaměstnance používajícího jméno zaměstnance nastavené pomocí operátoru As.

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

Obrázek jména a příjmení zaměstnance používajícího jméno zaměstnance nastavené pomocí operátoru As.

As lze také použít s funkcemi rozsahu záznamů k nahrazení výchozího názvu ThisRecord. Můžeme to použít pro náš předchozí příklad k objasnění záznamu, se kterým pracujeme:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee, 
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

Při vnoření galerií a funkcí rozsahu záznamu ThisItem a ThisRecord vždy odkazuje na nejvnitřnější rozsah, takže záznamy ve vnějším rozsahu nejsou k dispozici. Použití As ke zpřístupnění všech rozsahů záznamů tím, že každému z nich přidáte jedinečný název.

Tento vzorec například vytvoří šachovnici jako textový řetězec vnořením dvou funkcí 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 
)

Nastavení vlastnosti Text ovládacího prvku Label na tento vzorec:

Text šachovnice zobrazený v ovládacím prvku popisek.

Pojďme se podívat, co se zde děje:

  • Začneme iterací nepojmenované tabulky 8 číslovaných záznamů z funkce Sequence. Tato smyčka je pro každou řadu desky, která se běžně označuje jako Pořadí, takže ji takto nazveme.
  • Pro každý řádek iterujeme další nepojmenovanou tabulku 8 sloupců a dáme jí společný název Soubor.
  • Pokud je Rank.Value + File.Value liché číslo, druhá mocnina vrátí X, jinak tečku. Tato část vzorce odkazuje na obě smyčky ForAll, což je možné díky operátoru As.
  • Concat se používá dvakrát, nejprve k sestavení sloupců a poté řádků, přičemž a Char(10) vytvoří nový řádek.

Podobný příklad je možný s vnořenými ovládacími prvky Gallery namísto funkcí ForAll. Začněme vertikální galerií pro Pořadí. Tento ovládací prvek galerie bude mít vzorec Položky, který bude vypadat takto:

Sequence(8) as Rank

Obrázek vnější galerie, která poskytuje iteraci Pořadí.

V této galerii umístíme horizontální galerii pro Soubor, která bude replikována pro každé Pořadí, s vlastností Items:

Sequence(8) as File

Obrázek vnitřní galerie, která poskytuje iteraci Soubor.

A konečně v této galerii přidáme ovládací prvek Label, který bude replikován pro každý Soubor a každé Pořadí. Změníme velikost tak, aby vyplnila celý prostor a použila vlastnost Fill pro poskytnutí barvy s tímto vzorcem:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

Ovládací prvek Popisek ve dvou galeriích, které poskytují střídavé barvy pro šachovnici.

Operátory Self a Parent

Existují tři způsoby, jak odkazovat na ovládací prvek a jeho vlastnosti v rámci vzorce:

Způsob Popis
Podle názvu ovládacího prvku Kdekoli v aplikaci můžete odkazovat na jakýkoli ovládací prvek prostřednictvím jeho názvu.

Například Label1.Fill odkazuje na vlastnost výplně ovládacího prvku, jehož název je Label1.
Vlastní provozovatel Při psaní vzorce je často vhodné odkazovat na jinou vlastnost stejného ovládacího prvku. Namísto použití absolutního odkazu na název je jednodušší a přenosnější použít relativní odkaz na jeden prvek Self. Operátor Self poskytuje přístup k vlastnostem aktuálního ovládacího prvku.

Například Self.Fill odkazuje na barvu výplně aktuálního ovládacího prvku.
nadřazený operátor Některé ovládací prvky jsou hostiteli dalších ovládacích prvků, například Screen a Gallery. Hostující ovládací prvek nazýváme nadřazený prvek pro prvky, které obsahuje.. Stejně jako operátor Self i operátor Parent poskytuje snadný relativní odkaz na ovládací prvek kontejneru.

Například Parent.Fill odkazuje na vlastnost výplně ovládacího prvku, který je kontejnerem pro aktuální ovládací prvek.

Self a nadřazený jsou operátory a nikoli vlastnosti samotných ovládacích prvků. Při odkazování na Parent.Parent není Self.Parent nebo Parent.Self podporován.

Názvy identifikátorů

Názvy proměnných, zdroje dat, sloupce a další objekty mohou obsahovat libovolný Unicode.

Použijte jednoduché uvozovky kolem názvu, který obsahuje mezeru nebo jiný speciální znak.
Dvě jednoduché uvozovky představují jednu jednoduchou uvozovku v názvu. Jména, která neobsahují speciální znaky, nevyžadují jednoduché uvozovky.

Zde je několik příkladů názvů sloupců, s nimiž se můžete v tabulce setkat, a jak jsou reprezentovány ve vzorci:

Název sloupce v databázi Odkaz na sloupec ve vzorci
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
Název s mezerami 'Name with spaces'
Název s dvojitými uvozovkami 'Name with "double" quotes'
Název s jednoduchými uvozovkami 'Name with ''single'' quotes'
Název se znakem @ at 'Name with an @ at sign'

Dvojité uvozovky se používají k označení textového řetězce.

Zobrazovaná jména a logická jména

Některé zdroje dat, například SharePoint a Microsoft Dataverse mají dva různé názvy, které odkazují na stejnou tabulku nebo sloupec dat:

  • Logické jméno - Název, který je zaručeně jedinečný, po vytvoření se nemění, obvykle nepovoluje mezery ani jiné speciální znaky a není lokalizován do různých jazyků. V důsledku toho může být název nesrozumitelný. Tyto názvy používají profesionální vývojáři. Například cra3a_customfield. Tento název může být také označován jako název schématu nebo prostě název.

  • zobrazované jméno - Název, který je uživatelsky přívětivý a je určen pro koncové uživatele. Tento název nemusí být jedinečný, může se časem měnit, může obsahovat mezery a jakýkoli znak Unicode a může být lokalizován do různých jazyků. V souladu s výše uvedeným příkladem může být zobrazované jméno Vlastní pole s mezerou mezi slovy.

Protože zobrazované názvy jsou srozumitelnější, Power Fx je navrhne k výběru místo logických názvů. Ačkoli logická jména nejsou navrhována, mohou být stále použita, pokud jsou zadána nepřímo.

Představte si například, že jste přidali Vlastní pole k entitě v Dataverse. Systém vám přiřadí logické jméno, které můžete upravit pouze při vytváření pole. Výsledek by vypadal podobně jako:

Obchodní jednotka s vlastním polem, která zobrazuje zobrazované jméno z „Vlastního pole“ a logický název „cr5e3_customfield.“

Při vytváření odkazu na pole Účtů bude návrh použít Vlastní pole, protože se jedná o zobrazované jméno. Je nutné použít jednoduché uvozovky, protože tento název obsahuje mezeru:

Lišta vzorců Studio zobrazující návrhy názvů polí účtů se zvýrazněným zobrazované jméno 'Custom Field'.

Po výběru návrhu se na liště vzorců zobrazí „Vlastní pole“ a data se načtou:

Lišta vzorců Studio zobrazující použití zobrazovaného jména 'Custom Field' pro dané pole.

Ačkoli to není navrhováno, mohli bychom také použít logické jméno pro toto pole. To povede k načtení stejných dat. Nejsou vyžadovány žádné uvozovky, protože tento název neobsahuje mezery ani speciální znaky:

Lišta vzorců Studio zobrazující použití logického jména cr5e3_customfield pro dané pole.

Za scénami je udržováno mapování mezi zobrazovanými jmény ve vzorcích a základními logickými jmény. Protože k interakci se zdroji dat musí být použita logická jména, používá se toto mapování k automatickému převodu z aktuálního zobrazovaného jména na logické jméno a to je vidět v síťovém provozu. Toto mapování se také používá k převodu zpět na logická jména a přepnutí na nové zobrazované názvy, například pokud se zobrazované jméno změní nebo tvůrce v jiném jazyce upraví aplikaci.

Poznámka:

Při přesunu aplikace mezi prostředími nejsou logická jména přeložena. Pro systémovou entitu a názvy polí Dataverse by to neměl být problém, protože logická jména jsou v různých prostředích konzistentní. Ale jakákoli vlastní pole, například cra3a_customfield v tomto příkladu výše může mít jinou předponu prostředí (cra3a v tomto případě). Zobrazované názvy jsou upřednostňovány, protože mohou být porovnány se zobrazovanými názvy v novém prostředí.

Mnohoznačnost názvu

Protože zobrazované názvy nejsou jedinečné, může se stejný zobrazované jméno objevit ve stejné entitě vícekrát. Pokud k tomu dojde, bude logické jméno přidáno na konec zobrazovaného jména v závorce pro jedno z více konfliktních jmen. Na základě výše uvedeného příkladu, pokud existuje druhé pole se stejným zobrazovaným jménem Vlastního pole s logickým názvem cra3a_customfieldalt, návrh pak ukáže:

Lišta vzorců aplikace Studio zobrazující použití logického názvu cr5e3_customfieldalt k odstranění mnohoznačnosti dvou verzí

Řetězce pro odstranění mnohoznačnosti názvů jsou přidány v jiných situacích, ve kterých dochází ke konfliktům jmen, jako jsou názvy entit, sady možností a jiných položek Dataverse.

Operátor mnohoznačnosti

Některé funkce vytvářejí při zpracovávání jednotlivých záznamů obory záznamů pro přístup k polím tabulky. Jedná se například o Filter, AddColumns a Sum. Názvy polí přidané prostřednictvím oboru záznamů přepíší stejné názvy v aplikaci pocházející odjinud. Pokud k tomu dojde, můžete k hodnotám mimo obor záznamů nadále přistupovat pomocí operátoru mnohoznačnosti @:

  • Pro přístup k hodnotám z vnořených oborů záznamů použijte operátor @ s názvem tabulky, se kterou se pracuje, a to podle tohoto vzoru:
    Tabulka[@Název pole]
  • Pro přístup ke globálním hodnotám, jako jsou zdroje dat, kolekce a kontextové proměnné, použijte vzor [@NázevObjektu] (bez označení tabulky).

Další informace a příklady najdete v diskuzi o oborech záznamů.