Оператори и идентификатори в 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 операторът идентифицира съвпадения, само ако са написани с главни букви по същия начин. Ето един пример:
Създайте или импортирайте колекция с име Инвентар, и го покажете в галерия, както първата процедура в Показвайте изображения и текст в галерия описва.
Задайте свойството Елементи на галерията на тази формула:
Filter(Inventory, "E" в ProductName)Галерията показва всички продукти с изключение на Callisto, тъй като името на този продукт е единственото, което не съдържа буквата, която сте посочили.
Променете свойството Елементи на галерията на тази формула:
Филтър (инвентар, "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 не е задължителен и се подразбира чрез директно използване на полетата, например в този случай можехме да напишем:
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
Формулите за снимката и името са коригирани, за да се използва това име за текущия запис:
Employee.Picture
Employee.'First Name' & " " & Employee.'Last Name'
Може да се използва и с функции за обхват на запис за замяна на името по подразбиране 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
В рамките на тази галерия поставяме хоризонтална галерия за файла, който ще се репликира за всеки ранг, със свойство Елементи:
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. Логическото име ще бъде присвоено от системата и можете да го променяте само при създаване на полето. Резултатът ще изглежда подобен на:
При създаване на препратка към поле на Акаунти, предложението ще бъде използвано „Персонализирано поле“, тъй като това е името за показване. Трябва да се използват единичните кавички, тъй като в това име има интервал:
След като изберете предложението, „Персонализирано поле“ се показва в лентата с формули и данните се извличат:
Въпреки че не се предлага, бихме могли да използваме и логическото име за това поле. Това ще доведе до извличане на същите данни. Единичните кавички не са задължителни, тъй като това име не съдържа интервали или специални знаци:
Зад кулисите се поддържа картографиране между показваните имена, видени във формули, и основните логически имена. Тъй като логичните имена трябва да се използват за взаимодействие с източник на данни, това картографиране се използва за автоматично преобразуване от текущото име на изображение в логическото име и това се вижда в мрежовия трафик. Това съпоставяне се използва и за преобразуване обратно в логически имена, за да превключите към нови показвани имена, например, ако показваното име се промени или създател редактира приложението на друг език.
Бележка
Логическите имена не се превеждат при преместване на приложение между среди. За Dataverse системни имена на таблици и полета, това не би трябвало да е проблем, тъй като логическите имена са последователни в различните среди. Но всякакви персонализирани полета, като например cra3a_customfield в този пример по-горе може да има различен префикс на средата (cra3a в такъв случай). За предпочитане са показваните имена, тъй като те могат да бъдат съпоставени с показваните имена в новата среда.
Пояснения за имената
Тъй като показваните имена не са уникални, едно и също име може да се появи повече от веднъж в една и съща таблица. Когато това се случи, логическото име ще бъде добавено в края на показваното име в скоби за едно от другите конфликтни имена. Въз основа на горния пример, ако имаше второ поле със същото име на Персонализирано поле с логично име на cra3a_customfieldalt, тогава предложенията ще покажат:
Низовете за двузначност на имената се добавят в други ситуации, при които възникват конфликти на имена, като имената на таблица, избори и други елементи на Dataverse.
Оператор за разграничаване
Някои функции създават обхват на запис за достъп до полетата на таблицата, докато обработвате всеки запис, като например Filter, AddColumns и Sum. Имената на полета, добавени с обхвата на записа, отменят същите имена от други места в приложението. Когато това се случи, все още можете да получите достъп до стойности извън обхвата на записа с оператор за пояснение @:
- За достъп до стойности от вложени области на запис, използвайте @ оператор с името на таблицата, която се използва при използване на този шаблон:
Таблица[@FieldName] - За достъп до глобални стойности, като източници на данни, колекции и променливи на контекста, използвайте шаблона [@ObjectName] (без обозначение на таблицата).
За повече информация и примери вижте обхват на записа.