Споделяне чрез


Оператори и идентификатори в Power Apps

Отнася се за: Приложения за платно Приложения, управлявани от модел Power Pages

Някои от тези оператори зависят от езика на автора. За повече информация относно езиковата поддръжка в приложенията за платно вижте Глобални приложения.

Символ Тип Пример Описание
"..." Идентификатор "Име на акаунта" Идентификаторите, които съдържат специални знаци, включително интервали, са затворени в единични кавички
"..." Текстов низ "Здравей, свят" Текстовите низове са затворени в двойни кавички
$"..." Интерполация на низове "Скъпи {FirstName}", Формули, вградени в текстов низ
. Селектор за свойства Плъзгач1.Стойност
Color.Red
Acceleration.X
Извлича свойство от таблица, контрола, сигнал или изброяване. За обратна съвместимост може също да се използва !.
.
[зависимо от езика]
Десетичен разделител 1.23 Разделител между цели и частични части на число. Знакът зависи от езика.
( ) Скоби Филтър (T, A < 10)

(1 + 2) * 3
Прилага реда на приоритета и групира подизрази в по-голям израз
+ Аритметични оператори 1 + 2 Събиране
-   2 - 1 Изваждане и знак
*   2 * 3 Умножение
/   2 / 3 Деление (виж също функция Mod)
^   2 ^ 3 Експоненция, еквивалентна на функцияPower
%   20% Процент (еквивалентен на "* 1/100")
= Оператори за сравнение Цена = 100 Равно на
>   Цена > 100 Е по-голямо от
>=   Цена > = 100 По-голямо или равно на
<   Цена < 100 Е по-малко от
<=   Цена < = 100 По-малко или равно на
<>   Цена <> 100 Не е равно на
& Оператор за свързване на низове "здравей" & " " и "свят" Прави множеството низове да се появяват непрекъснато
&& or и Логически оператори Цена < 100 && Плъзгач1.Стойност = 20
или Цена < 100 и Slider1.Value = 20
Логическо свързване, еквивалентно на функцията And
|| или Или   Цена < 100 || Плъзгач1.Стойност = 20 или Цена < 100 или Плъзгач1.Стойност = 20 Логическо прекъсване на връзката, еквивалентно на функцията Or
! или Не   ! (Цена < 100) или не (Цена < 100) Логическо отрицание, еквивалентно на функцията Not
Точен Оператори на членство Галерия1.Избрани точни запазени елементи Принадлежност към колекция или маса
Точен   "Windows" точно "За показване на прозорци в операционната система Windows..." Тест на подниза (чувствителен към регистър)
в   Галерия1.Избрано в ЗапазениЕлементи Принадлежност към колекция или маса
в   "The" в "Клавиатурата и мониторът..." Тест на подниза (нечувствителен към регистър)
@ Оператор за пояснение MyTable[@fieldname] Разграничаване на поле
@   [@MyVariable] Глобално разграничение
,
[зависимо от езика]
Разделител на списък Ако( x < 10, "Нисък", "Добър" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Разделя:
  • аргументи във функционални обаждания
  • полета в запис
  • полета в таблица
Този знак зависи от езика.
;
[зависимо от езика]
Верижно свързване на формули Събиране (T, A); Навигация (S1, "") Отделни извиквания на функции в свойства на поведение. Операторът за верижно свързване зависи от езика.
Като Като оператор AllCustomers като клиент Замества ThisItem и ThisRecord в галериите и функциите за обхват на запис. Тъй като е полезно за предоставяне на по-добро, конкретно име и е особено важно във вложени сценарии.
Самостоятелно Самостоятелен оператор Самозапълване Достъп до свойства на текущото управление
Родител Оператор родител Родител.Попълване Достъп до свойства на контролен контейнер
ТозиАртикул Оператор ThisItem ThisItem.FirstName Достъп до полета на галерия или контрол на формуляри
Този запис Оператор ThisRecord ThisRecord.FirstName Достъп до пълния запис и отделните полета на записа в ForAll, Sum, With и другите функции на обхват на запис. Може да се замени с оператора Като.

Бележка

Операторът @ може също да се използва за валидиране на типа на обекта на запис срещу източник на данни. Например, Collect(coll,Account@{'Account Number: 1111')

в и точно оператори

Използвайте операторите in и exactin за търсене на низ в източник на данни, като колекция или импортирана таблица. Операторът в идентифицира съвпадения независимо от случая и exactin операторът идентифицира съвпадения, само ако са написани с главни букви по същия начин. Ето един пример:

  1. Създайте или импортирайте колекция с име Инвентар, и го покажете в галерия, както първата процедура в Показвайте изображения и текст в галерия описва.

  2. Задайте свойството Елементи на галерията на тази формула:
    Filter(Inventory, "E" в ProductName)

    Галерията показва всички продукти с изключение на Callisto, тъй като името на този продукт е единственото, което не съдържа буквата, която сте посочили.

  3. Променете свойството Елементи на галерията на тази формула:
    Филтър (инвентар, "E" точно в името на продукта)

    Галерията показва само Европа, защото само нейното име съдържа буквата, която сте посочили в случая, който сте посочили.

Оператори ThisItem, ThisRecord и As

Няколко контроли и функции прилагат формули за отделни записи в таблица. За да видите отделния запис във формула, използвайте някой от следните:

Оператор Приложимо за Описание
ТозиАртикул Контрол на галерията
Контрола за редактиране на формуляр
Контрола на формуляра за показване
Името по подразбиране за текущия запис в контрола на галерия или формуляр.
Този запис ForAll, Filter, With, Sum и други функции на обхвата на записа Името по подразбиране за текущия запис във ForAll и други функции за обхват на запис.
Катоиме Контрол на галерията
ForAll, Filter, With, Sum и други функции на обхвата на записа
Определя име за текущия запис, като замества името по подразбиране ThisItem или ThisRecord. Използвайте As, за да улесните разбирането на формулите и да отстраните двусмислеността при влагане.

Оператор ThisItem

Например по-долу Галерия контрола, Елементи свойството е зададено на Служители източник на данни (като Служители таблица, включена в Проба от търговци на Northwind):

Employees

Служители, показани в галерия.

Първият елемент в галерията е шаблон, който се репликира за всеки служител. В шаблона формулата за снимката използва ThisItem за препратка към текущия елемент:

ThisItem.Picture

Формула за снимка на служител.

По същия начин формулата за името също използва ThisItem:

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

Формула за име и фамилно име на служител.

Оператор ThisRecord

ThisRecord се използва във функции, които имат обхват на записа. Например можем да използваме функцията Филтър със свойството Елементи на галерията, за да се показват само собствените имена, които започват с М:

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

Филтриране на служителите въз основа на името, като се използва ThisRecord.

ThisRecord не е задължителен и се подразбира чрез директно използване на полетата, например в този случай можехме да напишем:

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

Въпреки, че е по избор, използването на ThisRecord може да направи формулите по-лесни за разбиране и може да се изисква в двусмислени ситуации, когато име на поле може да бъде и име на релация. ThisRecord не е задължителен, докато ThisItem винаги е задължителен.

Използвайте ThisRecord за препратка към целия запис Patch, Collect и други функции за обхват на записа. Например следващата формула задава състоянието на всички неактивни служители като активно:

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

Като оператор

Използвайте оператора As за наименоване на запис в галерия или функция за обхват на запис, като заместите имената по подразбиране ThisItem или ThisRecord. Наименуването на записа може да направи формулите по-лесни за разбиране и може да е необходимо в ситуации с влагане за достъп до записи в други обхвати.

Например може да промените свойството Елементи на галерията да използва As за определяне, че работим със служител:

Employees As Employee

Галерия от служители, използващи оператора As.

Формулите за снимката и името са коригирани, за да се използва това име за текущия запис:

Employee.Picture

Снимка на служител, използващ името на служителя, зададено с оператора Като.

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

Собствено и фамилно име на служител, използващ името Служител, зададено с оператора As.

Може да се използва и с функции за обхват на запис за замяна на името по подразбиране ThisRecord. Можем да приложим това към предишния ни пример, за да поясним записа, с който работим:

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

Когато влагате галерии и функции за обхват на запис, ThisItem и ThisRecord винаги посочват най-вътрешния обхват, като записите във външните обхвати остават недостъпни. Използвайте As, за да направите всички обхвати на записа достъпни, като им зададете уникално име.

Например тази формула създава модел на шахматна дъска като текстови низ чрез влагане на две функции 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
)

Задаването на свойството Текст на контролата Етикет към тази формула показва:

Текст на шахматната дъска, показан в контрола на етикета.

Нека да разопаковаме това, което се случва тук:

  • Започваме с итерация на таблица без име с 8 номерирани записа от функцията Sequence. Този цикъл е за всеки ред на таблото, който обикновено се нарича Ранг, затова му даваме това име.
  • За всеки ред итерираме друга таблица без име с 8 колони и въвеждаме общото име Файл.
  • Ако Rank.Value + File.Value е нечетно число, квадратчето получава X, в противен случай – точка. Тази част от формулата посочва и двата цикъла ForAll, които са възможни чрез оператора As.
  • Concat се използва два пъти, първо за сглобяване на колоните, а след това и на редовете, с Char(10), хвърлен за създаване на нов ред.

Подобен пример е възможен с вложени контроли за галерия вместо функции ForAll. Нека започнем с вертикалната галерия за ранга. Тази контрола на галерията ще има формула за елементи:

Sequence(8) as Rank

Илюстрация на външната галерия, която предоставя итерацията на Rank.

В рамките на тази галерия поставяме хоризонтална галерия за файла, който ще се репликира за всеки ранг, със свойство Елементи:

Sequence(8) as File

Илюстрация на вътрешната галерия, която предоставя итерацията на файла.

И накрая, в рамките на тази галерия ще добавим контрола Етикет, която ще се репликира за всеки файл и всеки ранг. Ще го оразмерим, за да запълним цялото пространство и да използваме свойството Запълване, за да предоставим цвета с тази формула:

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

Контрол на етикета в двете галерии, който осигурява редуващите се цветове за шахматната дъска.

Оператори Self и Parent

Има три начина за препращане към контрола и неговите свойства във формула:

Метод Описание
По име на контрола Всеки контрол може да се посочва по име от всяко място в приложението.

Например, Label1.Fill се отнася до свойството за запълване на контролата с името Label1.
Самостоятелен оператор Често е удобно да се посочва друго свойство на същия контрол, когато пишете формула. Вместо да използвате абсолютна препратка по име, е по-лесно и по-преносимо да използвате относителна препратка към self. Операторът Self осигурява лесен достъп до текущото управление.

Например Self.Fill се отнася до цвета на запълване на текущото управление.
Оператор родител Някои контроли съдържат други контроли, като например контролите Екран и галерия. Хостинг контролът на контролите в него се нарича родител. Подобно на Self оператора, операторът Parent осигурява лесна относителна препратка към контрола на контейнера.

Например, Parent.Fill се отнася до свойството за запълване на контрола, което е контейнерът за текущото управление.

Self и Parent са оператори, а не свойства на самите контроли. Отнасящи се до Parent.Parent, Self.Parent или Parent.Self не се поддържа.

Имената на идентификаторите

Имената на променливи, източници на данни, колони и други обекти могат да съдържат всякакъв Unicode.

Използвайте единични кавички около име, което съдържа интервал или друг специален символ.
Използвайте две единични кавички заедно, за да представите един единствен цитат в името. Имената, които не съдържат специални символи, не изискват единични кавички.

Ето някои примерни имена на колони, които може да срещнете в таблица и как са представени във формула:

Име на колоната в база данни Позоваване на колона във формула
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
Име с интервали 'Name with spaces'
Наименование с "двойни" кавички 'Name with "double" quotes'
Наименование с 'единични' кавички 'Name with ''single'' quotes'
Име със знак @ при знак 'Name with an @ at sign'

Двойните кавички се използват за посочване на текстови низове.

Показване на имена и логически имена

Някои източници на данни като SharePoint и Microsoft Dataverse имат две различни имена, за да се позовават на една и съща таблица или колона от данни:

  • Логическо име - Име, което гарантирано е уникално, не се променя след създаването си, обикновено не позволява интервали или други специални знаци и не е локализирано на различни езици. В резултат името може да е кодирано. Тези имена се използват от професионални разработчици. Например cra3a_customfield. Това име може също да бъде посочено като име на схемата или просто име.

  • Показвано име - Име, което е удобно за потребителя и е предназначено да се вижда от крайните потребители. Това име може да не е уникално, може да се променя с течение на времето, може да съдържа интервали и всеки Unicode символ и може да бъде локализирано на различни езици. Подобно на примера по-горе, показваното име може да бъде персонализирано поле с интервал между думите.

Тъй като показваните имена са по-лесни за разбиране, приложенията за платно ще ги предложат като избор, а не да предлагат логически имена. Въпреки че не се предлагат логически имена, те все пак могат да се използват, ако са не са въведени директно.

Например, представете си, че сте добавили Потребителско поле в таблица в Dataverse. Логическото име ще бъде присвоено от системата и можете да го променяте само при създаване на полето. Резултатът ще изглежда подобен на:

Таблица

При създаване на препратка към поле на Акаунти, предложението ще бъде използвано „Персонализирано поле“, тъй като това е името за показване. Трябва да се използват единичните кавички, тъй като в това име има интервал:

Лента с формули в Studio, показваща предложения за имена на полета на акаунти с маркирано показвано име

След като изберете предложението, „Персонализирано поле“ се показва в лентата с формули и данните се извличат:

Студийна лента с формули, показваща използването на показваното име

Въпреки че не се предлага, бихме могли да използваме и логическото име за това поле. Това ще доведе до извличане на същите данни. Единичните кавички не са задължителни, тъй като това име не съдържа интервали или специални знаци:

Студийна лента с формули, показваща използването на cr5e3_customfield на логическото име за полето.

Зад кулисите се поддържа картографиране между показваните имена, видени във формули, и основните логически имена. Тъй като логичните имена трябва да се използват за взаимодействие с източник на данни, това картографиране се използва за автоматично преобразуване от текущото име на изображение в логическото име и това се вижда в мрежовия трафик. Това съпоставяне се използва и за преобразуване обратно в логически имена, за да превключите към нови показвани имена, например, ако показваното име се промени или създател редактира приложението на друг език.

Бележка

Логическите имена не се превеждат при преместване на приложение между среди. За Dataverse системни имена на таблици и полета, това не би трябвало да е проблем, тъй като логическите имена са последователни в различните среди. Но всякакви персонализирани полета, като например cra3a_customfield в този пример по-горе може да има различен префикс на средата (cra3a в такъв случай). За предпочитане са показваните имена, тъй като те могат да бъдат съпоставени с показваните имена в новата среда.

Пояснения за имената

Тъй като показваните имена не са уникални, едно и също име може да се появи повече от веднъж в една и съща таблица. Когато това се случи, логическото име ще бъде добавено в края на показваното име в скоби за едно от другите конфликтни имена. Въз основа на горния пример, ако имаше второ поле със същото име на Персонализирано поле с логично име на cra3a_customfieldalt, тогава предложенията ще покажат:

Студийна лента с формули, показваща използването на логическото име cr5e3_customfieldalt за премахване на двузначността на двете версии на

Низовете за двузначност на имената се добавят в други ситуации, при които възникват конфликти на имена, като имената на таблица, избори и други елементи на Dataverse.

Оператор за разграничаване

Някои функции създават обхват на запис за достъп до полетата на таблицата, докато обработвате всеки запис, като например Filter, AddColumns и Sum. Имената на полета, добавени с обхвата на записа, отменят същите имена от други места в приложението. Когато това се случи, все още можете да получите достъп до стойности извън обхвата на записа с оператор за пояснение @:

  • За достъп до стойности от вложени области на запис, използвайте @ оператор с името на таблицата, която се използва при използване на този шаблон:
    Таблица[@FieldName]
  • За достъп до глобални стойности, като източници на данни, колекции и променливи на контекста, използвайте шаблона [@ObjectName] (без обозначение на таблицата).

За повече информация и примери вижте обхват на записа.