Funções AsType e IsType em aplicações de tela

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

Descrição

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

Normalmente, um campo de pesquisa faz referência a registos numa determinada entidade. Uma vez que o tipo de entidade é bem estabelecido, pode aceder aos campos da pesquisa utilizando uma notação de ponto simples. Por exemplo, First( Accounts ).'Primary Contact'.'Full Name' percorre a entidade Contas para o registo do Contacto Principal na entidade Contactos e extrai o campo Nome Completo.

O Microsoft Dataverse também suporta campos de pesquisa polimórfica, os quais podem fazer referência a registos a partir de um conjunto de entidades, 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. Uma vez que uma referência de registo pode fazer referência a diferentes entidades, não sabe quais os campos que 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 faz referência a um tipo de entidade 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 entidade específico, por vezes referido como Elenco. Pode utilizar o resultado como se fosse um registo da entidade e utilizar novamente a notação Registo.Campo 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 testar primeiro o tipo de entidade de um registo e, em seguida, tratá-lo como registo desse tipo, para que os campos fiquem 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, tal como num controlo de Galeria ou de Editar formulários, poderá ter de utilizar o operador de desambiguação global para referenciar o tipo de entidade. 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 à entidade. 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, tem de adicionar a entidade Utilizadores como uma origem de dados se pretender utilizar IsType e AsType com uma pesquisa de Proprietário e registos dessa entidade. Só pode adicionar as origens de dados que utiliza na aplicação; não é necessário adicionar todas as entidades a que uma pesquisa possa referenciar.

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, EntityType )

  • RecordReference – Obrigatório. Uma referência de registo, normalmente um campo de pesquisa que pode fazer referência a um registo em qualquer uma das várias entidades.
  • EntityType – Obrigatório. A entidade específica para a qual testar.

IsType( RecordReference, EntityType )

  • RecordReference – Obrigatório. Uma referência de registo, normalmente um campo de pesquisa que pode fazer referência a um registo em qualquer uma das várias entidades.
  • EntityType – Obrigatório. A entidade específica para a qual o registo deve ser convertido.

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 separador Vista, selecione Origens de dados e, em seguida, adicione as entidades Contactos e Contas como origens de dados.

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

  3. Inserir um controlo Gallery com uma orientação Vertical em branco.

    Inserir um controlo de galeria com um esquema vertical em branco

  4. No separador Propriedades, perto do lado direito do ecrã, defina a propriedade Itens da galeria como Contactos.

    Definir itens para Contactos no painel de propriedades

  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 Texto 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 da Conta da entidade Contas se o campo Nome da Empresa faz referência a uma conta.
    • "Contacto:" e, em seguida, o campo Nome Completo da entidade Contactos se o campo Nome da Empresa faz referência 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.

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).