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.
Crie uma aplicação de tela em branco para tablets.
No separador Vista, selecione Origens de dados e, em seguida, adicione as entidades Contactos e Contas como origens de dados.
Inserir um controlo Gallery com uma orientação Vertical em branco.
No separador Propriedades, perto do lado direito do ecrã, defina a propriedade Itens da galeria como Contactos.
Defina o esquema da galeria como Título e Subtítulo.
No painel Dados, abra a lista Title1 e, em seguida, selecione Nome Completo.
Selecione o controlo de etiqueta Subtitle1.
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 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).