Udostępnij przez


Obiekt App w Power Apps

Dotyczy: aplikacje kanwy

Uzyskaj informacje o aktualnie uruchomionej aplikacji i kontroluj zachowanie aplikacji.

Opis

Podobnie jak kontrolka, obiekt Aplikacji ma właściwości, które identyfikują, który ekran jest wyświetlany i monituje o zapisanie zmian, dzięki czemu nie zostaną utracone. Każda aplikacja ma obiektu Aplikacji.

Pisanie formuł dla niektórych właściwości obiektu App . W górnej części okienka Widoku drzewa wybierz obiekt Aplikacji, tak jak każdy inny formant lub ekran. Aby wyświetlić lub edytować jedną z właściwości obiektu, wybierz ją z listy rozwijanej po lewej stronie paska formuły.

Zrzut ekranu przedstawiający obiekt Aplikacji wybrany w okienku Widok drzewa. Okienko właściwości jest widoczne.

Właściwość ActiveScreen

Właściwość ActiveScreen identyfikuje aktualnie wyświetlany ekran.

Ta właściwość zwraca obiekt ekranu. Służy do odwołowania się do właściwości bieżącego ekranu, takich jak nazwa z formułą App.ActiveScreen.Name. Możesz również porównać tę właściwość z innym obiektem ekranu, na przykład z formułą porównania App.ActiveScreen = Screen2 , aby sprawdzić, czy ekran Screen2 jest bieżącym ekranem.

Użyj funkcji Wstecz lub Navigate , aby przełączyć wyświetlany ekran.

Właściwość BackEnabled

Właściwość BackEnabled zmienia sposób, w jaki aplikacja reaguje na gest wstecz urządzenia (szybko przesuń lub użyj przycisku wstecz sprzętu na urządzeniach z systemem Android lub przesuń palcem z lewej strony na urządzeniach z systemem iOS) podczas uruchamiania w usłudze Power Apps dla urządzeń przenośnych. Po włączeniu gest wstecz urządzenia wraca do ekranu, który był ostatnio wyświetlany, co jest podobne do formuły Wstecz . Po wyłączeniu gest powrotu urządzenia przenosi użytkownika na listę aplikacji.

Właściwości ConfirmExit

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

Uwaga

  • Element ConfirmExit nie działa w aplikacjach osadzonych na przykład w usługach Power BI i SharePoint.
  • Element ConfirmExit nie jest obsługiwany na stronach niestandardowych.
  • Teraz te właściwości mogą odwoływać się do kontrolek tylko na pierwszym ekranie, jeśli funkcja opóźnionego ładowania w wersji zapoznawczej jest włączona (która jest domyślnie dostępna dla nowych aplikacji). Jeśli odwołujesz się do innych ekranów, program Power Apps Studio nie wyświetla błędu, ale opublikowana aplikacja nie jest otwarta w usłudze Power Apps Mobile ani w przeglądarce. Pracujemy nad zniesieniem tego ograniczenia. W międzyczasie wyłącz opóźnione ładowanie w obszarze Ustawienia>Nadchodzące funkcje (w obszarze Wersja zapoznawcza).

ConfirmExit

ConfirmExit jest właściwością logiczną, która po true 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.

Gdy użytkownik może mieć niezapisane zmiany w aplikacji, użyj tej właściwości, aby wyświetlić okno dialogowe potwierdzenia przed zamknięciem aplikacji. Użyj formuły, która sprawdza zmienne i właściwości kontrolki (na przykład właściwość Niezapisane kontrolki Formularz edycji ).

Okno dialogowe potwierdzenia jest wyświetlane w dowolnej sytuacji, w której dane mogą zostać utracone, takie jak:

  • Uruchom funkcję Exit .
  • Jeśli aplikacja działa w przeglądarce:
    • Zamknij przeglądarkę lub kartę przeglądarki, na której działa aplikacja.
    • Wybierz przycisk Wstecz przeglądarki.
    • Uruchom funkcję Launch z elementem LaunchTarget of Self.
  • Jeśli aplikacja działa w usłudze Power Apps Mobile (iOS lub Android):
    • Szybko przesuń, aby przełączyć się do innej aplikacji w usłudze Power Apps Mobile.
    • Wybierz przycisk Wstecz na urządzeniu z systemem Android.
    • Uruchom funkcję Launch , aby uruchomić inną aplikację kanwy.

