Comparteix a través de


Escribir scripts para atributos compuestos

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Algunos campos agregados a un formulario pueden representar varios elementos de datos. Estos atributos compuestos se comportan de manera diferente a los demás atributos cuando se muestran en la aplicación web y debe escribir scripts de manera diferente para utilizarlos correctamente.

En este tema

Atributos compuestos

Atributos compuestos en la aplicación web

Atributos compuestos en Dynamics 365 para tabletas

Mitigación de las diferencias

Atributos compuestos

La tabla siguiente enumera los atributos compuestos:

Entidad

Nombre para mostrar

Nombre lógico

Contact

Nombre completo

fullname

Dirección 1

address1_composite

Dirección 2

address2_composite

Lead

Nombre completo

fullname

Dirección 1

address1_composite

Dirección 2

address2_composite

User

Nombre completo

fullname

Dirección

address1_composite

Otra dirección

address2_composite

Account

Dirección 1

address1_composite

Dirección 2

address2_composite

Quote

Dirección de facturación

billto_composite

Dirección de envío

shipto_composite

Order

Dirección de facturación

billto_composite

Dirección de envío

shipto_composite

Invoice

Dirección de facturación

billto_composite

Dirección de envío

shipto_composite

Atributos compuestos en la aplicación web

Cuando se añadan los campos de los atributos compuestos a un formulario principal, la aplicación web solamente mostrará el atributo compuesto. Cuando alguien edite el campo, aparecerá un control flotante que mostrará los atributos individuales que forman el atributo compuesto. Aunque no se agreguen de manera explícita al formulario del editor de formularios, cada uno de los atributos que forman parte del atributo están disponibles para el formulario. Aunque puede leer el valor del valor compuesto mediante getValue, no puede usar setValue para cambiar el valor del atributo compuesto directamente; debe establecer uno o varios atributos a los que se hace referencia mediante el atributo compuesto.

Puede obtener acceso a los controles constituyentes individuales mostrados en el control flotante por nombre. Estos controles usan la siguiente convención de nomenclatura: <composite control name>_compositionLinkControl_<constituent attribute name>. Para acceder simplemente al control address_line1 en el control address1_composite debe utilizar: Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1").

Atributos compuestos en Dynamics 365 para tabletas

Microsoft Dynamics 365 para tabletas usa las mismas definiciones de formulario usadas para las entidades que tienen atributos compuestos, pero las interpreta de forma distinta. Si se encuentra un atributo compuesto en la definición del formulario, mostrará todos los atributos que forman parte del atributo compuesto en esa sección del formulario. No se necesita un menú emergente debido a que todos los campos son visibles. Puede escribir de scripts para el formulario que tiene acceso a cada uno de los atributos individuales como si se hubiesen agregado individualmente al formulario.

Sin embargo, el control compuesto real no estará presente en la página Dynamics 365 para tabletas.

Mitigación de las diferencias

Si desea tener acceso al campo de fullname para las entidades Contact, Lead o User, utilizar el método Xrm.Page.data.entity.getPrimaryAttributeValue es un modo sencillo de obtener el valor para este atributo sin hacer referencia a el directamente. Este método funciona en la aplicación web y en Dynamics 365 para tabletas.

Si tiene código que necesite leer el valor de uno de los atributos compuestos de dirección, para funcionar con ambos clientes, necesita separar el código mediante Xrm.Page.context.client.getClient como se muestra en la siguiente función que mostrará la dirección formateada con **Xrm.Utility.**72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_alertDialog en la aplicación web principal o la versión de Dynamics 365 para tabletas del mismo formulario.

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);
}

Ver también

Escriba código para formularios de Microsoft Dynamics 365
Usar formularios y eventos de campo
Use el modelo de objeto Xrm.Page
Escribir y depurar scripts para Dynamics 365 para teléfonos y tabletas
Usar el contexto de ejecución y la canalización de eventos de formulario
Usar IFRAME y controles de recursos web en un formulario
Referencia de scripting de formularios
Referencia de programación del lado del cliente
Atributo Xrm.Page.data.entity (referencia de cliente)

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright