Операторлар мен идентификаторлар
Ескерім
Microsoft Power Fx — бұл кенеп бағдарламалары формула тілінің жаңа атауы. Бұл мақалалармен жұмыс әлі де жалғасуда, өйткені біз кенеп бағдарламаларынан тілді шығарамыз, оны басқа Microsoft Power Platform өнімдерімен біріктіреміз және оны ашық код ретінде қолжетімді етеміз. Тілге кіріспе үшін Microsoft Power Fx шолуымен бастаңыз.
Microsoft Power Fx бағдарламасындағы операторлар төменде сипатталған. Бұл операторлардың кейбіреулері автордың тіліне байланысты. Қосымша ақпаратты Глобалды қолданбалар бөлімінен қараңыз.
Белгі | Түрі | Синтаксис | Сипаттамасы |
---|---|---|---|
. | Сипатты таңдау құралы | Слайдер1.Мән Color.Red |
Кестені басқару элементінен немесе санақтан сипатты бөліп алады. Кері үйлесімділік үшін ! белгісін пайдалануға болады. |
. тілге тәуелді |
Ондық бөлгіші | 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 | Келесіге тең емес | |
& | Жолдарды байланыстыру операторы | "сәлем" & " " & «әлем» | Бірнеше жолдарды үздіксіз етіп жасайды |
&& немесе Және | Логикалық операторлар | Бағасы < 100 & Slider1.Мән = 20 немесе Бағасы < 100 Және Slider1.Value = 20 |
Логикалық үйлесімділік, And функциясының баламасы |
|| немесе Немесе | Бағасы < 100 || Slider1.Value = 20 немесе Бағасы < 100 немесе Slider1.Value = 20 | Логикалық ажырау, Or функциясының баламасы | |
! немесе Емес | !(Бағасы < 100) немесе Жоқ (Бағасы < 100) | Логикалық теріске шығару, Not функциясының баламасы | |
нақты | Мүшелік операторлары | Галерея1.Сақталған элементтерден дәл таңдалған | Жинаққа немесе кестеге тиесілі |
нақты | «Windows» дәл «Windows операциялық жүйесінде терезелерді көрсету үшін...» | Қосалқы жол сынағы (регистрді ескеру) | |
жылы | Галерея1.Сақталған элементтерде таңдалған | Жинаққа немесе кестеге тиесілі | |
жылы | "Пернетақта мен монитор..." ішіндегі "The" | Қосалқы жол сынағы (регистрді ескермеу) | |
@ | Анықтау операторы | Менің кестем[@fieldname] | Өріс айырмашылығын жою |
@ | [@MyVariable] | Глобалды айырмашылықты жою | |
, [тілге тәуелді] |
Тізім бөлгіші | Егер(X < 10, "Төмен", "Жақсы") { X: 12, Y: 32 } [ 1, 2, 3 ] |
Бөлгіштер: Бұл таңба тілге байланысты болады. |
; [тілге тәуелді] |
Формула тізбегі | Жинау(T, A); Шарлау(S1, "") | Әрекет сипаттарындағы функциялардың жеке шақырулары. Тізбектеу операторы тілге байланысты болады. |
ретінде | Оператор ретінде | Барлық тұтынушылар Тұтынушы ретінде | Галереялардағы ThisItem және ThisRecord және жазба ауқымының функцияларын алдын ала анықтайды. ретінде жақсырақ, нақты атау беру үшін пайдалы және кірістірілген сценарийлерде әсіресе маңызды. |
Өздігінен | Өздігінен оператор | Өзін-өзі толтыру | Ағымдағы басқару құралының сипаттарына қатынасады |
Ата-ана | Негізгі оператор | Parent.Fill | Басқару элементі контейнерінің сипаттарына қол жеткізу |
Бұл элемент | ThisItem операторы | ThisItem.FirstName | Галереяның өрістеріне немесе пішінді басқару элементтеріне қол жеткізу |
Бұл рекорд | ThisItem операторы | ThisRecord.FirstName | ForAll, Sum, With және басқа жазба ауқымының функциялары шеңберінде толық жазбаға және жазбаның жеке өрістеріне қатынасыңыз. As операторы көмегімен алдын ала анықтауға болады. |
Жинақ немесе импортталған кесте сияқты деректер көзінен жол табу үшін in және exactin операторларын пайдаланыңыз. Ішінде операторы сәйкестіктерді регистрге қарамастан табады, ал exactin операторы сәйкестіктерді тек бас әріптері бірдей болса анықтайды. Төменде мысалы берілген:
Галереяда кескіндерді және мәтінді көрсету бөлімінің бірінші процедурасында сипатталғандай Қор деп аталатын жинақты жасаңыз немесе импорттаңыз да, галерея ішінде көрсетіңіз.
Галереяның Элементтер сипатын мына формулаға орнатыңыз:
Сүзгі(Түгендеу, өнім атауындағы "Е")Галерея Callisto-дан басқа барлық өнімдерді көрсетеді, өйткені бұл өнімнің атауы сіз көрсеткен әріпті қамтымайтын жалғыз өнім болып табылады.
Галереяның Элементтер сипатын мына формулаға ауыстырыңыз:
Сүзгі(Түгендеу, нақты өнім атауының "Е")Галерея тек Еуропаны ғана көрсетеді, өйткені тек соның аты сіз көрсеткен регистрде сіз көрсеткен әріптерден тұрады.
Бірнеше басқару элементтері мен функциялар кестенің жеке жазбаларына формулалар қолданады. Формуладағы жеке жазбаларға сілтеме жасау үшін келесілердің бірін қолданыңыз:
Амалдағыш | Мынаған қолданылады | Сипаттама |
---|---|---|
Бұл элемент | Галерея бақылау Пішінді өңдеу бақылау Көрсету формасы бақылау |
Галерея немесе пішінді басқару элементінде ағымдағыжазбаға арналған әдепкі атау. |
Бұл рекорд | Барлығына, Сүзгі, бірге, сомасы және т.б рекордтық ауқым функциялары | ForAll және басқа жазба аумағының функцияларында ағымдағы жазбаға арналған әдепкі атау. |
ретінде аты | Галерея бақылау Барлығы үшін, Сүзгі, Бар, Қосынды және басқа жазу ауқымының функциялары |
Әдепкі ThisItem немесе ThisRecord орнын алмастыратын ағымдағы жазба үшін атауды анықтайды. Формулаларды түсінуді жеңілдету және құру кезінде түсініксіздікті шешу үшін As пайдаланыңыз. |
Мысалы, келесі Галерея басқару элементінде, Элементтер сипаты Қызметкерлер деректер көзіне (мысалы, Northwind Traders үлгісі көмегімен қосылған Қызметкерлер нысаны) орнатылады:
Employees
Галереядағы бірінші элемент - бұл әр қызметкер үшін қайталанатын үлгі. Үлгіде суреттің формуласы ағымдағы элементке сілтеме жасау үшін ThisItem пайдаланады:
ThisItem.Picture
Сол сияқты атаудың формуласы үшін де ThisItem пайдаланады:
ThisItem.'First Name' & " " & ThisItem.'Last Name'
БұлЖазба а жазба көлемі бар функцияларда қолданылады. Мысалы, біз Сүзгі функциясын галереядағы Элементтер сипаты көмегімен M бар атауларды ғана көрсету үшін қолдана аламыз:
Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )
ThisRecord міндетті емес және өрістерді тікелей пайдалану арқылы болжанады, мысалы, бұл жағдайда біз мынаны жаза алар едік:
Filter( Employees, StartsWith( 'First Name', "M" ) )
Қосымша болса да, ThisRecord формулаларды түсінуді жеңілдетеді және өріс атауы, сондай-ақ қарым-қатынас атауы болуы мүмкін көпмағыналы жағдайда қажет болуы мүмкін. Бұл жазба міндетті емес, ал Бұл элемент әрқашан қажет.
Patch, Collect және басқа жазба ауқымының функциялары көмегімен бүкіл жазбаға сілтеме жасау үшін ThisRecord пайдаланыңыз. Мысалы, келесі формула барлық белсенді емес қызметкерлерді белсенді күйге орнатады:
With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
ForAll( InactiveEmployees,
Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )
Галереядағы жазбаны немесе жазба аумағының функциясына атау беру үшін әдепкі ThisItem немесе ThisRecord операторларын алдын ала анықтайтын As операторын пайдаланыңыз. Жазбаға атау беру формуланы түсінуді жеңілдетеді және кірістірілген жағдайларда басқа аумақтардағы жазбаларға қатынасты талап етеді.
Мысалы, Қызметкермен жұмыс жасайтынымызды анықтау мақсатында 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
)
Осы формулаға Label басқару элементінің Text сипатын орнату мыналарды көрсетеді:
Мұнда не болып жатқанын анықтайық:
- Біз Sequence функциясынан 8 нөмірленген жазбалардың атаусыз кестесін қайталаудан бастаймыз. Бұл цикл әдетте Дәреже деп аталатын тақтаның әр жолына арналған, сондықтан оған осы атауды береміз.
- Әр жол үшін біз 8 бағаннан тұратын тағы бір атаусыз кестені қайталаймыз және Файл жалпы атауын береміз.
- Егер Rank.Value + File.Value тақ сан болса, шаршы Х, болмаса нүкте алады. Формуланың бұл бөлігі As операторының көмегімен мүмкін болған ForAll циклдерінің екеуіне де сілтеме жасайды.
- Concat екі рет пайдаланылады, алдымен бағандарды, содан кейін жолдарды құрастыру үшін, a Char(10) жаңа жолды жасау үшін енгізіледі.
Ұқсас мысал ForAll функцияларының орнына құрылған Галерея басқару элементтерімен мүмкін. Дәреже арналған тік галереямен бастайық. Бұл галереяны басқару элементінде Элементтер формуласы болады:
Sequence(8) as Rank
Осы галереяның ішінде біз көлденең галереяны Элементтер сипаты бар әр Дәреже функциясы үшін алмастырылатын Файл үшін орналастырамыз.
Sequence(8) as File
Ақырында, осы галерея ішінде Файл және әр Дәреже үшін алмастырылатын Белгі басқару элементін қосамыз. Біз оны бүкіл кеңістікті толтыру үшін өлшейміз және осы формула көмегімен түс беру үшін Толтыру сипатын пайдаланамыз:
If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )
Басқару элементіне және формуладағы оның сипаттарына сілтеме жасаудың үш жолы бар:
Әдіс | Сипаттама |
---|---|
Басқару элементінің атауы арқылы | Кез келген басқару элементіне бағдарламаның кез келген жерінен атау арқылы сілтеме жасауға болады. Мысалы, Label1.Fill синтаксисі атауы Label1 болып табылатын басқару элементінің толтыру сипатына сілтеме жасайды. |
Өздігінен оператор | Формуланы жазу кезінде сол басқару элементінің басқа сипатына жиі сілтеме жасалады. Абсолюттік анықтаманы атау арқылы пайдаланудың орнына, тиісті анықтаманы біржеке операторға пайдалану оңай әрі қолайлы болып келеді. Жеке оператор ағымдағы басқару элементіне оңай қатынасуды қамтамасыз етеді. Мысалы, Self.Fill синтаксисі ағымдағы басқару элементінің толтыру түсіне сілтеме жасайды. |
Негізгі оператор | Кейбір басқару элементі Screen және Gallery басқару элементтері сияқты басқа басқару элементтерін орналастырады. Басқару элементтерінің басқару элементін оның ішіне орналастыру басты оператор деп аталады. Жекеоператор сияқты, Басты оператор да контейнер басқару элементіне оңай тиісті анықтаманы қамтамасыз етеді. Мысалы, Parent.Fill синтаксисі ағымдағы басқару элементіне арналған контейнер болып табылатын басқару элементінің толтыру сипатына сілтеме жасайды. |
Self және Ата-ана басқару элементтеріндегі сипаттар емес, операторлар болып табылады. 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 нысанына Теңшелмелі өріс қостыңыз деп елестетіңіз. Логикалық атау өріс жасау кезінде ғана өзгертуге болатын жүйе тарапынан тағайындалады. Нәтиже келесідей болады:
Тіркелгілер өрісіне сілтеме жасаған кезде, көрсетілетін атау болғандықтан "Теңшелмелі өріс" пайдалану ұсынылады. Жалғыз дәйексөзді пайдалану керек, себебі бұл атта бос орын бар:
Ұсынысты таңдағаннан кейін формула жолағында "Теңшелмелі өріс" көрсетіледі және деректер шығарылады:
Бұл ұсынылмағанмен, біз осы өрістің логикалық атауын да пайдалана аламыз. Нәтижесінде дәл сол деректерді шығарылады. Бір тырнақша қажет емес, өйткені бұл атта бос орындар мен арнайы таңбалар жоқ:
Сахнаның артында формулаларда шығарылған көрсетілетін атаулар мен негізгі логикалық атаулар арасында салыстыру жүргізіледі. Логикалық аттар деректер көзімен өзара әрекеттесу үшін қолданылуы керек болғандықтан, бұл салыстыру ағымдағы көрсетілетін атауынан логикалық атауға автоматты түрде ауыстыру үшін пайдаланылады және бұл желілік трафикте көрінеді. Бұл салыстыру сонымен қатар жаңа көрсетілетін атауларға ауысу мақсатында логикалық атауларға қайта ауыстыру үшін қолданылады, мысалы, егер көрсетілетін атау өзгерсе немесе жасаушы бағдарламаны басқа тілде өңдесе.
Ескерім
Қолданбаны орталар арасында жылжытқанда логикалық атаулар аударылмайды. Dataverse жүйесінің нысаны мен өріс атаулары үшін бұл қиындық тудырмауы керек, өйткені логикалық атаулар барлық орталарда бірдей болады. Бірақ жоғарыдағы мысалдағы cra3a_customfield сияқты кез келген теңшелмелі өрістердің басқа орта префиксі болуы мүмкін (бұл жағдайда cra3a). Көрсетілетін атауларға артықшылық беріледі, өйткені оларды жаңа ортадағы көрсетілетін атаулармен сәйкестендіруге болады.
Көрсетілетін атаулары бірегей емес болғандықтан, бірдей атау бірдей нысанда бірнеше рет пайда болуы мүмкін. Бұл орын алған кезде логикалық атау қарама-қайшы атаулардың біреуіне жақша ішінде көрсетілетін атаудың соңына қосылады. Жоғарыда келтірілген мысалға сәйкес, логикалық атауы cra3a_customfieldalt болып табылатын Теңшелмелі өріс көрсетілетін атауы бірдей екінші өріс бар болса, онда ұсыныстар мыналарды көрсетеді:
Атауды ажырату жолдары нысандардың, опциялар жиынының және басқа Dataverse элементтерінің атаулары сияқты атаулардың қайшылығы туындаған басқа жағдайларда да қосылады.
Кейбір функциялар әр жазбаны өңдеу кезінде кесте өрістерін алу үшін Сүзгілеу, AddColumns және Сомасы сияқты жазба ауқымдарын жасайды. Жазба ауқымымен қосылған өріс атаулары қолданбаның басқа жерлеріндегі дәл сондай атауларды ауыстырады. Бұл жағдайда мәндерге @ айырмашылықтарды жою операторымен жазба аумағынан тыс қол жеткізуге болады:
- Кірістірілген жазбалар ауқымындағы мәндерге қол жеткізу үшін @ операторын осы үлгіні пайдалану кезінде жұмыс істейтін кестенің атымен бірге пайдаланыңыз:
Кесте[@Өріс атауы] - Деректер көздері, жинақтар және мәтінмәндік айнымалылар сияқты ғаламдық мәндерге қол жеткізу үшін [@ObjectName] үлгісін пайдаланыңыз (кесте тағайындаусыз).
Қосымша ақпарат пен мысалдарды жазба ауқымдары бөлімінен қараңыз.