Dokładny wygląd okna dialogowego potwierdzenia może się różnić w zależności od urządzeń i wersji usługi Power Apps.

Okno dialogowe potwierdzenia nie jest wyświetlane w programie 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 komunikaty są obcinane zgodnie z potrzebami, aby zmieścić się w oknie dialogowym potwierdzenia, więc zachowaj komunikat do kilku wierszy najwięcej.

W przeglądarce okno dialogowe potwierdzenia może wyświetlić ogólny komunikat z przeglądarki.

Uwaga

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

Przykład

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

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Okno dialogowe pokazuje, czy użytkownik zmienia dane w obu formularzach, a następnie próbuje zamknąć aplikację bez zapisywania tych zmian. Użytkownik zmienia dane w obu formularzach, a następnie próbuje zamknąć aplikację bez zapisywania tych zmian.

    [!div clas1. Dla objektu Aplikacja ustaw właściwość ConfirmExitMessage na formułę:

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

    Okno dialogowe pokazuje, czy użytkownik zmienia dane w formularzu Konto, a następnie próbuje zamknąć aplikację bez zapisywania tych zmian.

    Okno dialogowe potwierdzenia specyficzne dla formularza.

Konfigurowanie parametrów połączenia dla usługi Application Insights

Aby wyeksportować dzienniki aplikacji generowane przez system do usługi Application Insights, skonfiguruj parametry połączenia dla aplikacji kanwy.

  1. Otwórz aplikację w celu edycji w Power Apps Studio.
  2. Wybierz obiekt Aplikacja w widoku drzewa w lewym okienku nawigacji.
  3. Wprowadź parametry połączenia w okienku właściwości.

Jeśli dane nie są wysyłane do usługi Application Insights, skontaktuj się z administratorem platformy Power Platform i sprawdź, czy usługa App Insights jest wyłączona na poziomie dzierżawy.

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 formuły określają wartość właściwości kontrolki. 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że się zdarzyć, że jakiś kod nieoczekiwanie zmieni wartość, ale ta trudna do debugowania sytuacja nie jest możliwa w przypadku nazwanych formuł.
  • 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. Obliczają one ponownie automatycznie, podobnie jak komórki arkusza kalkulacyjnego i właściwości sterowania.

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 elementów w formule i sposobu ich łącznego używania. 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.

Funkcje zdefiniowane przez użytkownika

Power Fx zawiera długą listę wbudowanych funkcji, takich jak If, Text i Set. Funkcje zdefiniowane przez użytkownika umożliwiają pisanie własnych funkcji, które przyjmują parametry i zwracają wartość, tak jak robią to funkcje wbudowane. O funkcjach zdefiniowanych przez użytkownika można myśleć jako o rozszerzeniu nazwanych formuł, które dodaje parametry i obsługuje formuły zachowania.

Można na przykład zdefiniować nazwaną formułę zwracającą książki beletrystyczne z biblioteki:

Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
            { Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];

LibraryFiction = Filter( Library, Genre = "Fiction" );

Bez parametrów musielibyśmy zdefiniować osobne nazwane formuły dla każdego gatunku. Ale zamiast tego sparametryzujmy naszą nazwaną formułę:

LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );

LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );

Teraz możemy wywołać LibraryGenre( "Fiction" ), LibraryGenre( "Reference" ) lub filtrować inne gatunki za pomocą jednej funkcji zdefiniowanej przez użytkownika.

Składnia jest następująca:

