Share via


As funções AsType e IsType

Aplica-se a: Aplicativos de tela Aplicativos baseados em modelo CLI do Power Platform

Verifica uma referência de registro para um tipo de tabela específico (IsType) e trata a referência como um tipo específico (AsType)

Observação

Comandos pac power-fx da CLI do PAC não oferecem suporte ao IsType.

Description

Leia Compreender referências de registros e pesquisas polimórficas para uma introdução mais ampla e mais detalhes.

Um campo de pesquisa geralmente se refere a registros em uma tabela específica. Como o tipo de tabela está bem estabelecido, você pode acessar os campos da pesquisa usando uma notação de ponto simples. Por exemplo, First( Accounts ).'Primary Contact'.'Full Name' vai da tabela Accounts para o registro Primary Contact na tabela Contacts e extraia o campo Full Name.

O Microsoft Dataverse também oferece suporte a campos de pesquisa polimórficos, que podem se referir a registros de um conjunto de tabelas, como nestes exemplos.

Campo de consulta Pode fazer referência a
Proprietário Usuários ou Equipes
Cliente Contas ou Contatos
Referente a Contas, Contatos, Artigos de Conhecimentoetc.

Em fórmulas de aplicativo de tela, use referências de registro para trabalhar com pesquisas polimórficas. Como uma referência de registro pode se referir a tabelas diferentes, você não sabe quais campos estarão disponíveis ao escrever uma fórmula. A notação Record.Field não está disponível. Essas fórmulas devem se adaptar aos registros que o aplicativo encontra quando é executado.

A função IsType testa se uma referência de registro se refere a um tipo de tabela específico. A função retorna um Booliano TRUE ou FALSE.

A função AsType trata uma referência de registro como um tipo de tabela específico, às vezes mencionado casting. Você pode usar o resultado como se fosse um registro da tabela e novamente usar a notação Record.Field para acessar todos os campos desse registro. Ocorrerá um erro se a referência não for do tipo específico.

Use essas funções juntas para primeiro testar o tipo de tabela de um registro e, em seguida, tratá-lo como um registro desse tipo para que os campos estejam disponíveis:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

Você só precisará dessas funções se estiver acessando os campos de uma referência de registro. Por exemplo, você pode usar referências de registro na função Filter sem IsType ou AsType:

Filter( Accounts, Owner = First( Users ) )

Da mesma forma, você pode usar referências de registro com a função Patch:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

Se usado em um contexto de registro, como em um controle Gallery ou Edit form, poderá ser necessário usar o operador de desambiguação global para fazer referência ao tipo de tabela. Por exemplo, essa fórmula seria eficaz para uma galeria que exibe uma lista de contatos em que Nome da Empresa é um pesquisa de Cliente:

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

Para ambas as funções, você especifica o tipo por meio do nome do fonte de dados que está conectado à tabela. Para que a fórmula funcione, você também deve adicionar um fonte de dados ao aplicativo para todos os tipos que deseja testar ou transmitir. Por exemplo, você deve adicionar a tabela Users como um fonte de dados se você quiser usar IsType e AsType com uma pesquisa Proprietário e registros dessa tabela. Você pode adicionar apenas as fontes de dados que você realmente usa em seu aplicativo; não é necessário adicionar todas as tabelas às quais uma consulta pode fazer referência.

Se a referência do registro estiver em branco, IsType retornará FALSE e AsType retornará em branco. Todos os campos de um registro em branco estarão em branco.

Sintaxe

AsType( RecordReference, TableType )

  • RecordReference - obrigatório. Uma referência de registro, geralmente um campo de pesquisa que pode se referir a um registro em qualquer uma das várias tabelas.
  • TableType - obrigatório. A tabela específica na qual o registro deve ser lançado.

IsType( RecordReference, TableType )

  • RecordReference - obrigatório. Uma referência de registro, geralmente um campo de pesquisa que pode se referir a um registro em qualquer uma das várias tabelas.
  • TableType - obrigatório. A tabela específica a ser testada.

Exemplo

Noções básicas sobre referências de registros e pesquisas polimórficas contém exemplos extensos.

  1. Crie um aplicativo de tela em branco para tablets.

  2. No painel esquerdo, selecione Dados>Adicionar dados. E, em seguida, adicione as contas Accounts e Contacts.

    Aplicativo em branco com duas fontes de dados: contas e contatos.

  3. No painel esquerdo, selecione + (Inserir) >Layout>Galeria vertical em branco.

    Inserir um controle de galeria com um layout vertical em branco.

  4. Selecione Conectar-se aos dados e, em seguida, selecione Contacts como a fonte de dados.

  5. Defina o layout da galeria como Title and subtitle.

    Abrir o seletor de layout no painel de propriedades.

    Definir layout como Title and subtitle.

  6. No painel Dados, abra a lista Title1 e selecione Full Name.

    Definir valor do título.

  7. Selecione o controle de rótulo Subtitle1.

    Definir valor do subtítulo.

  8. Defina a propriedade Text de Subtitle1 como esta fórmula:

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

    A tela agora está completa, mostrando contas e contatos misturados na galeria.

    O subtítulo na galeria mostra estes valores:

    • "--" se 'Nome da Empresa' estiver em branco.
    • "Account:" e, em seguida, o campo Nome da Conta da tabela Accounts se o campo Company Name referir-se a uma conta.
    • "Contact:" e, em seguida, o campo Full Name da tabela Contacts se o campo Company Name referir-se a uma conta.

    Seus resultados podem ser diferentes dos deste tópico, pois ele usa dados de exemplo que foram modificados para mostrar tipos adicionais de resultados.