Scripts de gravação para atributos compostos
Publicado: novembro de 2016
Aplicável a: Dynamics CRM 2015
Alguns campos adicionados a um formulário podem representar vários itens de dados. Esses atributos compostos comportam-se diferentemente de outros atributos quando exibidos no aplicativo Web e devem ser gravados diferentemente para usá-los corretamente.
Neste tópico
Atributos compostos
Atributos compostos no aplicativo Web
Atributos compostos no CRM para tablets
Atenuar as diferenças
Atributos compostos
A tabela a seguir lista os atributos compostos:
Entidade |
Nome para Exibição |
Nome lógico |
---|---|---|
Contact
|
Nome Completo |
fullname |
Endereço 1 |
address1_composite |
|
Endereço 2 |
address2_composite |
|
Lead
|
Nome Completo |
fullname |
Endereço 1 |
address1_composite |
|
Endereço 2 |
address2_composite |
|
User
|
Nome Completo |
fullname |
Endereço |
address1_composite |
|
Outro Endereço |
address2_composite |
|
Account
|
Endereço 1 |
address1_composite |
Endereço 2 |
address2_composite |
|
Quote
|
Endereço para Cobrança |
billto_composite |
Endereço para Entrega |
shipto_composite |
|
Order
|
Endereço para Cobrança |
billto_composite |
Endereço para Entrega |
shipto_composite |
|
Invoice
|
Endereço para Cobrança |
billto_composite |
Endereço para Entrega |
shipto_composite |
Atributos compostos no aplicativo Web
Quando os campos de atributos compostos são adicionados a um formulário principal, o aplicativo Web mostra somente o atributo composto. Quando alguém edita o campo, um submenu é exibido mostrando os atributos individuais que compõem o atributo composto. Embora não sejam adicionados explicitamente ao formulário no editor de formulários, cada um dos atributos que fazem parte do atributo estão disponíveis ao formulário. Embora seja possível ler o valor do valor composto usando o getValue, não é possível usar o setValue para alterar o valor do atributo composto diretamente; é necessário definir um ou mais dos atributos referenciados pelo atributo composto.
Você pode acessar os controles membros individuais exibidos no submenu por nome. Esses controles usam a seguinte convenção de nomenclatura: <composite control name>_compositionLinkControl_<constituent attribute name>. Para acessar apenas o controle de address_line1 no controle de address1_composite, você usa: Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1").
Atributos compostos no CRM para tablets
O Microsoft Dynamics CRM para Tablets usa as mesmas definições de formulário usadas para as entidades que possuem atributos compostos, mas os interpreta diferentemente. Se um atributo composto for encontrado na definição de formulário, ele mostrará todos os atributos que fazem parte do atributo composto nessa seção do formulário. Não é necessário para um submenu porque todos os campos ficam visíveis. É possível gravar scripts para o formulário acessando cada um dos atributos individuais como se tivessem sido adicionados individualmente ao formulário.
Entretanto, o controle composto real não estará presente na página CRM para tablets.
Atenuar as diferenças
Se quiser acessar o campo fullname para as entidades Contact, Lead ou User, o método Xrm.Page.data.entity.getPrimaryAttributeValue é uma maneira fácil de obter o valor desse atributo sem referenciá-lo diretamente. Esse método funciona tanto para o aplicativo Web quanto para o CRM para tablets.
Se tiver um código que precisa ler o valor de um dos atributos compostos do endereço, para trabalhar com ambos os clientes, você precisa separar o código usando o Xrm.Page.context.client.getClient, conforme mostrado na função a seguir, que exibirá o endereço formatado usando Xrm.Utility.alertDialog no aplicativo Web principal ou na versão CRM para tablets do mesmo formulário.
function showAddressDialog() {
var address1_compositeValue;
if (Xrm.Page.context.client.getClient() != "Mobile") {
address1_compositeValue = Xrm.Page.getAttribute("address1_composite").getValue();
}
else {
var address1_line1 = Xrm.Page.getAttribute("address1_line1").getValue();
var address1_line2 = Xrm.Page.getAttribute("address1_line2").getValue();
var address1_line3 = Xrm.Page.getAttribute("address1_line3").getValue();
var address1_city = Xrm.Page.getAttribute("address1_city").getValue();
var address1_stateorprovince = Xrm.Page.getAttribute("address1_stateorprovince").getValue();
var address1_postalcode = Xrm.Page.getAttribute("address1_postalcode").getValue();
var address1_country = Xrm.Page.getAttribute("address1_country").getValue();
// Achieve equivalent formatting
//address1_line1
//address1_line2
//address1_line3
//address1_city, address1_stateorprovince address1_postalcode
//address1_country
var addressText = "";
if (address1_line1 != null) {
addressText += address1_line1 + "\n";
}
if (address1_line2 != null) {
addressText += address1_line2 + "\n";
}
if (address1_line3 != null) {
addressText += address1_line3 + "\n";
}
if (address1_city != null) {
addressText += address1_city + ", ";
}
if (address1_stateorprovince != null) {
addressText += address1_stateorprovince + " ";
}
if (address1_postalcode != null) {
addressText += address1_postalcode + "\n";
}
addressText += address1_country;
address1_compositeValue = addressText;
}
Xrm.Utility.alertDialog(address1_compositeValue);
}
Confira Também
Criar códigos para os formulários do Microsoft Dynamics CRM 2015
Usar eventos de formulário e de campo
Use o modelo de objeto Xrm.Page
Escrever e depurar scripts no CRM para tablets
Usar o contexto de execução e o pipeline de evento de formulário
Usar um IFRAME e controles de recursos da Web em um formulário
Referência rápida do script de formulário
Referência de programação do cliente
Atributo Xrm.Page.data.entity (referência do cliente)
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais