Obiekt App w Power Apps

Dotyczy: aplikacje kanwy aplikacje oparte na modelu

Udostępnia informacje o obecnie uruchomionej aplikacji i zapewnia kontrolę nad zachowaniem aplikacji.

Opis

Podobnie jak kontrolka, obiekt Aplikacja zapewnia właściwości identyfikujące wyświetlany ekran i monitujące użytkownika o zapisanie zmian, aby nie zostały utracone. Każda aplikacja ma obiektu Aplikacji.

Istnieje możliwość wpisywania formuł niektórych właściwości obiektu Aplikacji. W górnej części okienka Widoku drzewa wybierz obiekt Aplikacji, tak jak każdy inny formant lub ekran. Wyświetl i wyedytuj jedną z właściwości obiektu, wybierając ją na liście rozwijanej znajdującej się na lewo od paska formuł.

Obiekt aplikacja w okienku widoku drzewa.

Właściwość ActiveScreen

Właściwość ActiveScreen identyfikuje ekran, który jest wyświetlany.

Ta właściwość zwraca obiekt ekranu. Użyj go do odwołania do właściwości obecnie wyświetlanego ekranu, takich jak nazwa przy użyciu formuły App.ActiveScreen.Name. Tę właściwość można także porównać z innym obiektem ekranu, na przykład ze formułą porównawczą App.ActiveTest = Screen2, aby przetestować, czy ekran Screen2 jest aktualnie wyświetlanym ekranem.

Użyj funkcji Back lub Navigate, aby zmienić wyświetlany ekran.

Właściwość BackEnabled

Właściwość BackEnabled zmienia sposób, w jaki aplikacja reaguje na gest cofnięcia urządzenia (przesunięcie lub użycie sprzętowego przycisku cofnięcia na urządzeniach z systemem Android, przesunięcie od lewej na urządzeniach z systemem iOS) podczas uruchamiania w Power Apps Mobile. Po włączeniu tej funkcji gest cofnięcia urządzenia powoduje powrót do ostatnio wyświetlanego ekranu, podobnie jak w przypadku formuły Wstecz. Po wyłączeniu gest cofnięcia urządzenia powoduje powrót użytkownika do listy aplikacji.

Właściwości ConfirmExit

Nikt nie chce utracić żadnych zmian, które nie zostały zapisane. Aby ostrzec użytkownika przed zamknięciem aplikacji, należy użyć właściwości ConfirmExit i ConfirmExitMessage.

Uwaga

  • ConfirmExit nie działa w aplikacjach osadzonych, na przykład w Power BI i SharePoint.
  • Obecnie te właściwości mogą polegać na sprawdzeniu tylko pierwszego ekranu, jeśli jest włączona funkcja zapoznawcza Opóźnionego ładowania (domyślnie w przypadku nowych aplikacji). W przypadku odwołań Power Apps Studio nie wyświetla komunikatu o błędzie, ale wynikowa opublikowana aplikacja nie jest otwierana w Power Apps Mobile lub w przeglądarce. Aktywnie pracujemy nad usunięciem tego ograniczenia. Tymczasem możesz wyłączyć Opóźnione ładowanie w Ustawienia>Nadchodzące funkcje (w Wersja zapoznawcza).

ConfirmExit

ConfirmExit jest właściwością logiczną, która, gdy ma wartość prawda, otwiera okno dialogowe potwierdzenia przed zamknięciem aplikacji. Domyślnie ta właściwość ma wartość fałsz i nie jest wyświetlane okno dialogowe.

W sytuacjach, gdy użytkownik może mieć niezapisane zmiany w aplikacji, użyj tej właściwości, aby wyświetlić okno dialogowe potwierdzenia przed opuszczeniem aplikacji. Należy stosować formułę, która może sprawdzać zmienne i właściwości formantów (na przykład Unsaved właściwość kontrolki Edit form).

Okno dialogowe potwierdzenia jest wyświetlane w dowolnej sytuacji, w której dane mogły zostać utracone, tak jak w poniższych przykładach:

  • Uruchomiona jest funkcja Exit.
  • Jeśli aplikacja działa w przeglądarce:
    • Zamknięcie przeglądarki lub karty przeglądarki, w której działa aplikacja.
    • Wybierz przycisk Wstecz przeglądarki.
    • Uruchamiamy funkcję Launch poprzez LaunchTarget z Samoobsługa.
  • Jeśli aplikacja działa w Power Apps Mobile (iOS lub Android):
    • Szybko przesuń palcem, aby przejść do innej aplikacji na Power Apps Mobile.
    • Wybranie przycisku wstecz na urządzeniu Android.
    • Korzystanie z funkcji Launch w celu uruchomienia innej aplikacji kanwy.

Dokładny podgląd okna dialogowego z potwierdzeniem może być różny w zależności od urządzeń i wersji Power Apps.

Okno dialogowe potwierdzenia nie pojawia się w Power Apps Studio.

ConfirmExitMessage

Okno dialogowe potwierdzenia zawiera domyślnie komunikat rodzajowy, na przykład „Użytkownik może mieć niezapisane zmiany”. w języku użytkownika.

W celu udostępnienia niestandardowego komunikatu w oknie dialogowym potwierdzenia należy użyć ConfirmExitMessage. Jeśli ta właściwość nie jest pusta, zostanie użyta wartość domyślna. Niestandardowe wiadomości są w razie potrzeby obcinane, aby zmieściły się w oknie dialogowym potwierdzenia, dlatego ogranicz wiadomość maksymalnie do kilku wierszy.

W przeglądarce okno dialogowe potwierdzenia może być wyświetlane z komunikatem ogólnym z poziomu przeglądarki.

Uwaga

Obiekt aplikacji ma jeszcze dwie właściwości OnMessage i BackEnabled, które są eksperymentalne. Te właściwości zostaną ostatecznie usunięte z obiektu aplikacji. Nie zaleca się używania tych właściwości w środowisku produkcyjnym.

Przykład

  1. Utwórz aplikację zawierającą dwie kontrolki form, AccountForm i ContactForm.

  2. Dla objektu Aplikacja ustaw właściwość ConfirmExit na wyrażenie:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    To okno dialogowe jest wyświetlane, jeśli użytkownik zmodyfikuje dane w formularzu, a następnie próbuje zamknąć aplikację bez zapisywania wprowadzonych zmian.

    Ogólne okno dialogowe potwierdzenia.

  3. Dla objektu Aplikacja ustaw właściwość ConfirmExitMessage na formułę:

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

    To okno dialogowe jest wyświetlane, jeśli użytkownik zmodyfikuje dane w formularzu Konta, a następnie próbuje zamknąć aplikację bez zapisywania wprowadzonych zmian.

    Okno dialogowe potwierdzenia specyficzne dla formularza.

Właściwość formuły

Użyj nazwanych formuł we właściwości Formuły, aby zdefiniować formułę, która może być używana w całej aplikacji.

W Power Apps właściwości kontrolek są oparte na formułach. Na przykład, aby ustawić jednolity kolor tła w całej aplikacji, możesz ustawić właściwość Wypełnienie dla każdej z nich na wspólny wzór:

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

Przy tak wielu miejscach, w których może pojawić się ta formuła, uaktualnianie ich wszystkich w razie potrzeby staje się żmudne i podatne na błędy. Zamiast tego możesz utworzyć zmienną globalną w OnStart, aby raz ustawić kolor, a potem używać tej wartości w całej aplikacji:

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

Chociaż ta metoda jest lepsza, to jednak zależy od tego, czy OnStart zostanie uruchomiony przed ustaleniem wartości dla BGColor. BGColor może być również zmieniony w jakimś zakątku aplikacji, którego twórca nie jest świadomy, może to być zmiana dokonana przez kogoś innego, co może być trudne do wytropienia.

Nazwane formuły stanowią alternatywę. Tak jak zwykle piszemy control-property = expression, możemy zamiast tego napisać name = expression, a następnie używać name w całej aplikacji, zastępując expression. Definicje tych formuł znajdują się we właściwości Formuły:

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

