Operátory a identifikátory v Power Apps

Platí pro: aplikace plátna modelem řízené aplikace

Některé z těchto operátorů jsou závislé na jazyku autora. Další informace o podpoře jazyků v aplikacích plátna najdete v článku Globální aplikace.

Symbol Typ Příklad Popis
'...' Identifikátor 'Název účtu' Identifikátory, které obsahují speciální znaky, včetně mezer, jsou uzavřeny do jednoduchých uvozovek
"..." Textový řetězec "Ahoj světe" Textové řetězce jsou uzavřeny do dvojitých uvozovek
$"..." Interpolace řetězců $"Vážený {FirstName}," Vzorce vložené do textového řetězce
. Výběr vlastnosti Slider1.Value
Color.Red
Acceleration.X
Extrahuje vlastnost z tabulky, ovládacího prvku, signálu nebo výčtu. Pro zpětnou kompatibilitu lze použít také !.
.
[zavislý na jazyku]
Oddělovač desetinných míst 1.23 Oddělovač mezi celou a zlomkovou částí čísla. Znak závisí na jazyku.
( ) Závorky Filter(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ů "hello" & " " & "world" Zobrazí více řetězců tak, aby vypadaly souvisle.
&& or And Logické operátory Price < 100 && Slider1.Value = 20
nebo Cena < 100 And Slider1.Value = 20
Logická konjunkce, odpovídá funkci And
|| nebo Or   Price < 100 || Slider1.Value = 20 nebo Price < 100 Or Slider1.Value = 20 Logická disjunkce, odpovídá funkci Or
. nebo Not   !(Cena < 100) nebo Not (Cena < 100) Logická negace, odpovídá funkci Not
exactin Operátory členství Gallery1.Selected exactin SavedItems Patřící do kolekce nebo tabulky
exactin   „Windows“ exactin „Pokud chcete zobrazit okno v operačním systému Windows…" Test podřetězců (rozlišování velkých a malých písmen)
v   Gallery1.Selected in SavedItems Patřící do kolekce nebo tabulky
v   „The“ in „The keyboard and the monitor...“ Test podřetězců (rozlišování velkých a malých písmen)
@ Operátor mnohoznačnosti MyTable[@fieldname] Mnohoznačnost polí
@   [@MyVariable] 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); Navigate(S1, "") Volání funkcí můžete oddělit ve vlastnostech chování. Operátor řetězení závisí na jazyku.
Jako Operátor As AllCustomers As Customer Přepíše ThisItem a ThisRecord v galeriích a zaznamená funkce rozsahu. Operátor As je užitečný pro poskytnutí lepšího, konkrétnějšího jména a je zvláště důležitý ve vnořených scénářích.
Vlastní Operátor Self Self.Fill Poskytuje přístup k vlastnostem aktuálního ovládacího prvku
Nadřazený Operátor nadřazení Parent.Fill Přístup k vlastnostem kontejneru ovládacího prvku
ThisItem Operátor ThisItem ThisItem.FirstName Přístup k polím ovládacího prvku Gallery nebo Form
ThisRecord Operátor ThisRecord 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.

Poznámka:

Operátor @ lze použít také k ověření typu objektu záznamu podle zdroje dat. Například Collect(coll,Account@{'Account Number: 1111')

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:
    Filter(Inventory; "E" in 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:
    Filter(Inventory; "E" exactin ProductName)

    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
ThisItem Ovládací prvek Gallery
Ovládací prvek Edit form
Ovládací prvek Display form
Výchozí název aktuálního záznamu v ovládacím prvku Gallery nebo formulář.
ThisRecord Funkce ForAll, Filter, With, Sum a ostatní funkce rozsahu záznamu Výchozí název aktuálního záznamu ve funkci ForAll a ostatních funkcích rozsahu záznamu.
Asname Ovládací prvek Gallery
Funkce ForAll, Filter, With, Sum a ostatní 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

Například v následujícím ovládacím prvku Gallery je vlastnost Items nastavena na zdroj dat Zaměstnanci (například tabulku Zaměstnanci, která je součástí ukázky 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 implikovaný 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. Funkce ThisRecord je volitelná, zatímco funkce ThisItem je vždy požadována.

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áznamu k nahrazení výchozího názvu ThisRecord. Můžeme to použít na náš předchozí příklad, abychom objasnili záznam, 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žije dvakrát, nejprve k sestavení sloupců a pak řádků, s funkcí Char(10) pro vytvoření nového řádku.

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.
Operátor Self 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.
Operátor Parent Některé ovládací prvky jsou hostiteli dalších ovládacích prvků, například Screen a Gallery. Hostující ovládací prvek jiných ovládacích prvků uvnitř něj nazýváme Parent (nadřazený). 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 Parent jsou operátory a ne vlastnosti v samotných ovládacích prvcích. 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. Názvy, které neobsahují speciální znaky, nevyžadují jednoduché uvozovky.

Zde je několik příkladů názvů sloupců, se kterými se můžete setkat v tabulce, 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ý název – 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 konečné 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.

Vzhledem k tomu, že zobrazované názvy jsou srozumitelnější, aplikace plátna je navrhnou jako výběr a nenavrhují logická jména. Ačkoli logické názvy nejsou navrženy aplikací, lze je přesto použít, pokud jsou zadány nepřímo.

Představte si například, že jste přidali Vlastní pole do tabulky 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:

Tabulka účtů s přidaným vlastním polem, ukazující zobrazovaný název „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 má v sobě 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 'Vlastní pole' pro dané pole.

Ačkoli to není navrženo, mohli bychom pro toto pole použít také logický název. 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. U názvů systémových tabulek a polí Dataverse by to neměl být problém, protože logické názvy jsou konzistentní napříč prostředími. 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ý název objevit ve stejné tabulce více než jednou. 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 rozlišení názvů jsou přidány v jiných situacích, kde se vyskytují název konflikty, jako například názvy tabulek, volby a jiné položky 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ázevPole]
  • 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ů.