FunctionName( [ Nazwa_parametru1: ParameterType1 [ , Nazwa_parametru2: ParametrType2 ... ] ] ) : ReturnType = ;

  • FunctionName – Wymagane. Nazwa funkcji zdefiniowanej przez użytkownika.
  • NazwaParametru (lub nazwy parametrów) – opcjonalne. Nazwa parametru funkcji.
  • ParameterType – opcjonalne. Nazwa typu, albo wbudowany nazwa typu danych, nazwa źródła danych lub typ zdefiniowany za pomocą funkcji Typ.
  • ReturnType – wymagane. Typ wartości zwracanej z funkcji.
  • Formuła – wymagane. Formuła obliczająca wartość funkcji na podstawie parametrów.

Każdy parametr i dane wyjściowe z funkcji definiowanej przez użytkownika muszą być określonego typu. W tym przykładzie SelectedGenre: Text definiuje pierwszy parametr naszej funkcji jako typu Text, a SelectedGenre to nazwa parametru, który jest używany w treści dla operacji Filtr. Zobacz Typy danych, aby zapoznać się z obsługiwanymi nazwami typów. Funkcja Typ służy do tworzenia typu agregującego dla naszej biblioteki, dzięki czemu możemy zwrócić tabelę książek z naszej funkcji.

Zdefiniowaliśmy LibraryType jako tabelę typu rekordów w liczbie mnogiej. Jeśli chcemy przekazać pojedynczą książkę do funkcji, możemy wyodrębnić typ rekordu dla tej tabeli za pomocą funkcji RecordOf:

BookType := Type( RecordOf( LibraryType ) );

IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);

Dopasowanie rekordów dla parametrów funkcji jest ściślejsze niż w innych częściach Power Fx. Pola wartości rekordu muszą być odpowiednim podzbiorem definicji typu i nie mogą zawierać dodatkowych pól. Na przykład IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) spowoduje błąd.

Należy pamiętać, że rekursja nie jest jeszcze obsługiwana przez funkcje zdefiniowane przez użytkownika.

Zachowanie funkcji zdefiniowanych przez użytkownika

Nazwane formuły i większość funkcji zdefiniowanych przez użytkownika nie obsługują funkcji zachowania z efektami ubocznymi, takimi jak Set lub Notify. Ogólnie rzecz biorąc, najlepiej jest unikać aktualizacji stanu, jeśli to możliwe, zamiast tego polegając na wzorcach programowania funkcjonalnego i pozwalając Power Fx na automatyczne przeliczanie formuł w razie potrzeby. Ale są przypadki, w których jest to nieuniknione. Aby uwzględnić logikę zachowania w funkcji zdefiniowanej przez użytkownika, umieść treść w nawiasach klamrowych:

Spend( Amount: Number ) : Void = {
    If( Amount > Savings, 
        Error( $"{Amount} is more than available savings" ),
        Set( Savings, Savings - Amount );
        Set( Spent, Spent + Amount) 
    );
}

Teraz możemy wywołać Spend( 12 ), aby sprawdzić, czy mamy 12 w naszych oszczędnościach, a jeśli tak, obciążyć je o 12 i dodać 12 do zmiennej Spent. Zwracanym typem tej funkcji jest Void, ponieważ nie zwraca wartości.

Składnia funkcji zdefiniowanej przez użytkownika zachowania jest następująca:

FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Formuła 2 ... ] };

  • FunctionName – Wymagane. Nazwa funkcji zdefiniowanej przez użytkownika.
  • NazwaParametru (lub nazwy parametrów) – opcjonalne. Nazwa parametru funkcji.
  • ParameterType – opcjonalne. Nazwa typu, albo wbudowana nazwa typu danych, nazwa źródła danych, albo typ zdefiniowany za pomocą funkcji Type.
  • ReturnType – wymagane. Typ wartości zwracanej z funkcji. Użyj Void jeśli funkcja nie zwraca wartości.
  • Formuła – wartości wymagane. Formuła obliczająca wartość funkcji na podstawie parametrów.

Podobnie jak w przypadku wszystkich formuł Power Fx, wykonanie nie kończy się po napotkaniu błędu. Po wywołaniu funkcji Error, funkcja If zapobiega zmianom w Savings i Spent. Funkcja IfError może być również używana do zapobiegania dalszemu wykonywaniu po wystąpieniu błędu. Mimo że formuła zwraca Void, w przypadku wystąpienia problemu nadal może zwrócić błąd.