Zalety stosowania nazwanych formuł to m.in:

  • Wartość formuły jest zawsze dostępna. Nie ma zależności czasowej, nie ma OnStart, które musi być uruchomione jako pierwsze, zanim wartość zostanie ustawiona, nie ma czasu, w którym wartość formuły jest nieprawidłowa. Formuły nazwane mogą odwoływać się do siebie w dowolnej kolejności, o ile nie tworzą kolistego odwołania. Mogą one być obliczane równolegle.
  • Wartość formuły jest zawsze aktualna. Formuła może wykonywać obliczenia zależne od właściwości kontrolki lub rekordów bazy danych, a gdy one się zmieniają, wartość formuły jest automatycznie aktualizowana. Nie musisz ręcznie aktualizować wartości, tak jak w przypadku zmiennej. A formuły przeliczają się tylko wtedy, gdy są potrzebne.
  • Definicja formuły jest niezmienna. Definicja w Formułach jest jedynym źródłem prawdy i nie można zmienić jej wartości w innym miejscu aplikacji. W przypadku zmiennych możliwe jest, że jakiś kod niespodziewanie zmieni wartość, ale nie jest to możliwe w przypadku formuł nazwanych.
  • Obliczenie formuły może być odroczone. Ponieważ wartość jest niezmienna, może być zawsze obliczana w razie potrzeby, co oznacza, że nie jest obliczana, dopóki nie będzie potrzebna. Wartości formuł, które nie są używane do momentu wyświetlenia ekranu2 aplikacji, nie muszą być obliczane do momentu, gdy ekran2 jest widoczny. Wykluczenie tej pracy może poprawić czas ładowania aplikacji. Formuły nazwane są deklaratywne i dają systemowi możliwość optymalizacji sposobu i czasu ich obliczania.
  • Nazwy formuł to koncepcja Excela. Power Fx wykorzystuje koncepcje Excela tam, gdzie to możliwe, ponieważ tak wiele osób dobrze zna Excela. Formuły nazwane są odpowiednikiem nazwanych komórek i nazwanych formuł w Excelu, zarządzanych za pomocą Menedżera nazw. Przeliczają się automatycznie jak w arkuszu kalkulacyjnym, podobnie jak właściwości kontrolne.

Formuły nazwane są zdefiniowane, jedna po drugiej, we właściwości Formuły, a każda z nich kończy się średnikiem. Typ formuły jest wnioskowany na podstawie typów wyrażenia, które jest oparte na typach elementów w wyrażeniu i sposobie ich użycia. Na przykład, te nazwane formuły pobierają z Dataverse przydatne informacje o aktualnym użytkowniku:

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' );

Jeśli formuła dla UserTitle wymaga aktualizacji, można to łatwo zrobić w tym jednym miejscu. Jeśli UserPhone nie jest potrzebny w aplikacji, to nie są wykonywane połączenia z tabelą Użytkownicy w Dataverse. Nie ma kary za włączenie definicji formuły, która nie jest używana.

Niektóre ograniczenia nazwanych formuł:

  • Nie mogą używać funkcji zachowania ani w inny sposób powodować efektów ubocznych w aplikacji.
  • Nie mogą tworzyć kolistego odniesienia. Posiadanie a = b; i b = a; w tej samej aplikacji jest niedozwolone.

Właściwość OnError

Użyj OnError do podjęcia działań po wykrytym błędzie. Umożliwia globalnej szansy sprzedaży na wyświetlonej przez użytkownika końcowego transparentu o błędzie. Można go również użyć do logowania błędu przy użyciu funkcjiTrace lub zapisu do bazy danych lub usługi sieci web.

Wynik każdej oceny formuły jest sprawdzany pod kątem błędu. Jeśli jest to błąd, OnError zostanie ocenione z tymi samymi zmiennymi zakresu FirstError i AllErrors, które byłyby obecne, gdyby cała formuła była opakowana w funkcja IfError.

Jeśli OnError jest puste, wyświetlany jest domyślny baner błędu z FirstError.Message błędu. Zdefiniowanie formuły OnError powoduje zastąpienie tego zachowania, co umożliwia makerowi obsługę raportowania błędów w takiej formie, w zależności od potrzeb. O zachowanie domyślne może zostać żądane w trybie OnError przez ponowne ustawienie błędu za pomocą funkcją Error. Jest to przydatne, jeśli niektóre błędy mają być odfiltrowane lub obsługiwane w inny sposób, podczas gdy inne mają zostać przepuszczone.

OnError nie może zastąpić błędu w obliczeniach tak, jak może to zrobić IfError. W momencie wywoływania błędu OnError błąd został już przetworzona i został przetwarzany w ramach obliczeń formuł. *OnError* steruje raportowaniem błędów.

Formuły OnError są szacowane równocześnie i możliwe jest, że ich ocena może się nakładać na przetwarzanie innych błędów. Na przykład jeśli zmienna globalna zostanie ustawiona na górze zestawu OnError i przeczytaj ją później w tym samym formułie, wartość może ulec zmianie. Użyj funkcji With, aby utworzyć lokalną wartość dla formuły o nazwie.

Mimo że każdy błąd jest przetwarzany indywidualnie przez OnError, domyślny transparent błędu może nie być wyświetlany osobno dla każdego z tych błędów. Aby uniknąć wyświetlania jednocześnie zbyt wielu transparentów o błędach, ten sam błąd nie spowoduje wyzwoleń nowego bannera błędu, jeśli był ostatnio wyświetlany.

Przykład

