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


Обект на приложение в Power Apps

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

Предоставя информация за текущото приложение и контрол върху поведението му.

Описание

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

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

Обектът на приложението в екрана Дървовиден изглед.

Свойство ActiveScreen

Свойството ActiveScreen идентифицира екрана, който се показва.

Това свойство връща екранен обект. Използвайте го, за да препратите към свойствата на текущо показания екран, като например името с формулата App.ActiveScreen.Name. Можете също да сравните това свойство с друг обект на екрана, като например с формулата за сравнение App.ActiveScreen = Screen2 , за да проверите дали Screen2 е текущо показваният екран.

Използвайте функцията Back или Navigate за промяна на екрана, който се показва.

BackEnabled свойство

Свойството BackEnabled променя начина, по който приложението реагира на жеста назад на устройството (плъзнете или използвайте хардуерния бутон за връщане назад на Android устройствата, плъзнете отляво на iOS устройствата), когато работи на Power Apps мобилно устройство. Когато е активирано, жестът назад на устройството се навигира обратно към екрана, който е бил показан последно, което е подобно на формулата Назад . Когато е забранено, жестът назад на устройството връща потребителя към списъка с приложения.

Свойствата на ConfirmExit

Никой не иска да загуби несъхранени промени. Използвайте ConfirmExit и свойства ConfirmExitMessage, за да предупредят потребителя, преди да затвори приложението ви.

Бележка

  • ConfirmExit не работи в приложения, които са вградени, например, Power BI и SharePoint.
  • Понастоящем тези свойства могат да препращат контролите само на първия екран, ако функцията за преглед Забавено зареждане е активирана (което по подразбиране е за новите приложения). Ако са направени препратки, Power Apps Studio не показва грешка, но полученото публикувано приложение не се отваря в браузър Power Apps Mobile. Ние активно работим за премахването на това ограничение. Междувременно можете да изключите Забавено натоварване във Настройки>Предстоящи функции (под Преглед).

ConfirmExit

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

В ситуации, в които потребителят може да има незаписани промени в приложението, използвайте това свойство, за да покажете диалогов прозорец за потвърждение, преди да излезете от приложението. Използвайте формула, която може да проверява променливите и да контролира свойствата (например свойството Незаписано на контролата Редактиране на формуляр).

Диалоговият прозорец за потвърждение се появява във всяка ситуация, при която данните могат да бъдат загубени, както в тези примери:

  • Изпълнение на функцията 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 на обекта Приложение на този израз:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Този диалогов прозорец се появява, ако потребителят промени данни в която и да е форма и след това се опита да затвори приложението, без да запазва тези промени.

    Диалогов прозорец за общо потвърждение.

  3. Задайте свойството ConfirmExitMessage на обекта Приложение на тази формула:

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

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

    Диалогов прозорец за потвърждение на конкретен формуляр.

Ключ за настройка на инструментите за Application Insights

За да експортирате системно генерирани регистрационни Application Insights файлове на приложения, трябва да настроите ключа за инструменти за вашето приложение за платно.

  1. Отворете приложението си за редактиране Power Apps Studio.
  2. Изберете обекта Приложение в левия изглед на навигационното дърво.
  3. Въведете ключа за инструментиране в екрана със свойства.

Ако данните не се изпращат до App Insights, свържете се с администратора си Power Platform и проверете дали App Insights е деактивиран на ниво клиент.

Свойство на формули

Използвайте наименувани формули в свойството Формули, за да дефинирате формула, която може да се използва повторно във вашето приложение.

В 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 може също да бъде манипулиран в някой ъгъл на приложението, за който производителят не знае, промяна, направена от някой друг, и това може да бъде трудно да се проследи.

Именуваните формули предоставят алтернатива. Точно както обикновено пишем control-property = израз, вместо това можем да напишем име = израз и след това да използваме повторно име в нашето приложение за заместване на израз. Дефинициите на тези формули се правят в свойството Formulas:

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

