Делите путем


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

Белешка

Microsoft Power Fx је ново име за језик формула за апликације са подлогом. Ови чланци су у изради док издвајамо језик из апликација на платну, интегришемо га са другим Microsoft Power Platform производима и чинимо га доступним у виду отвореног кода. Почните са Microsoft Power Fx прегледом за увод у језик.

Оператори у Microsoft Power Fx су описани у наставку. Неки од ових оператора зависе од језика аутора. За више информација, погледајте глобалне апликације.

Симбол Тип Синтакса Опис
. Бирач својстава Slider1.Value
Color.Red
Издваја својство из контроле табеле или набрајања. За обрнуту компатибилност, можете да се користи !.
.
зависи од језика
Знак за раздвајање децимала 1.23 Знак за раздвајање између целих и делимичних делова броја. Знак зависи од језика.
( ) Заграде Filter(T, A < 10)

(1 + 2) * 3
Намеће редослед приоритета и групише подизразе у већи израз
+ Аритметички оператори 1 + 2 Сабирање
-   2 - 1 Одузимање и знак
*   2 * 3 Множење
/   2 / 3 Дељење (погледајте такође функцију Mod)
^   2 ^ 3 Степеновање, еквивалентно функцији Power
%   20% Проценат (еквивалентно са „* 1/100“)
= Оператори поређења Price = 100 Једнако је
>   Price > 100 Веће од
>=   Price >= 100 Веће од или једнако са
<   Price < 100 Мање од
<=   Price <= 100 Мање од или једнако са
<>   Price <> 100 Није једнако са
& Оператор за повезивање ниски "хелло " & " " & "wорлд" Саставља више ниски так ода се приказују континуирано
&& или И Логички оператори Цена < 100 && Slider1.Валуе = 20
или Price < 100 And Slider1.Value = 20
Логичка конјункција, еквивалентна функцији And
|| или Or   Price < 100 || Slider1.Value = 20 или Price < 100 Or Slider1.Value = 20 Логичка дисјункција, еквивалентна функцији Or
! или Not   !(Price < 100) или Not (Price < 100) Логичка негација, еквивалентна функцији Not
exactin Оператори чланства Gallery1.Selected exactin SavedItems Припадање колекцији или табели
exactin   Windows exactin „Приказ прозора у оперативном систему Windows...“ Тестирање подниске (које разликује велика и мала слова)
у   Gallery1.Selected in SavedItems Припадање колекцији или табели
у   „Моја“ у „Моја тастатура и монитор...“ Тестирање подниске (које не разликује велика и мала слова)
@ Разјашњавање оператора MyTable[@fieldname] Разјашњавање поља
@   [@MyVariable] Глобално разјашњавање
,
[зависи од језика]
Знак за раздвајање листе If( X < 10, "ниско", "добро" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Раздваја: Овај знак зависи од језика.
;
[зависи од језика]
Повезивање формула Collect(T, A); Navigate(S1, "") Раздваја позиве функција у својствима понашања. Оператор повезивања зависи од језика.
Као Оператор As AllCustomers As Customer Замењује својства ThisItem и ThisRecord у функцијама опсега галерија и записа. As је од користи за пружање бољег, одређеног назива и посебно је важан у угнежђеним сценаријима.
Сопствени Оператор Self Self.Fill Приступ својствима тренутне контроле
Надређено Надређени оператор Parent.Fill Приступ својствима контејнера контроле
ThisItem Оператор ThisItem ThisItem.FirstName Приступ пољима Галерије или контроли обрасца
ThisRecord Оператор ThisItem ThisRecord.FirstName Приступ целокупном запису и појединим пољима записа унутар функција ForAll, Sum, With и других функција опсега записа. Може се заменити оператором As.

Оператори „in“ и „exactin“

Користите операторе in и exactin да пронађете ниску у извору података, попут колекције или увезене табеле. Оператор in идентификује подударања без обзира на величину слова, а оператор exactin идентификује подударања само ако је величина слова иста. Ево примера:

  1. Креирате или увозите колекцију под називом Инвентар и приказујете је у галерији, као што то описује први поступак у чланку Приказ слика и текста у галерији.

  2. Подесите својство Items галеријe према овој формули:
    Filter(Inventory, "E" in ProductName)

    У галерији су приказани сви производи осим „Callisto“, јер је назив тог производа једини који не садржи слово које сте навели.

  3. Промените својство Items галеријe према овој формули:
    Filter(Inventory, "E" exactin ProductName)

    Галерија приказује само ставку „Europa“, јер само њено име садржи слово које сте навели у величини коју сте навели.

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

Неколико контрола и функција примењују формуле на појединачне записе табеле. Да бисте упућивали на појединачни запис у формули, користите једно од следећег:

Оператор Односи се на Опис
ThisItem Контрола Галерија
КонтролаУређивање обрасца
Контрола Образац за приказ
Подразумевано име за тренутни запис у контроли Галерије или обрасца.
ThisRecord ForAll, Filter, With, Sum и остале функције опсега записа Подразумевано име за тренутни запис у функцији ForAll и другим функцијама опсега записа.
As име Контрола Галерија
ForAll, Filter, With, Sum и остале функције опсега записа
Дефинише име за тренутни запис, замењујући подразумевано ThisItem или ThisRecord. Користите As како би се формуле лакше разумеле и разрешиле нејасноће приликом уношења.

Оператор ThisItem

На пример, у следећој контроли Галерија, својство Items је постављено на извор података Employees (као што је ентитет Employees укључен у пример Northwind Traders):

Employees

Запослени приказани у галерији.

Прва ставка у галерији је предложак који се реплицира за сваког запосленог. У предлошку формула за слику користи оператор ThisItem да упућује на тренутну ставку:

ThisItem.Picture

Формула за слику запосленог.

Исто тако, формула за име такође користи оператор ThisItem:

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

Формула за прву и презиме запосленог.

Оператор ThisRecord

ThisRecord се користи у функцијама које имају опсег записа. На пример, можемо да користимо функцију Filter са својством Items да се прикажу само имена која почињу са М:

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

Користите оператор As да именујете запис у галерији или функцији опсега записа, замењујући подразумевани оператор ThisItem или ThisRecord. Именовањем записа може вам бити лакше да разумете формуле и може бити потребно у угнежђеним ситуацијама за приступ записима у другим опсезима.

На пример, можете да модификујете својство Items наше галерије да користи As да идентификовали да радимо са запосленим:

Employees As Employee

Галерија запослених, користећи оператор

Формуле за слику и име подешавају се тако да користе ово име за тренутни запис:

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 
)

Подешавање својства Text контроле Ознака на ову формулу приказује:

Текст шаховске табле приказан у контроли ознаке.

Хајде да видимо шта се овде дешава:

  • Започињемо понављањем неименоване табеле од 8 нумерисаних записа из функције Sequence. Ова петља је за сваки ред табле, што се обично назива Rank и зато му дајемо то име.
  • За сваки ред понављамо још једну неименовану табелу од 8 колона и дајемо заједничко име File.
  • Ако је Rank.Value + File.Value непаран број, квадрат добија X, иначе добија тачку. Овај део формуле се односи на обе петље ForAll, што је омогућено оператором As.
  • Concat се користи два пута, прво за састављање колона, а затим редова, са убаченим знаком Char(10) да креира нови ред.

Сличан пример је могућ и са угнежђеним контролама Галерија уместо функција ForAll. Кренимо од вертикалне галерије за Rank. Ова контрола галерије ће имати формулу Items:

Sequence(8) as Rank

Илустрација галерије која обезбеђује итерацију ранга.

У оквиру ове галерије поставићемо хоризонталну галерију за File, која ће се реплицирати за сваки Rank, са својством Items:

Sequence(8) as File

Илустрација унутрашње галерије која обезбеђује итерацију датотеке.

И на крају, у ову галерију додаћемо контролу Ознака која ће се реплицирати за сваки File и сваки Rank. Променићемо величину тако да попунимо цео простор и искористимо својство Fill да се обезбедимо боју овом формулом:

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

Контрола налепница унутар две галерије која обезбеђује наизменичне боје за шаховску таблу.

Опратори Self и Parent

Постоје три начина да у формули референцирате контролу и њена својства:

Метод Опис
По називу контроле Свака контрола се може позивати по називу било где у апликацији.

На пример, Label1.Fill се односи на својство испуњавања контроле чији назив је Label1.
Оператор Self Често је прикладно упутити неко друго својство исте контроле приликом писања формуле. Уместо да употребљавате апсолутну референцу по имену, лакше је и покретније да користите релативну референцу на себе. Оператор Self омогућава лак приступ својствима тренутне контроле.

На пример, Self.Fill се односи на боју попуне тренутне контроле.
Оператор Parent Неке контроле садрже и друге контроле, попут контрола Screen и Gallery. Контрола која садржи друге контроле у себи назива се надређена. Попут оператора Self, оператор Parent пружа једноставну релативну референцу на контролу контејнера.

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

Self и Parent су оператори, а не својства на самим контролама. Референце Parent.Parent, Self.Parent или Parent.Self нису подржане.

Називи идентификатора

Називи променљивих, извора података, колона и других објеката могу садржати било који Уникод.

Користите једноструке наводнике око назива коју садрже размак или други посебни знак.
Користите два једнострука наводника заједно да бисте представили један једноструки наводник у називу. Називи који не садрже посебне знакове не захтевају једноструке наводнике.

Ево неких примера назива колона на које можете наићи у табели и начин на који су представљени у формули:

Назив колоне у бази података Референца колоне у формули
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. Ова назив се такође може назвати име шеме или само име.

  • Име за приказ – Назив који је лак за корисника и који је замишљен тако да га виде крајњи корисници. Тај назив можда није јединствен, може се временом мењати, може садржавати размаке и било који Уникод знак и може бити локализован на различите језике. У складу са горњим примером, име за приказ може бити Прилагођено поље са размаком између речи.

Будући да су имена за приказ лакше разумљива, Power Fx ће их предложити као избор, а не као логичка имена. Иако логичка имена нису предложена, ипак се могу користити ако их упишете индиректно.

На пример, замислите да сте додали Прилагођено поље ентитету у услузи Dataverse. Систем ће вам доделити логичко име које можете изменити само приликом креирања поља. Резултат би изгледао налик овоме:

Ентитет налога са додатим прилагођеним пољем који < ДИЦТ__име за приказ > дисплаy наме </ДИЦТ__име за приказ > приказ

Када креирате референцу на поље Пословни контакти, користиће се предлог 'Прилагођено поље', пошто је то име за приказ. Морају се користити једноструки наводници, јер ово име има размак:

Поље за формулу студија које приказује предлоге за имена поља налога са < ДИЦТ__име за приказ > дисплаy наме </ДИЦТ__име за приказ >

Након одабира предлога, на траци за формуле приказује се 'Прилагођено поље' и подаци се преузимају:

Поље за формулу студија које приказује употребу < ДИЦТ__име за приказ > дисплаy наме </ДИЦТ__име за приказ >

Иако није предложено, могли бисмо користити и логичко име за ово поље. То ће резултирати преузимањем истих података. Једноструки наводници нису обавезни, јер ово име не садржи размаке нити посебне знакове:

Поље за формулу студија које приказује употребу логичког cr5e3_цустомфиелд за поље.

Иза кулиса, одржава се мапирање између имена за приказ која се виде у формулама и основних логичких имена. Пошто се логичка имена морају користити за интеракцију извором података, ово мапирање се користи за аутоматско конвертовање из тренутног имена за приказ у логичко име и то је оно што се види у мрежном саобраћају. Ово мапирање се такође користи за повратно конвертовање у логичка имена која се пребацују у нова имена за приказ, на пример, ако се име за приказ промени или креатор на другом језику уређује апликацију.

Белешка

Логичка имена се не преводе када се апликација премешта између окружења. За Dataverse системски ентитет и називе поља то не би требало да представља проблем, јер су логичка имена конзистентна у окружењима. Али било која прилагођена поља, попут cra3a_customfield у претходном примеру, може имати другачији префикс окружења (cra3a у овом случају). Пожељнија су имена за приказ, јер се могу подударити са именима за приказ у новом окружењу.

Разјашњавање назива

Будући да имена за приказ нису јединствена, исто име за приказ може се појавити више пута у истом ентитету. Када се то догоди, логичко име ће бити додато на крај < ДИЦТ__име за приказ > дисплаy наме заградама за једно од неусаглашених имена. На основу горњег примера, ако је постојало друго поље са истим именом за приказ Прилагођено поље са логичким именом cra3a_customfieldalt, тада би предлози показали:

Студијско поље за формулу које приказује употребу логичког имена cr5e3_цустомфиелдалт да би се онемогућиле две верзије

Ниске са разјашњеним називима додају се у другим ситуацијама у којима се јављају неусаглашености назива, попут имена ентитета, скупа опција и других Dataverse ставки.

Разјашњавање оператора

Неке функције креирају опсеге записа за приступање пољима табеле током обраде сваког записа, као што су Filter, AddColumns и Sum. Називи поља који су додати с опсегом записа замениће иста имена на другим местима у апликацији. Кад се то догоди, и даље можете приступати вредностима изван опсега записа помоћу оператора за разјашњавање @:

  • Да бисте приступили вредностима из угнежђених опсега записа, користите оператор @ са називом табеле којом управљате када користите овај образац:
    Table[@FieldName]
  • Да бисте приступили глобалним вредностима, као што су извори података, колекције и променљиве контекста, користите образац [@ObjectName] (без ознаке табеле).

За више информација и примера, погледајте опсеге записа.