Funkcje AsType i IsType
Dotyczy: Aplikacje oparte na kanwie Aplikacje oparte na modelach Power Pages Power Platform CLI
Sprawdza odwołanie do rekordu dla określonego typu tabeli (IsType) i sprawdza odwołanie jako określony typ (AsType).
Notatka
Polecenia PAC CLI pac power-fx nie obsługują IsType.
Podpis
Funkcji AsType i IsType można używać do konwertowania odwołań do rekordów (na przykład odnośników polimorficznych Dataverse) i obiektów bez typu na obiekty o typie, które mogą być używane bezpośrednio.
Odniesienia do rekordów
Przeczytaj artykuł Opis odwołań do rekordów i wyszukiwań polimorficznych ułatwiających szersze wprowadzenie i więcej szczegółowych informacji.
Pole wyszukiwania zwykle odwołuje się do rekordów w określonej tabeli. Ponieważ typ tabeli jest dobrze ustalony, dostęp do pól wyszukiwania można uzyskać za pomocą prostej notacji kropkowej. Na przykład: First( Accounts ).'Primary Contact'.'Full Name' pochodzi z tabeli Konta do rekordu Kontakt podstawowy w tabeli Kontakty i wyodrębnia pole Imię i nazwisko.
Microsoft Dataverse obsługuje również pola wyszukiwania, które mogą odwoływać się do rekordów z zestawu tabel, jak po przykładach.
Pole wyszukiwania | Może odwołać się do |
---|---|
Właściciel | Użytkownicy lub Zespoły |
Klient | Konta lub Kontakty. |
Dotyczy | Konta, Kontakty, Artykuły merytoryczne, itp. |
W formułach aplikacji kanwy użyj odwołań do rekordów, aby pracować z wyszukiwaniami polimorficznymi. Ponieważ odwołanie do rekordu może odnosić się do różnych tabel, nie jest jasne, które pola są dostępne w czasie wykonywania podczas pisania formuły. Notacja Record.Field nie jest dostępna. Te formuły muszą zostać zaadaptowane do rekordów, które aplikacja napotyka podczas działania.
Funkcja IsType sprawdza, czy odwołanie do rekordu odwołuje się do określonego typu tabeli. Funkcja zwraca wartość logiczną PRAWDA lub FAŁSZ.
Funkcja AsType umożliwia użycie odwołania do rekordu jako określonego typu tabeli, czasami określanego jako rzutowanie do danej tabeli. Możesz użyć wyniku tak, jakby był rekordem tabeli i ponownie użyć notacji Record.Field, aby uzyskać dostęp do wszystkich pól tego rekordu. Błąd występuje, jeśli odwołanie nie jest określonego typu.
Użyj tych funkcji razem, aby najpierw przetestować typ tabeli rekordu, a następnie potraktować go jako rekord tego typu, aby pola były dostępne:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Funkcje te są potrzebne tylko w przypadku dostępu do pól odniesienia do rekordu. Można na przykład użyć odwołań do rekordów w funkcji Filter bez użycia IsType lub AsType:
Filter( Accounts, Owner = First( Users ) )
W podobny sposób można użyć odwołań do rekordów za pomocą funkcji Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Jeśli jest używany w kontekście rekordu, na przykład w kontrolce Gallery lub Edit form, w celu odwołania do typu tabeli może być używany globalny operator rozsyłania. Na przykład ta formuła obowiązuje w przypadku galerii, w której jest wyświetlana lista kontaktów, w których Nazwa firmy jest wyszukiwana przez Klienta:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
W przypadku obu funkcji typ określasz za pomocą nazwy źródła danych, które jest połączone z tabelą. Aby formuła została wykorzystana, należy także dodać do aplikacji źródło danych dla każdego typu, który ma być badany lub rzutowany. Na przykład tabelę Użytkownicy należy dodać jako element źródło danych, jeśli chcesz użyć typów IsType i AsType z odnośnikiem Właściciel i rekordów z tej tabeli. Możesz dodać tylko te źródła danych, których faktycznie używasz w swojej aplikacji; nie musisz dodawać wszystkich tabel, do których może odnosić się wyszukiwanie.
Jeśli odwołanie do rekordu jest puste, pole IsType zwraca wartość FALSE, a AsType zwraca puste pole. Wszystkie pola w pustym rekordzie będą puste.
Obiekty bez typu
Ważne
- Używanie AsType i IsType z obiektami bez typu jest funkcją eksperymentalną.
- 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.
Nietypowany obiekt z web API lub funkcji [ParseJSON] musi zostać przekonwertowany na typowany obiekt, zanim będzie można go użyć w funkcji Power Fx. Dostępne są następujące opcje:
- Niejawnie wpisz pole w punkcie, w którym jest używane. Na przykład obiekt jest konwertowany na liczbę, jeśli jest używany z operatorem
+
, jeśli można go przekonwertować na liczbę. Ta opcja może powodować nieoczekiwane konwersje i nie może konwertować rekordów i tabel jako całości. - Jawnie wpisz każde pole indywidualnie za pomocą funkcji Decimal, Text, DateTime, GUID i innych konstruktorów typów. Jest to najbardziej inwazyjne dla twoich formuł, ponieważ każde pole musi być obsłużone osobno.
- Jawnie wpisz JSON jako drugi argument funkcji ParseJSON. Jest to łatwa opcja, która pozwala uniknąć konieczności używania obiektu bez typu.
- Określ jawnie typ dla obiektu bez typu za pomocą funkcji AsType. Typ można również przetestować przed próbą konwersji za pomocą funkcji IsType.
Składnia
AsType( RecordReference, TableType )
- OdwołanieDoRekordu – wartość wymagana. Odwołanie do rekordu, często pole odnośnika, które może odwoływać się do rekordu w dowolnej z wielu tabel.
- TableType – wymagany. Konkretna tabela, do której należy rzutować rekord.
AsType( UntypedObject, TypeSpecification )
- UntypedObject - wymagane. Odwołanie do rekordu, często pole odnośnika, które może odwoływać się do rekordu w dowolnej z wielu tabel.
- TypeSpecification – wymagane. Nazwa typu lub specyfikacja typu zdefiniowana za pomocą funkcji Type.
IsType( RecordReference, TableType )
- OdwołanieDoRekordu – wartość wymagana. Odwołanie do rekordu, często pole odnośnika, które może odwoływać się do rekordu w dowolnej z wielu tabel.
- TableType – wymagany. Tabela, dla której chcesz przetestować.
IsType( UntypedObject, TypeSpecification )
- UntypedObject - wymagane. Odwołanie do rekordu, często pole odnośnika, które może odwoływać się do rekordu w dowolnej z wielu tabel.
- TypeSpecification – wymagane. Nazwa typu lub specyfikacja typu zdefiniowana za pomocą funkcji Type.
Przykłady
Odniesienia do rekordów
Zrozumienie odwołań do rekordów i wyszukiwań polimorficznych zawiera wiele przykładów.
Utwórz pustą aplikację kanwy na tablety.
W lewym okienku nawigacji, wybierz Dane>Dodaj dane. Następnie dodaj tabele Konta i Kontakty.
W lewym okienku wybierz pozycję + (Wstaw) >Układ>Pusta galeria pionowa.
Wybierz opcję Połącz z danymi, a następnie wybierz Kontakty jako źródło danych.
Ustaw układ galerii jako Tytuł i podtytuł.
Na liście Dane otwórz listę Tytuł1, a następnie wybierz pozycję Nazwa konta.
Wybierz kontrolkę etykiety Podtytuł1.
Ustaw właściwość Text w Subtitle1 na następującą formułę:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
Podtytuły w galerii są wyświetlane na następujących wartościach:
- "--", jeśli Nazwa firmy jest pusta.
- "Konto: " a następnie pole Nazwa konta w tabeli Konta, jeśli pole Nazwa firmy odwołuje się do klienta.
- "Kontakt: " a następnie pole Pełna nazwa w tabeli Kontakty, jeśli pole Nazwa firmy odwołuje się do kontaktu.
Wyniki mogą się różnić, ponieważ przykładowe dane mogły zostać zmodyfikowane w celu pokazania większej liczby typów wyników.
Obiekty bez typu
Poniższe przykłady pokazują prosty rekord JSON interpretowany na różne sposoby przez ParseJSON, AsType oraz IsType wPac CLI Power Fx REPL.
W tym pierwszym przykładzie do ParseJSON nie są dostarczane żadne informacje o typie, więc zwraca on obiekt bez typu.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>
Pole jest niejawnie konwertowane na liczbę, gdy jest używane w kontekście liczbowym.
>> 1 + rec.a
2
Alternatywnie, ten przykład wyraźnie konwertuje rekord na wpisany rekord Power Fx z drugim argumentem do ParseJSON.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
I jeszcze jedna alternatywa, ten przykład wyraźnie konwertuje rekord na wpisany rekord Power Fx przy użyciu AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Na koniec, jeśli nie mamy pewności, w tym przykładzie testujemy typ przed przekonwertowaniem go pomocą funkcji IsType.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true