Делите путем


Објект App у услузи Power Apps

Важи за: Цанвас апликације Модел-дривен апликације

Пружа информације о тренутно покренутој апликацији и контролу над њеним понашањем.

Опис

Као контрола, објекат App пружа својства која идентификују који се екран приказује и који траже од корисника да сачува промене тако да се не изгубе. Свака апликација има објекат App.

Можете да пишете формуле за нека својства објекта App. На врху окна Приказ стабла, изаберите објекат App као што бисте изабрали било коју другу контролу или екран. Прикажите и уредите једно од својстава објекта тако што ћете га одабрати на падајућој листи са леве стране траке за формуле.

Објекат

Својство ActiveScreen

Својство ActiveScreen идентификује екран који се приказује.

Ово својство враћа објекат екрана. Користите га за референцисање својстава тренутно приказаног екрана, као што је име са формулом #пии_ијфидејз. Ово својство можете да упоредите и са другим објектом екрана, на пример са формулом за поређење Апп.АцтивеСцреен = Screen2 да бисте тестирали да ли је Screen2 тренутно приказан екран.

Користите функцију Back или Navigate за промену екрана који се приказује.

Својство "БацкЕнаблед" ("БацкЕнаблед"

Својство БацкЕнаблед мења начин на који апликација реагује на покрет леђа уређаја (брзо превуците или користите дугме хардвера назад на уређајима , брзо превуците Android слева на уређаје) када током покретања у мобилном телефону iOS Power Apps . Када је омогућен, покрет уназад уређаја се враћа на екран који је последњи пут приказан, што је слично формули "Назад ". Када је онемогућен, покрет "назад" уређаја враћа корисника на листу апликација.

Својства ConfirmExit

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

Белешка

  • ConfirmExit не ради у апликацијама које су уграђене, на пример, у Power BI и SharePoint.
  • Тренутно ова својства могу да референцирају контроле само на првом екрану ако је омогућена функција прегледа Одложено оптерећење (што је подразумевано за нове апликације). Ако се наводе референце, Power Apps Studio не приказује грешку, али резултујућа објављена апликација се не отвара у апликацији Power Apps Mobile или прегледачу. Активно радимо на уклањању овог ограничења. У међувремену можете да искључите опцију Одложено отпремање у менију Поставке>Предстојеће функције (у оквиру ставке Преглед).

ConfirmExit

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

У ситуацијама када корисник можда има несачуване промене у апликацији, користите ово својство да бисте приказали дијалог за потврду пре изласка из апликације. Користите формулу која може да провери променљиве и контролише својства (на пример, својство Unsaved контроле образац за измену).

Дијалог за потврду појављује се у свакој ситуацији у којој се подаци могу изгубити, као у следећим примерима:

  • Покренута је функција Exit.
  • Ако је апликација покренута у прегледачу:
    • Затварање прегледача или картице прегледача у којој је апликација покренута.
    • Одабир дугмета за повратак у прегледачу.
    • Покрените функцију Launch чије својство LaunchTarget има вредност Self.
  • Ако је апликација покренута у програму Power Apps Мобиле ( iOS или Android):
    • Превлачење да бисте се пребацили на другу апликацију на платформи Power Apps Mobile.
    • Одабир дугмета за повратак на Android уређају.
    • Покрените функцију Launch да бисте покренули другу апликацију са подлогом.

Тачан изглед дијалога за потврду може се разликовати овисно о уређајима и верзијама услуге Power Apps.

Дијалог за потврду се не приказује у програму Power Apps Studio.

ConfirmExitMessage

Подразумевано, дијалог за потврду приказује генеричку поруку, као што је „Можда имате несачуване промене.“ на језику корисника.

Користите ConfirmExitMessage да у дијалогу за потврду наведете прилагођену поруку. Ако је ово својство празно, користи се подразумевана вредност. Прилагођене поруке се скраћују по потреби да би се уклопиле у дијалог за потврду, па задржите поруку до највише неколико редова.

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

Белешка

Објекат апликације има још два својства OnMessage и BackEnabled која су експериментална. Ова својства ће на крају бити уклоњена из објекта апликације. Препоручујемо да не користите ова својства у вашем производном окружењу.

Пример

  1. Креирајте апликацију која садржи две контроле обрасца, AccountForm и ContactForm.

  2. Подесите својство ConfirmExit објекта App на овај израз:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

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

    Дијалог генеричке потврде.

  3. Подесите својство ConfirmExitMessage објекта App према овој формули:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

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

    Дијалог за потврду специфичн за образац.

Тастер за инструментацију инсталације за Application Insights

Да бисте извезли системски генерисане евиденције апликација Application Insights, потребно је да подесите тастер Инструментатион за апликацију подлоге за подлогу.

  1. Отворите апликацију за уређивање . Power Apps Studio
  2. Изаберите објекат апликације у левом приказу навигационог стабла.
  3. Унесите тастер Инструментатион у окно са својствима.

Ако се подаци не шаљу програму Апп Инсигхтс, обратите се администратору Power Platform и проверите да ли је апп Инсигхтс онемогућен на нивоу закупца.

Својство „Formulas“

Користите именоване формуле у својству Formulas да бисте дефинисали формулу која се може поново користити у целој апликацији.

У услузи Power Apps, својства контроле се покрећу формулама. На пример, да бисте доследно подесили боју позадине у апликацији, својство Fill за сваку можете да поставите на уобичајену формулу:

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

Са толико места на којима се ова формула може појавити, постаје заморно и подложно грешкама да их све ажурира ако је потребна промена. Уместо тога, можете да креирате глобалну променљиву у OnStart да бисте једном подесили боју, а затим поново користили вредност у целој апликацији:

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Иако је ова метода боља, она зависи и од покретања OnStart пре него што се утврди вредност за BGColor. BGColor такође може манипулисати у неком кутку апликације којег аутор није свестан, променом коју је направио неко други, а томе се тешко може ући у траг.

Именоване формуле пружају алтернативу. Као што обично пишемо својство-контроле = израз, тако можемо да напишемо и име = израз , а затим да поново користимо име у целој апликацији да бисмо заменили израз. Дефиниције ових формула се раде у својству Formulas:

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

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

  • Вредност формуле је увек доступна. Не постоји зависност од временског распореда, не постоји OnStart који мора да се покрене први пре него што се вредност постави, нема времена у којем је вредност формуле нетачна. Именоване формуле могу да се односе једна на другу било којим редоследом, све док не креирају кружну референцу. Могу се израчунавати паралелно.
  • Вредност формуле је увек ажурна. Формула може да изврши израчунавање које зависи од својстава контроле или записа базе података, а како се мењају, вредност формуле се аутоматски ажурира. Није потребно да ручно ажурирате вредност као што то радите са променљивом. А формуле се поново израчунавају само када је то потребно.
  • Дефиниција формуле је непроменљива. Дефиниција у својству Formulas је један извор истине и вредност се не може променити негде другде у апликацији. Помоћу променљивих, могуће је да неки кôд неочекивано промени вредност, али то није могуће са именованим формулама.
  • Израчунавање формуле се може одложити. Пошто је његова вредност непроменљива, увек може да се израчуна када је то потребно, што значи да је не треба израчунавати док не буде потребна. Вредности формуле које се не користе док се не прикаже screen2 апликације не морају бити израчунате док screen2 не буде видљив. Одлагање овог рада може побољшати време учитавања апликација. Именоване формуле су декларативне и пружају могућности систему да оптимизује начин и када ће бити израчунат.
  • Именоване формуле су Excel концепт. Power Fx користи Excel концепте тамо где је то могуће пошто толико људи добро познаје Excel. Именоване формуле су еквивалент именованих ћелија и именованих формула у програму Excel, којима се управља помоћу управљача именом. Поново се израчунавају аутоматски као унакрсна табела, као што то раде својства контроле.

Именоване формуле се дефинишу, једна за другом у својству Formulas, а свака се завршава тачком и зарезом. Тип формуле је закључно са типовима израза који се заснивају на типовима елемената унутар израза и начину на који се они користе заједно. На пример, ове именоване формуле преузимају корисне информације о тренутном кориснику из услуге Dataverse:

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

Ако је потребно ажурирати формулу за UserTitle, то се може лако урадити на овој једној локацији. Ако UserPhone није потребан у апликацији, онда ови позиви у табели Корисници у услузи Dataverse нису упућени. Не постоји казна за укључивање дефиниције формуле која се не користи.

Нека ограничења именованих формула:

  • Они не могу да користе функције понашања или да на неки други начин изазову бочне ефекте унутар апликације.
  • Не могу да креирају кружну референцу. Имати а = б; и б = а; у истој апликацији није дозвољено.

Својство „OnError“

Користите OnError да бисте предузели радњу након што је откривена грешка. Он пружа глобалну могућност да пресретнете рекламни натпис грешке пре него што буде приказан крајњем кориснику. Такође се може користити за евидентирање грешке помоћу функције Trace или за писање у базу података или веб-услугу.

Резултат сваке процене формула је проверен за грешку. Ако постоји грешка, OnError бити процењен истим променљивим опсега FirstError and AllErrors које би биле присутне да је цела формула била упакована у функцију IfError function.

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

OnError не може да замени грешку у израчунавањима на начин на који то може IfError. У тренутку када је позван OnError, грешка се већ догодила и она је већ обрађена кроз израчунавања формула. * OnError* контролише само извештавање о грешкама.

OnError формуле се истовремено израчунавају и могуће је да се њихово израчунавање преклапа са обрадом других грешака. На пример, ако поставите глобалну променљиву поврх догађаја OnError и касније је прочитате у истој формули, вредност се можда променила. Користите функцију With да бисте креирали именовану вредност која је локална за формулу.

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

Пример

Размотрите контролу Label и контролу Slider које су повезане формулом:

Label1.Text = 1/Slider1.Value

Контрола ознаке и клизача повезана формулом Oznaka1.Текст = 1/Slider1.Валуе.

Подразумевана вредност клизача је 50. Ако се клизач помери на 0, Label1 неће показати вредност, а приказује се и банер са грешком:

Контрола клизача је премештена на 0, што је резултирало дељењем нулом грешком и рекламним натписом грешке.

Погледајмо детаљно шта се десило:

  1. Корисник је померио клизач налево, а својство Slide1.Value је промењено у 0.
  2. Label1.Text се аутоматски поново израчунава. Дошло је до дељења нулом, што је изазвало грешку.
  3. Не постоји IfError у овој формули. Израчунавање формуле враћа грешку дељења нулом.
  4. Label1.Text не може да прикаже ништа за ову грешку, тако да приказује статус blank.
  5. OnError је позван. Пошто нема руковаоца, приказује се стандардни банер грешке са информацијама о грешци.

Ако је потребно, могли бисмо да изменимо и формулу на Label1.Text = IfError( 1/Slider1.Value, 0 ). То не би резултирало грешком или банером грешке. Не можемо да променимо вредност грешке из OnError пошто се у том тренутку грешка већ догодила, само је питање како ће бити пријављена.

Ако додамо руковалац OnError, он неће имати утицаја пре 5. корака, али може да утиче на начин пријављивања грешке:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

Формула Апп.ОнЕррор подешена да генерише праћење.

Са овим на месту, из перспективе корисника апликације, неће бити грешке. Међутим, грешка ће бити додата у праћење надгледања, употпуњена извором информација о грешци из FirstError:

Контрола клизача је премештена на 0, што је резултирало дељењем нулом грешком, али није било рекламног натписа са грешкама.

Ако смо такође желели да поред праћења прикажемо исти подразумевани банер грешке, можемо поново да прикажемо грешку помоћу функције Error након позива Trace, као да функција Trace није била тамо:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

Својство OnStart

Белешка

Коришћење својства OnStart може довести до проблема са перформансама приликом учитавања апликације. У процесу смо креирања алтернатива из прва два разлога за коришћење својства – кеширање података и подешавање глобалних променљивих. Већ смо креирали алтернативу за дефинисање првог екрана који ће бити приказан помоћу функције Navigate. У зависности од вашег контекста, ово својство може бити подразумевано онемогућено. Ако га не видите и морате да га користите, погледајте напредна подешавања апликације да бисте га омогућили. Такође можете користити својство екрана OnVisible.

Својство OnStart се покреће када корисник покрене апликацију. Ово својство се често користи за извршавање следећих задатака:

  • Преузимање и кеширање података у колекцијама помоћу функције Collect.
  • Подесите глобалне променљиве користећи функцију Set.

Ова формула се израчунава пре него што се појави први екран. Не учитава се ниједан екран, тако да не можете поставити контекстне променљиве функцијом UpdateContext. Међутим, можете проследити променљиве контекста помоћу функције Navigate.

Када промените својство OnStart, тестирајте га тако што ћете задржати показивач над објектом App у окну приказа стабла, изабрати три тачке (...), а затим изабрати ставку Покрени OnStart. За разлику од првог учитавања апликације, постојеће колекције и променљиве ће већ бити постављене. Да бисте започели са празним колекцијама, користите функцију ClearCollect уместо функције Collect.

Скраћени мени са ставком App за Run OnStart

Белешка

  • Коришћење функције Navigate у својству OnStart је обустављено. Постојеће апликације ће наставити да раде. У ограниченом временском периоду и даље можете да га омогућите у поставкама апликације (доступно у оквиру ставке Обустављено). Међутим, коришћење функције Navigate на овај начин може довести до кашњења учитавања апликација јер приморава систем да доврши процену својства OnStart пре приказивања првог екрана. Уместо тога користите својство StartScreen да бисте израчунали приказани први екран.
  • Обустављени прекидач ће бити искључен за апликације креиране пре марта 2021. године где сте додали функцију Navigate својству OnStart између марта 2021. и сада. Када уређујете такве апликације у програму Power Apps Studio, можда ћете видети грешку. Укључите горепоменути прекидач Обустављено да бисте обрисали ову грешку.

Својство StartScreen

Белешка

Својство StartScreen се неће приказати на листи својстава када је укључена повучена опција Побољшана трака формула. Да бисте искључили Побољшану траку формула, идите на Поставке>Предстојеће функције>Повучено> искључите прекидач Побољшана трака формула када пожелите да користите својство StartScreen.

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

StartScreen је својство тока података које не може да садржи функције понашања. Све функције тока података су доступне, посебно користите ове функције и сигнале да бисте одредили који екран прво треба приказати:

  • Param – функција за читање параметара који се користе за покретање апликације.
  • User – функција за читање информација о тренутном кориснику.
  • LookUp, Filter, CountRows, Max и друге функције које се читају из извора података.
  • Сваки API позива преко конектора, али обратите пажњу да се брзо враћа.
  • Сигнали као што су Connection, Compass и App.

Белешка

Глобалне променљиве и колекције, укључујући оне креиране у својству OnStart, нису доступне у својству StartScreen. Ускоро ће на располагању бити декларативне алтернативе да урадите ово. За повратне информације о овом ограничењу, посетите форум Power Apps заједнице.

Ако StartScreen врати грешку, први екран у приказу стабла у програму Студио биће приказан као да својство StartScreen није постављено. Користите функцију IfError да бисте ухватили грешке и преусмерили се на одговарајући екран грешке.

Када промените својство StartScreen у програму Студио, тестирајте га тако што ћете задржати показивач над објектом App у окну Приказ стабла, изабрати три тачке (...), а затим изабрати ставку Иди на StartScreen. Екран ће се променити као да је апликација учитана.

Кретање до StartScreen

Примери

Screen9

Означава да би Screen9 требало да се прикаже први сваки пут када се апликација покрене.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Проверава да ли је корисник подесио параметар „admin-mode“ и користи га да би одлучио да ли прво треба да се прикаже HomeScreen или AdminScreen.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

Проверава да ли је учесник конференције члан особља и усмерава их на одговарајући екран при покретању.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

Усмерава апликацију засновану на API позиву ForestScreen или OceanScreen. Ако API не успе из било ког разлога, уместо тога се користи ErrorScreen.

Својство "СтудиоВерсион" ("СтудиоВерсион"

Користите својство СтудиоВерсион да бисте приказали или евидентирали верзију Power Apps Studio која је коришћена за објављивање апликације. Ово може бити корисно приликом отклањања грешака и да се уверите да је апликација поново објављена са недавно објављеном верзијом Power Apps Studio.

СтудиоВерсион се враћа као текст. Формат текста се може временом променити и треба га третирати као целину; избегавајте издвајање појединачних порција.