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ł.
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
Utwórz aplikację zawierającą dwie kontrolki form, AccountForm i ContactForm.
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.
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.
Skonfiguruj klucz oprzyrządowania dla Application Insights
Aby wyeksportować do aplikacji dzienniki wygenerowane przez system do Application Insights, musisz skonfigurować klucz instrumentacji dla aplikacji kanwy.
- Otwórz aplikację w celu edycji w Power Apps Studio.
- Wybierz obiekt Aplikacja w widoku drzewa w lewym okienku nawigacji.
- Wprowadź klucz instrumentacji w okienku właściwości.
Jeśli dane nie są wysyłane do usługi App Insights, skontaktuj się z administratorem Power Platform i sprawdź, czy usługa App Insights jest wyłączona na poziomie dzierżawcy.
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
Ważne
- Funkcje zdefiniowane przez użytkownika są eksperymentalne.
- Funkcje eksperymentalne nie są przeznaczone do użytku produkcyjnego i mogą nie być kompletne. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu można szybciej uzyskać do nich dostęp i przekazać opinie na ich temat. Więcej informacji: Zrozumienie eksperymentalnych, podglądowych i wycofanych funkcji w aplikacjach kanwy
- Zachowanie opisane w tym artykule jest dostępne tylko wtedy, gdy funkcja eksperymentalna Funkcje zdefiniowane przez użytkownika w Ustawienia > Nadchodzące funkcje > Eksperymentalne jest włączona (domyślnie jest wyłączona).
- Twoja opinia jest dla nas cenna. Daj nam znać, co myślisz w forum społeczności funkcji eksperymentalnych Power Apps.
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( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;
- 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 [ ; Formula2 ... ] };
- 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
- Typy zdefiniowane przez użytkownika to funkcja eksperymentalna.
- Funkcje eksperymentalne nie są przeznaczone do użytku produkcyjnego i mogą nie być kompletne. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu można szybciej uzyskać do nich dostęp i przekazać opinie na ich temat. Więcej informacji: Zrozumienie eksperymentalnych, podglądowych i wycofanych funkcji w aplikacjach kanwy
- Zachowanie opisane w tym artykule jest dostępne tylko wtedy, gdy funkcja eksperymentalna Typy zdefiniowane przez użytkownika w Ustawienia > Nadchodzące funkcje > Eksperymentalne jest włączona (domyślnie jest wyłączona).
- Twoja opinia jest dla nas cenna. Daj nam znać, co myślisz w forum społeczności funkcji eksperymentalnych Power Apps.
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 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. Użyj metody ponownego rzucania, jeśli niektóre błędy mają zostać odfiltrowane lub obsłużone 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. 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ą 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
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:
Sprawdźmy szczegółowo, co to jest opis.
- Użytkownik przeniosł slajd w lewo, a właściwość Slide1.Value zmieniono na 0.
- Label1.Text został automatycznie ponownie oceniany. Wystąpił podział według zera, co generuje błąd.
- W tej formule nie ma IfError. Błąd podziału według zera jest zwracany przez analizę formuły.
- Label1.Text nie może wyświetlić niczego dla tego błędu, więc pokazuje stan pusty.
- 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 )
. Użycie IfError spowoduje brak błędu lub baner 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}" )
Dzięki obsłudze OnError z perspektywy użytkownika aplikacji nie wystąpi żaden błąd. Ale błąd zostanie dodany do śledzenia Monitora wraz ze źródłem informacji o błędzie z FirstError:
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. Domyślnie, gdy nieblokująca reguła OnStart jest włączona, umożliwia ona jednoczesne uruchamianie funkcji OnStart z innymi regułami aplikacji. Tak więc, jeśli zmienne, do których odwołują się inne reguły aplikacji, są inicjowane w funkcji OnStart, mogą nie być jeszcze w pełni zainicjowane. Ponadto istnieje możliwość, że ekran może być renderowany i interaktywny przed zakończeniem wykonywania funkcji Screen.OnVisible lub App.OnStart , zwłaszcza jeśli ich ukończenie zajmuje dużo czasu.
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.
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 wyłącznik awaryjny, aby usunąć ten błąd.
Właściwość 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. Nazwane formuły są dostępne i często stanowią lepszą alternatywę dla ponownego użycia formuł w aplikacji.
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.
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.