Typy zdefiniowane przez użytkownika

Ważne

Nazwane formuły mogą być używane z funkcją Type do tworzenia typów zdefiniowanych przez użytkownika. Użyj := zamiast = aby zdefiniować typ zdefiniowany przez użytkownika, na przykład Book := Type( { Title: Text, Author: Text } ). Zobacz funkcję Type, aby uzyskać więcej informacji i przykładów.

Właściwość OnError

Użyj funkcji OnError, aby podjąć akcję, gdy wystąpi błąd w dowolnym miejscu w aplikacji. 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.

W aplikacjach opartych na kanwie, 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 błąd OnError jest pusty, domyślny baner błędu zawiera komunikat FirstError.Message błędu. Zdefiniowanie formuły OnError zastępuje to zachowanie, aby twórca mógł obsługiwać raportowanie błędów zgodnie z potrzebami. Możesz zażądać domyślnego zachowania w elemercie OnError, ponownie tworząc błąd z funkcją Error. Użyj metody ponownego stosowania, jeśli chcesz odfiltrować lub obsłużyć niektóre błędy inaczej, ale niech inni przejdą.

OnError nie może zastąpić błędu w obliczeniach tak, jak może to zrobić IfError. Jeśli OnError zostanie wywołany, błąd już wystąpił i został już przetworzony przez obliczenia formuły, takie jak IfError; OnError kontroluje tylko raportowanie błędów.

Formuły OnError są oceniane współbieżnie i możliwe, że ich ocena może nakładać się na przetwarzanie innych błędów. Jeśli na przykład ustawisz zmienną globalną w górnej części błędu OnError i odczytasz ją później w tej samej formule, wartość mogła 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 błąd OnError, domyślny baner błędu może nie być wyświetlany indywidualnie dla każdego błędu. 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żesz również zmienić formułę na Label1.Text = IfError( 1/Slider1.Value, 0 ). Użycie błędu IfError oznacza, że nie ma baneru błędu ani błędu. Nie można zmienić wartości błędu z OnError , ponieważ wystąpił już błąd — funkcja OnError kontroluje tylko sposób raportowania.

Jeśli dodasz procedurę obsługi OnError , nie ma to wpływu na kroki przed krokiem 5, ale zmienia sposób zgłaszania błędu:

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

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

W przypadku tej procedury obsługi OnError użytkownik aplikacji nie widzi żadnego błędu. Ale błąd jest dodawany do śledzenia monitora, w tym źródło 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 chcesz również wyświetlić domyślny baner błędu wraz ze śladem, wróć ponownie błąd z funkcją Error po wywołaniu śledzenia , tak jakby ślad nie był tam :

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

Właściwość OnStart

Uwaga

Użycie właściwości OnStart może powodować problemy z wydajnością podczas ładowania aplikacji. Tworzymy alternatywy dla dwóch najważniejszych powodów używania tej właściwości — buforowania danych i konfigurowania zmiennych globalnych. Istnieje już alternatywa dla zdefiniowania pierwszego ekranu do wyświetlenia za pomocą funkcji Navigate. W zależności od kontekstu ta właściwość może być domyślnie wyłączona. Jeśli go nie widzisz i musisz go użyć, sprawdź ustawienia zaawansowane aplikacji, aby go włączyć. Można również użyć właściwości OnVisible ekranu. Domyślnie, gdy reguła OnStart nieblokowania jest włączona, umożliwia uruchomienie funkcji OnStart w tym samym czasie co inne reguły aplikacji. Dlatego jeśli zmienne, do których odwołuje się inne reguły aplikacji, są inicjowane w funkcji OnStart , mogą nie zostać jeszcze w pełni zainicjowane. Ponadto ekran może renderować i stać się interaktywny przed zakończeniem działania funkcji Screen.OnVisible lub App.OnStart , zwłaszcza jeśli ich zakończenie trwa długo.

