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