Partilhar via


AsType e IsType funções

Função Aplica-se a
AsType Aplicativos do Canvas Aplicativos orientados por modelo do Copilot Studio Funções do Power Platform CLI Dataverse Power Pages
IsType Aplicativos do Canvas Aplicativos orientados por modelo do Copilot Studio Funções Dataverse Power Pages

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

Nota

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

Descrição

As AsType funções e IsType podem ser usadas para converter referências de registro (por exemplo, pesquisas polimórficas no Dataverse) e valores dinâmicos em valores digitados que podem ser usados diretamente.

Referências de Registo

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, aceda aos campos da procura 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 de registro pode se referir a tabelas diferentes, você não pode saber quais campos estão disponíveis em tempo de execução quando você escreve uma fórmula. A notação Registo.Campo não está disponível. Essas fórmulas precisam se adaptar aos registros que o aplicativo encontra quando é executado.

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

A AsType função trata uma referência de registro como um tipo de tabela específico, também chamado de transmissão. Use o resultado como se fosse um registro da tabela e use a notação Record.Field para acessar todos os campos desse registro. Se a referência não for do tipo específico, ocorrerá um erro.

Use essas funções juntas para primeiro verificar 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ê precisará dessas funções somente se acessar os campos de uma referência de registro. Por exemplo, você usa referências de registro na função Filtro 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 ) } )

Quando você usa essas funções em um contexto de registro, como dentro de um controle de formulário Galeria ou Edição , talvez seja necessário que o operador de desambiguação global faça referência ao tipo de tabela. Por exemplo, esta fórmula funciona para uma galeria que apresenta uma lista de contactos em que o Nome da Empresa é 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 usando o nome da fonte de dados conectada à tabela. Para que a fórmula funcione, adicione uma fonte de dados ao aplicativo para todos os tipos que você deseja verificar ou transmitir. Por exemplo, adicione a tabela Usuários como uma fonte de dados se quiser usar IsType e AsType com uma pesquisa de Proprietário e registros dessa tabela. Adicione apenas as fontes de dados que você usa em seu aplicativo; Você não precisa adicionar todas as tabelas que uma pesquisa poderia referenciar.

Se a referência do registro estiver em branco, IsType retornará FALSO e AsType retornará em branco. Todos os campos de registo em branco também estarão em branco.

Valores dinâmicos

Importante

Um valor dinâmico de uma API da Web ou a função [ParseJSON ] precisa ser convertido em um valor digitado específico antes que você possa usá-lo no Power Fx. Seguem-se algumas opções:

  1. Digite implicitamente o campo no ponto em que você o usa. Por exemplo, um objeto é convertido em um número se você usá-lo com o + operador, se ele puder ser convertido em um número. Essa opção pode causar conversões inesperadas e não pode converter registros e tabelas como um todo.
  2. Tipifique explicitamente cada campo individualmente com Decimal, Text, DateTime, GUID e outros funções de tipo construtor. Esta opção é a mais invasiva para suas fórmulas, porque você precisa fazer cada campo separadamente.
  3. Tipifique explicitamente JSON com o segundo argumento da função ParseJSON. Esta opção é fácil e evita a necessidade do valor Dynamic .
  4. Digite explicitamente um valor Dynamic usando a AsType função. Você também pode verificar o tipo antes de tentar a conversão com a IsType função.

Sintaxe

AsType( RecordReference, TableType )

  • RecordReference – Obrigatório. Uma referência de registro, geralmente um campo de pesquisa que se refere a um registro em qualquer uma das várias tabelas.
  • TableType - Obrigatório. A tabela específica para a qual o registro será gravado.

AsType( DynamicValue, TypeSpecification )

  • DynamicValue - Obrigatório. Um valor dinâmico da função ParseJSON ou chamada de API.
  • TypeSpecification — Obrigatório. Um nome de tipo ou especificação de tipo que você define com a função Tipo.

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 testar.

IsType( DynamicValue, TypeSpecification )

  • DynamicValue - Obrigatório. Um valor dinâmico da função ParseJSON ou uma chamada de API.
  • TypeSpecification — Obrigatório. Um nome de tipo ou especificação de tipo definido com a função Type.

Exemplos

Referências de Registo

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 Adicionar>dados e, em seguida, adicione as tabelas Contas e Contactos .

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

  3. No painel esquerdo, selecione + (Inserir) >Layout>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 layout 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 o campo Nome da Conta da tabela Contas se o campo Nome da Empresa se referir a uma conta.
    • "Contato: " e o campo Nome Completo da tabela Contatos se o campo Nome da Empresa se referir a um contato.

    Seus resultados podem diferir porque os dados de amostra podem ser modificados para mostrar mais tipos de resultados.

Valores dinâmicos

Os exemplos a seguir mostram um registro JSON simples interpretado de várias maneiras por ParseJSON, AsTypee IsType no Pac CLI Power Fx REPL.

Neste primeiro exemplo, nenhuma informação de tipo é fornecida ao ParseJSON, portanto, retorna um valor dinâmico.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>

O campo é implicitamente convertido num número quando utilizado num contexto numérico.

>> 1 + rec.a
2

Alternativamente, este exemplo converte explicitamente o registo num registro com tipo do Power Fx com o segundo argumento como ParseJSON.

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

E outra alternativa, este exemplo converte explicitamente o registro em um registro Power Fx digitado usando AsType.

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

Finalmente, se você não tiver certeza, este exemplo testa o tipo antes de convertê-lo com a IsType função.

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