Właściwość OnStart jest uruchamiana, gdy użytkownik uruchamia aplikację. Ta właściwość jest często używana do:

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

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

Po zmianie właściwości OnStart przetestuj ją, umieszczając wskaźnik myszy na obiekcie Aplikacja w okienku Widok drzewa , wybierając wielokropek (...), a następnie wybierając pozycję Uruchom w menu Start. W przeciwieństwie do tego, kiedy aplikacja ładuje się po raz pierwszy, istniejące kolekcje i zmienne są 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

  • Funkcja Navigate we właściwości OnStart jest wycofana. Istniejące aplikacje nadal działają. Przez ograniczony czas można ją włączyć w ustawieniach aplikacji (w obszarze Wycofano). Jednak użycie funkcji Navigate w ten sposób może spowodować opóźnienia ładowania aplikacji, ponieważ wymusza uruchomienie systemu przy użyciu polecenia OnStart przed wyświetleniem pierwszego ekranu. Zamiast tego użyj właściwości StartScreen , aby ustawić pierwszy wyświetlany ekran.
  • Wycofywany przełącznik jest wyłączony dla aplikacji utworzonych przed marcem 2021 r., gdzie dodano pozycję Navigate to OnStart od marca 2021 r. do tej pory. Podczas edytowania tych aplikacji w programie Power Apps Studio może pojawić się błąd. Włącz wyłącznik awaryjny, aby usunąć ten błąd.

Właściwość StartScreen

Właściwość StartScreen ustawia pierwszy ekran. Jest obliczany raz, gdy aplikacja ładuje i zwraca obiekt ekranu do pokazania. Domyślnie ta właściwość jest pusta, a pierwszy ekran w widoku Drzewa studio jest 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. Użyj tych funkcji i sygnałów, aby zdecydować, który 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.
  • Wywołania interfejsu API za pośrednictwem łącznika. Upewnij się, że wywołanie jest zwracane szybko.
  • Sygnały, takie jak Połączenie, Kompas i Aplikacja.

Uwaga

Zmienne globalne i kolekcje, w tym te utworzone w środowisku OnStart, nie są dostępne na ekranie StartScreen. Nazwane formuły są dostępne i często stanowią lepszą alternatywę dla ponownego użycia formuł w aplikacji.

Jeśli ekran StartScreen zwraca błąd, pierwszy ekran w widoku Drzewa studio jest wyświetlany tak, jakby ekran StartScreen nie został ustawiony. Użyj funkcji IfError , aby przechwycić błędy i przekierować do ekranu błędu.

Po zmianie ekranu StartScreen w programie Studio przetestuj go, umieszczając wskaźnik myszy na obiekcie Aplikacja w okienku Widok drzewa , wybierając wielokropek (...), a następnie wybierając pozycję Przejdź do ekranu StartScreen. Ekran zmienia się tak, jakby aplikacja właśnie załadowała.

Przejdź do obiektu StartScreen

Przykłady

Screen9

Screen9 jest wyświetlany jako pierwszy przy każdym uruchomieniu aplikacji.

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

Sprawdza, czy parametr "tryb administratora" jest ustawiony i używa go do określenia, czy ekran HomeScreen lub AdminScreen jest wyświetlany jako pierwszy.

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

Sprawdza, czy uczestnik jest członkiem personelu i kieruje ich do poprawnego ekranu podczas uruchamiania.

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, aplikacja używa ErrorScreen zamiast tego.

Właściwość StudioVersion

Użyj właściwości StudioVersion , aby wyświetlić lub zarejestrować wersję programu Power Apps Studio używaną do publikowania aplikacji. Ta właściwość pomaga podczas debugowania i sprawdzania, czy aplikacja jest ponownie publikowana przy użyciu najnowszej wersji programu Power Apps Studio.

Funkcja StudioVersion zwraca tekst. Format tego tekstu może ulec zmianie w miarę upływu czasu, więc traktuj go jako całość i nie wyodrębniaj poszczególnych części.