Funções AsType e IsType

Aplica-se a: Aplicações de tela Aplicações condicionadas por modelo CLI do Power Platform

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

Nota

Os comandos PAC CLI pac power-fx não suportam IsType.

Description

Leia Noções sobre referências de registo e pesquisas polimórficas para obter uma introdução mais ampla e mais detalhes.

Um campo de pesquisa geralmente refere-se a registos numa tabela em particular. Como o tipo de tabela está bem estabelecido, pode aceder aos campos da pesquisa usando uma simples notação de pontos. Por exemplo, Primeira(Contas). 'Contacto principal'. 'Nome Completo caminha da tabela Contas para o registo de contacto primário na tabela Contactos e extrai o campo Nome Completo.

Microsoft Dataverse também suporta campos de pesquisa polimórfica, que se podem referir a registos de um conjunto de tabelas, como nestes exemplos.

Campo de pesquisa Podem fazer referência a
Proprietário Utilizadores ou Equipas
Cliente Contas ou Contactos
Relativo a Contas, Contactos, Artigos da Base de Dados de Conhecimentos, etc.

Nas fórmulas de aplicações de tela, utilize referências de registos para trabalhar com pesquisas polimórficas. Como uma referência recorde se pode referir a diferentes tabelas, não sabe que campos estarão disponíveis quando escrever uma fórmula. A notação Registo.Campo não está disponível. Essas fórmulas têm de se adaptar aos registos que a aplicação encontra quando é executada.

A função IsType testa se a referência de um registo se refere a um tipo de tabela específico. A função devolve um valor booleano TRUE ou FALSE.

A função AsType trata uma referência de registo como um tipo de tabela específico, por vezes referido como seleção. Pode utilizar o resultado como se fosse um registo da tabela e utilizar novamente a notação Record.Field para aceder a todos os campos desse registo. Ocorre um erro se a referência não for do tipo específico.

Utilize estas funções em conjunto para primeiro testar o tipo de tabela de um registo e, em seguida, tratá-lo como um registo desse tipo de modo 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'
)

Só necessita destas funções se estiver a aceder aos campos de uma referência de registo. Por exemplo, pode utilizar referências de registo na função Filter sem IsType ou AsType:

Filter( Accounts, Owner = First( Users ) )

Da mesma forma, pode utilizar referências de registo com a função Patch:

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

Se for utilizado num contexto de registo, como dentro de um controlo de Gallery ou Edit form, poderá ser necessário utilizar o operador global de desambiguação para fazer referência ao tipo de tabela. Por exemplo, esta fórmula seria eficaz para uma galeria que esteja a apresentar uma lista de contactos em que o Nome da Empresa seja uma 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, especifique o tipo através do nome do origem de dados que está ligado à tabela. Para que a fórmula funcione, também tem de adicionar um origem de dados à aplicação para quaisquer tipos que pretenda testar ou converter. Por exemplo, deve adicionar a tabela de Utilizadores como uma origem de dados se quiser utilizar IsType e AsType com uma pesquisa do Proprietário e registos a partir dessa tabela. Pode adicionar apenas as fontes de dados que realmente utiliza na sua aplicação; não precisa de adicionar todas as tabelas a que uma pesquisa possa fazer referência.

Se a referência do registo estiver blank, IsType devolverá FALSE e AsType devolve blank. Todos os campos de registo blank ficarão em branco.

Sintaxe

AsType( RecordReference, TableType )

  • RecordReference – Obrigatório. Uma referência de registo, muitas vezes um campo de pesquisa que se pode referir a um registo em qualquer uma das várias tabelas.
  • TableType – Obrigatório. A tabela específica para a qual o disco deve ser convertido.

IsType( RecordReference, TableType )

  • RecordReference – Obrigatório. Uma referência de registo, muitas vezes um campo de pesquisa que se pode referir a um registo em qualquer uma das várias tabelas.
  • TableType – Obrigatório. A tabela específica para a qual testar.

Exemplo

Compreender as referências de registo e as pesquisas polimórficas contém exemplos extensivos.

  1. Crie uma aplicação de tela em branco para tablets.

  2. No painel esquerdo, selecione Dados>Adicionar dados. E, em seguida, adicione tabelas de Contas e Contactos.

    Aplicação em branco com duas origens de dados: contas e contactos.

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

    Inserir um controlo gallery com um esquema vertical em branco.

  4. Selecione Ligar os dados e, em seguida, selecione Contactos como origem de dados.

  5. Defina o esquema da galeria como Título e Subtítulo.

    Abrir o selecionador de esquemas no painel de propriedades.

    Definir o esquema para Título e subtítulo.

  6. No painel Dados, abra a lista Title1 e, em seguida, selecione Nome Completo.

    Definir valor do título.

  7. Selecione o controlo de etiqueta Subtitle1.

    Definir valor do subtítulo.

  8. Defina a propriedade Text de Subtitle1 para 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'
    )
    

    O ecrã está agora concluído mostrando contas e contactos misturados na galeria.

    O subtítulo na galeria mostra estes valores:

    • "--" se o "Nome da Empresa" for blank.
    • "Conta: " e, em seguida, o campo Nome de Conta da tabela Contas se o campo Nome da Empresa se referir a uma conta.
    • "Contacto: " e, em seguida, o campo Nome completo da tabela Contactos se o campo Nome da Empresa se referir a um contacto.

    Os resultados poderão ser diferentes daqueles existentes neste tópico porque utilizam dados de exemplo que foram modificados para mostrar tipos de resultados adicionais.