Предимствата от използването на именувани формули включват:

  • Стойността на формулата е винаги налична. Няма зависимост от времето, няма OnStart, който трябва да се изпълни първо, преди стойността да бъде зададена, няма време, в което стойността на формулата да е неправилна. Именуваните формули могат да препращат една към друга в произволен ред, стига да не създават кръгова препратка. Те могат да се изчисляват паралелно.
  • Стойността на формулата е винаги актуална. Формулата може да извърши изчисление, което зависи от свойствата на контролата или записите в базата данни, и когато те се променят, стойността на формулата се актуализира автоматично. Не е необходимо ръчно да актуализирате стойността, както правите с променлива. А формулите преизчисляват само когато е необходимо.
  • Дефиницията на формулата е неизменна. Дефиницията във Формули е единственият източник на истина и стойността не може да бъде променена някъде другаде в приложението. При променливите е възможно някакъв код неочаквано да промени стойност, но това не е възможно при наименувани формули.
  • Изчислението на формулата може да бъде отложено. Тъй като стойността му е неизменна, тя винаги може да бъде изчислена, когато е необходимо, което означава, че не е необходимо да се изчислява, докато не е необходима. Стойностите на формулата, които не се използват, докато не се покаже 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 не се извършват. Няма наказание за включване на дефиниция на формула, която не се използва.

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

  • Те не могат да използват функции за поведение или по друг начин да причиняват странични ефекти в приложението.
  • Те не могат да създадат кръгова препратка. Наличието на a = b; и b = a; в едно и също приложение не е разрешено.

Свойство OnError

Използвайте OnError за предприемане на действие след откриване на грешка. Той предоставя глобална възможност за прихващане на банер за грешка, преди да бъде показан на крайния потребител. Може също да се използва за регистриране на грешка с функцията Trace или запис в база данни или уеб услуга.

Резултатът от всяка оценка на формулата се проверява за грешка. Ако е грешка, OnError ще бъде оценено със същите FirstError и AllErrors обхватни променливи, които биха присъствали, ако цялата формула беше обвита във IfError функция.

Ако OnError е празно, се показва банер за грешка по подразбиране с FirstError.Message на грешката. Дефинирането на формула OnError заменя това поведение, позволявайки на създателя да обработва докладването за грешки, както намери за добре. Поведението по подразбиране може да бъде поискано в OnError, като се хвърли отново грешката с функцията Error. Това е полезно, ако някои грешки трябва да бъдат филтрирани или обработени по различен начин, докато други трябва да бъдат предадени.

OnError не може да замени грешка в изчисленията по начина, по който IfError може. В момента, в който се извиква OnError, грешката вече е възникнала и вече е обработена чрез изчисления по формула. *OnError* контролира само съобщаването за грешки.

Формулите на OnError се оценяват едновременно и е възможно тяхната оценка да се припокрива с обработката на други грешки. Например, ако зададете глобална променлива в началото на OnError и я прочетете по-късно в същата формула, стойността може да се е променила. Използвайте функцията With за създаване на именувана стойност, която е локална за формулата.

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

Пример

Помислете за Label контрола и Slider контрола, които са свързани заедно чрез формулата:

Label1.Text = 1/Slider1.Value

Контролата за етикет и плъзгач е обвързана чрез формулата Label1.Text = 1/Slider1.Value.

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

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

Нека да разгледаме какво се случи в детайли:

  1. Потребителят премести слайда наляво и свойството Slide1.Value се промени на 0.
  2. Label1.Text беше автоматично преоценен. Възникна деление на нула, което генерира грешка.
  3. В тази формула няма IfError. Грешката при деление на нула се връща от оценката на формулата.
  4. Label1.Text не може да покаже нищо за тази грешка, така че показва празно състояние.
  5. Извиква се OnError . Тъй като няма манипулатор, стандартният банер за грешка се показва с информация за грешка.

Ако е необходимо, можем също така да променим формулата на Label1.Text = IfError( 1/Slider1.Value, 0 ). Това няма да доведе до грешка или банер за грешка. Не можем да променим стойността на грешка от OnError тъй като в този момент грешката вече се е случила, въпрос е само как ще бъде докладвана.

Ако добавим манипулатор OnError, той няма да окаже влияние преди стъпка 5, но може да повлияе на начина, по който се докладва грешката:

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

Формулата App.OnError е зададена за генериране на проследяване.

С това на място, от гледна точка на потребителя на приложението, няма да има грешка. Но грешката ще бъде добавена към проследяването на Monitor, заедно с източника на информация за грешка от FirstError:

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

Ако също така искаме да имаме същия банер за грешка по подразбиране, показан в допълнение към проследяването, можем да хвърлим отново грешката с функцията Error след Извикване на Trace точно както беше, ако Trace не беше там:

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

Свойство OnStart

Бележка

