Partilhar via


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