Udostępnij przez


AsType i IsType funkcje

Funkcja Odnosi się do
AsType Aplikacje kanwy Copilot Studio Oparte na modelu aplikacje interfejsu wiersza polecenia platformy Power Platform Funkcje usługi PowerVerse w usłudze Power Pages
IsType Aplikacje kanwy Copilot Studio Aplikacje oparte na modelu Funkcje usługi Dataverse — Power Pages

Sprawdza, czy odwołanie do rekordu jest określonym typem tabeli (IsType) i traktuje odwołanie jako ten typ (AsType).

Notatka

Polecenia pac cli pac power-fx nie obsługują IsType.

Podpis

Funkcje AsType i IsType mogą służyć do konwertowania odwołań do rekordów (na przykład odnośników polimorficznych w usłudze Dataverse) i wartości dynamicznych na wartości typizowane, 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 odwoływać się do różnych tabel, nie można wiedzieć, które pola są dostępne w czasie wykonywania podczas pisania formuły. Notacja Record.Field nie jest dostępna. Te formuły muszą dostosować się do rekordów napotykanych przez aplikację podczas jej uruchamiania.

Funkcja IsType sprawdza, czy odwołanie do rekordu odnosi się do określonego typu tabeli. Funkcja zwraca wartość logiczną PRAWDA lub FAŁSZ.

Funkcja AsType traktuje odwołanie do rekordu jako określony typ tabeli, nazywany również rzutowaniem. Wynik jest używany tak, jakby był rekordem tabeli i użyj notacji Record.Field , aby uzyskać dostęp do wszystkich pól tego rekordu. Jeśli odwołanie nie jest określonego typu, wystąpi błąd.

Użyj tych funkcji razem, aby najpierw sprawdzić typ tabeli rekordu, a następnie traktować 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'
)

Te funkcje są potrzebne tylko wtedy, gdy uzyskujesz dostęp do pól odwołania do rekordu. Na przykład należy użyć odwołań do rekordów w funkcji Filter bez 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 używasz tych funkcji w kontekście rekordu, na przykład w kontrolce Galeria lub Formularz edycji, może być potrzebny globalny operator uściślania, aby odwołać się do typu tabeli. Na przykład ta formuła działa w przypadku galerii, która wyświetla listę kontaktów, w których nazwa firmy jest wyszukiwaniem klienta :

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Dla obu funkcji określ typ przy użyciu nazwy źródła danych połączonego z tabelą. Aby formuła działała, dodaj źródło danych do aplikacji dla dowolnych typów, które chcesz sprawdzić lub rzutować. Na przykład dodaj tabelę Users jako źródło danych, jeśli chcesz użyć IsType funkcji wyszukiwania AsTypewłaścicieli i rekordów z tej tabeli. Dodaj tylko źródła danych używane w aplikacji; Nie musisz dodawać wszystkich tabel, do których może się odwoływać wyszukiwanie.

Jeśli odwołanie do rekordu jest puste, IsType zwraca wartość FALSE i AsType zwraca wartość pustą. Wszystkie pola w pustym rekordzie będą puste.

Wartości dynamiczne

Ważne

Wartość dynamiczna z internetowego interfejsu API lub funkcji [ParseJSON ] musi zostać przekonwertowana na określoną wartość typową, zanim będzie można jej używać w usłudze Power Fx. Oto kilka opcji:

  1. Niejawnie wpisz pole w punkcie, którego używasz. Na przykład obiekt konwertuje na liczbę, jeśli używasz go z operatorem + , jeśli można go przekonwertować na liczbę. Ta opcja może spowodować nieoczekiwane konwersje i nie może przekonwertować rekordów i tabel jako całości.
  2. Jawnie wpisz każde pole indywidualnie za pomocą funkcji Decimal, Text, DateTime, GUID i innych konstruktorów typów. Ta opcja jest najbardziej inwazyjna dla formuł, ponieważ należy wykonać każde pole oddzielnie.
  3. Jawnie wpisz JSON jako drugi argument funkcji ParseJSON. Ta opcja jest łatwa i nie wymaga wartości dynamicznej .
  4. Jawnie wpisz wartość dynamicznąAsType przy użyciu funkcji . Możesz również sprawdzić typ przed wypróbowaniem konwersji za pomocą IsType funkcji .

Składnia

AsType( RecordReference, TableType )

  • OdwołanieDoRekordu – wartość wymagana. Odwołanie do rekordu, często pole odnośnika, które odwołuje się do rekordu w dowolnej z kilku tabel.
  • TableType – wymagany. Określona tabela do rzutowania rekordu na.

AsType( DynamicValue, TypeSpecification )

  • DynamicValue — wymagane. Wartość dynamiczna z funkcji ParseJSON lub wywołania interfejsu API.
  • 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. Określona tabela do przetestowania.

IsType( DynamicValue, TypeSpecification )

  • DynamicValue — wymagane. Wartość dynamiczna z funkcji ParseJSON lub wywołania interfejsu API.
  • 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.

  1. Utwórz pustą aplikację kanwy na tablety.

  2. W okienku po lewej stronie wybierz pozycję Dane>Dodaj dane, a następnie dodaj tabele Konta i Kontakty .

    Pusta aplikacja z dwoma źródłami danych: konta i kontakty.

  3. W okienku po lewej stronie wybierz pozycję + (Wstaw) >Układ>Pusta galeria pionowa.

    Wstaw kontrolkę Galeria z Pustą pionową orientacją.

  4. Wybierz opcję Połącz z danymi, a następnie wybierz Kontakty jako źródło danych.

  5. Ustaw układ galerii na Tytuł i podtytuł.

    Otwieranie selektora układu z poziomu okienka właściwości.

    Ustawianie układu względem tytułu i napisu.

  6. Na liście Dane otwórz listę Tytuł1, a następnie wybierz pozycję Nazwa konta.

    Ustawianie wartości tytułu.

  7. Wybierz kontrolkę etykiety Podtytuł1.

    Ustawianie wartości podtytułu.

  8. 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'
    )
    

    Ekran jest gotowy. Pokazuje rozmieszane konta i kontakty w galerii.

    Podtytuły w galerii są wyświetlane na następujących wartościach:

    • "--", jeśli Nazwa firmy jest pusta.
    • "Konto:" i pole Account Name (Nazwa konta ) z tabeli Accounts (Konta ), jeśli pole Nazwa firmy odwołuje się do konta.
    • "Kontakt:" i pole Imię i nazwisko z tabeli Kontakty , jeśli pole Nazwa firmy odwołuje się do kontaktu.

    Wyniki mogą się różnić, ponieważ przykładowe dane można modyfikować, aby pokazać więcej typów wyników.

Wartości dynamiczne

W poniższych przykładach pokazano prosty rekord JSON interpretowany na różne sposoby przez parseJSON, AsTypei IsType w interfejsie wiersza polecenia Pac Power Fx REPL.

W tym pierwszym przykładzie nie podano informacji o typie parseJSON, dlatego zwraca wartość dynamiczną.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: 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}

Innym rozwiązaniem jest jawne przekonwertowanie rekordu na typowy rekord Power Fx przy użyciu polecenia AsType.

>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

Na koniec, jeśli nie masz pewności, ten przykład testuje typ przed przekonwertowaniem go za IsType pomocą funkcji.

>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true