Rozważ formant Label i kontrolkę Slider, które są powiązane ze sobą za pośrednictwem formuły:

Label1.Text = 1/Slider1.Value

Kontrolka etykiety i suwaka powiązana z formułą Label1.Text = 1/Slider1.Value.

Suwak domyślnie ma wartość 50. Jeśli suwak zostanie przesunięty na wartość 0, w Label1 nie będzie wyświetlana żadna wartość, a zostanie wyświetlany banner błędu:

Kontrolka Slider przeniosła się do wartości 0, co spowoduje podział na wartość zera i bannera błędu.

Sprawdźmy szczegółowo, co to jest opis.

  1. Użytkownik przeniosł slajd w lewo, a właściwość Slide1.Value zmieniono na 0.
  2. Label1.Text został automatycznie ponownie oceniany. Wystąpił podział według zera, co generuje błąd.
  3. W tej formule nie ma IfError. Błąd podziału według zera jest zwracany przez analizę formuły.
  4. Label1.Text nie może wyświetlić niczego dla tego błędu, więc pokazuje stan pusty.
  5. Wywoływane jest także OnError. Ponieważ nie ma programu obsługi, standardowy baner błędu jest wyświetlany z informacją o błędzie.

W razie potrzeby można też zmodyfikować formułę na Label1.Text = IfError( 1/Slider1.Value, 0 ). Nie spowoduje to wystąpienia żadnego błędu ani bannera błędu. Nie możemy zmienić wartości błędu z OnError, ponieważ w tym momencie błąd już wystąpił, pozostaje tylko kwestia tego, jak zostanie zgłoszony.

Jeśli dodamy procedurę obsługi OnError, nie będzie to miało wpływu przed krokiem 5, ale może wpłynąć na sposób zgłaszania błędu:

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

Formułę App.OnError ustawioną w celu wygenerowania Trace.

Dzięki temu z punktu widzenia użytkownika aplikacji nie będzie żadnych błędów. Ale błąd zostanie dodany do śledzenia Monitora wraz ze źródłem informacji o błędzie z FirstError:

Kontrolka Slider przeniosła się do wartości 0, co spowoduje podział na wartość zera i bannera błędu.

Jeśli chcielibyśmy również wyświetlić ten sam domyślny baner błędu oprócz śledzenia, możemy ponownie zgłosić błąd za pomocą funkcji Error po wywołaniu Trace tak samo, jak w przypadku Trace nie było:

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

Właściwość OnStart

Uwaga

Użycie właściwości OnStart może spowodować problemy z wydajnością podczas ładowania aplikacji. Jesteśmy w trakcie tworzenia alternatyw dla dwóch głównych przyczyn używania właściwości — buforowanie danych i ustawianie globalnych zmiennych. Utworzono już alternatywę, która umożliwia zdefiniowanie pierwszego ekranu, który będzie wyświetlany w Navigate. W zależności od kontekstu ta właściwość może być domyślnie wyłączona. Jeśli jej nie widać i musisz z niej korzystać, sprawdź ustawienia zaawansowane aplikacji, aby znaleźć przełącznik i ją włączyć. Można także używać właściwości ekranu OnVisible.

Właściwość OnStart jest uruchamiana, gdy użytkownik uruchamia aplikację. Ta właściwość jest często używana do wykonywania następujących zadań:

  • Pobieranie danych i buforowanie ich w kolekcjach za pomocą funkcji Collect.
  • Ustawienie zmiennych globalnych przy użyciu funkcji Set.

Ta formuła jest wyznaczana przed wyświetleniem pierwszego ekranu. Nie załadowano ekranu, więc nie można ustawić zmiennych kontekstu za pomocą funkcji UpdateContext. Zmienne kontekstowe można jednak przekazać za pomocą funkcji Navigate.

Po zmianie właściwości OnStart należy ją przetestować, przesuwając kursor nad obiekt Aplikacja w okienku Widoku drzewa, wybierając wielokropek (...), a następnie wybierając opcję Uruchom OnStart. Inaczej niż w czasie ładowania aplikacji po raz pierwszy istniejące kolekcje i zmienne będą już ustawione. Aby rozpocząć pracę z pustymi kolekcjami, należy użyć funkcji ClearCollect zamiast funkcji Collect.

Menu skrótów aplikacji — element na potrzeby uruchamiania OnStart