Използването на OnStart свойството може да причини проблеми с производителността при зареждане на приложение. Ние сме в процес на създаване на алтернативи за първите две причини за използване на свойство-кеширане на данни и настройка на глобални променливи. Вече създадохме алтернатива за дефиниране на първия екран, с който да се показва Navigate. В зависимост от вашия контекст това свойство може да бъде деактивирано по подразбиране. Ако не го виждате и трябва да го използвате, проверете разширените настройки на приложението за превключвател, за да го активирате. Свойството OnVisible на екран може също да се използва.

Свойството OnStart се стартира, когато потребителят стартира приложението. Това свойство често се използва за изпълнение на следните задачи:

  • Извличане и кеширане на данни в колекциите с помощта на функцията Collect.
  • Настройте глобални променливи с помощта на функция Set.

Тази формула се оценява преди появата на първия екран. Не се зарежда екран, така че не можете да задавате контекстни променливи с функцията UpdateContext. Можете обаче да предавате контекстни променливи с функцията Navigate.

След като смените OnStart свойство, тествайте го, като задържите курсора на мишката върху Приложение обект в Изглед на дърво панел, избиране на многоточие (...) и след това избиране Стартирайте OnStart. За разлика от това, когато приложението се зарежда за първи път, съществуващите колекции и променливи вече ще бъдат зададени. За да започнете с празни колекции, използвайте функцията ClearCollect вместо функцията Collect.

Меню за пряко меню за приложение за „Изпълнение на OnStart”

Бележка

  • Използването Navigate функция в свойство OnStart е оттеглено. Съществуващите приложения ще продължат да работят. За ограничен период от време все още можете да го активирате в настройките на приложението (достъпно под пенсиониран). Въпреки това, използвайки Navigate по този начин може да доведе до забавяне на зареждането на приложението, тъй като принуждава системата да завърши оценка на OnStart преди показване на първия екран. Използвайте StartScreen свойство вместо това да изчисли първия показан екран.
  • Оттегленият превключвател ще бъде изключен за приложения, създадени преди март 2021 г., където сте добавили Навигиране до OnStart между март 2021 г. и сега. Когато редактирате такива приложения в Power Apps Studio, може да видите грешка. Обърнете гореспоменатото пенсионирано превключвател, за да изчистите тази грешка.

Свойство StartScreen

Бележка

Свойството StartScreen няма да се появи в списъка със свойства, когато е включена оттеглената опция Подобрена лента за формули. За да изключите лентата с усъвършенствани формули, отидете в Настройки>Бъдещи функции>Прекратено> изключете превключвателя на лентата с усъвършенствани формули, когато искате да използвате свойството StartScreen.

Свойството StartScreen определя кой екран ще бъде показан първи. Той се оценява веднъж, когато приложението се зареди и връща екранния обект, който да бъде показан. По подразбиране това свойство ще бъде празно и първият екран в изгледа Studio Tree се показва първи.

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

  • Функция Param за четене на параметри, използвани за стартиране на приложението.
  • Потребителска функция за четене на информация за текущия потребител.
  • LookUp, Filter, CountRows, Max и други функции, които четат от източник на данни.
  • Всяко API извикване през конектор, но внимавайте да се връща бързо.
  • Сигнали като Връзка, Компас, и Приложение.

Бележка

Глобални променливи и колекции, включително тези, създадени в OnStart, не са налични в StartScreen. Има декларативни алтернативи за това, които са на път. За вашите отзиви относно това ограничение отидете на форум на общността на Power Apps.

Ако StartScreen връща грешка, първият екран в изгледа Studio Tree ще се покаже сякаш StartScreen не беше зададено. Използвайте IfError функция за улавяне на грешки и пренасочване към подходящ екран за грешки.

След като промените StartScreen в Студио, тествайте го, като задържите курсора на мишката върху Приложение обект в Изглед на дърво панел, избиране на многоточие (...) и след това избиране Навигиране до 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 се използва вместо това.

Свойство StudioVersion

Използвайте свойството StudioVersion , за да покажете или регистрирате версията, Power Apps Studio която е използвана за публикуване на приложение. Това може да бъде полезно при отстраняване на грешки и за да се гарантира, че приложението ви е публикувано повторно с най-новата версия на. Power Apps Studio

StudioVersion се връща като текст. Форматът на текста може да се променя с течение на времето и следва да се разглежда като цяло; избягвайте извличането на отделни порции.