Uwaga

  • Używanie funkcji Navigate we właściwości OnStart zostało wycofane. Istniejące aplikacje nadal będą działać. Przez ograniczony czas nadal można ją włączyć w ustawieniach aplikacji (dostępne w obszarze Wycofane). Takie użycie funkcji Navigate może jednak spowodować opóźnienia w ładowaniu aplikacji, ponieważ wymusza to na systemie zakończenie oceny OnStart przed wyświetleniem pierwszego ekranu. Zamiast tego należy użyć właściwości StartScreen w celu obliczenia wyświetlanego pierwszego ekranu.
  • Wycofany przełącznik zostanie wyłączony w przypadku aplikacji utworzonych przed marcem 2021 r., gdzie dodano opcje Navigate do OnStart między marcem 2021 r. a datą obecną. Podczas edytowania takich aplikacji w aplikacji Power Apps Studio może wystąpić błąd. Włącz wymieniony powyżej przełącznik Wycofane w celu wyczyszczenia tego błędu.

Właściwość StartScreen

Uwaga

StartScreen nie pojawi się na liście właściwości, gdy wycofana opcja Ulepszony pasek formuły jest włączona. Aby wyłączyć rozszerzony pasek formuły, przejdź do pozycji Ustawienia>Nadchodzących funkcji>Wycofane> wyłącz przełącznik Ulepszony pasek formuły, gdy chcesz użyć StartScreen.

Właściwość StartScreen określa, który ekran będzie wyświetlany jako pierwszy. Jest ona sprawdzana po załadowaniu aplikacji i zwraca obiekt ekranu, który ma być wyświetlany. Domyślnie ta właściwość będzie pusta, a pierwszy ekran w widoku Drzewa programu Studio będzie wyświetlany jako pierwszy.

StartScreen to właściwość przepływu danych, która nie może zawierać funkcji zachowania. Wszystkie funkcje przepływu danych są dostępne, w szczególności użyj tych funkcji i sygnałów w celu określenia, którym ekran ma być wyświetlany jako pierwszy:

  • Funkcja Param do odczytu parametrów używanych do uruchamiania aplikacji.
  • Funkcja User do odczytu informacji o bieżącym użytkowniku.
  • LookUp, Filter, CountRows, Max i inne funkcje odczytujące ze źródła danych.
  • Wszystkie interfejsy API są wywołania za pośrednictwem łącznika, ale należy zachować ostrożność, by szybko zwraca.
  • Sygnały, takie jak Połączenie, Kompas i Aplikacja.

Uwaga

Zmienne i kolekcje globalne, w tym zmienne utworzone w opcji OnStart, nie są dostępne w StartScreen. Istnieją deklaratywne alternatywy do tego celu, które będą wkrótce dostępne. Aby wyrazić opinię na temat tego ograniczenia, przejdź na forum społeczności Power Apps.

Jeśli element StartScreen zwraca błąd, pierwszy ekran w widoku Drzewa programu Studio będzie wyświetlany, jakby właściwość StartScreen nie została ustawiona. Użyj funkcji IfError, aby wyłapać wszelkie błędy i przekierować do odpowiedniego ekranu z błędami.

Po zmianie właściwości StartScreen w programie Studio należy ją przetestować, przesuwając kursor nad obiekt Aplikacja w okienku Widoku drzewa, wybierając wielokropek (...), a następnie wybierając opcję Nawiguj do StartScreen. Ekran zmieni się tak, jak podczas ładowania aplikacji.

Przejdź do obiektu StartScreen

Przykłady

Screen9

Wskazuje, że ekran Screen9 powinien być wyświetlany jako pierwszy przy każdym uruchamianiu aplikacji.

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

Sprawdza, czy „tryb administracyjny” został ustawiony przez użytkownika i używa go do podjęcia decyzji o tym, czy w pierwszej kolejności ma być wyświetlany ekran główny, czy ekran administratora.

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

Sprawdza, czy uczestnik konferencji jest członkiem personelu i kieruje go do odpowiedniego ekranu startowego.

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

Kieruje aplikację na podstawie wywołania interfejsu API do ekranu ForestScreen albo OceanScreen. Jeśli interfejs API zakończy się niepowodzeniem z dowolnego powodu, zamiast tego zostanie użyty ekran ErrorScreen.

Właściwość StudioVersion

Właściwość StudioVersion służy do wyświetlania lub logowania wersji Power Apps Studio używanej do publikowania aplikacji. Może to być przydatne podczas debugowania i upewniania się, że aplikacja została ponownie opublikowana przy użyciu najnowszej wersji Power Apps Studio.

StudioVersion jest zwracana jako tekst. Format tekstu może się zmieniać w czasie i powinien być traktowane jak całość; należy unikać wyodrębniania pojedynczych części.