Referencia de scripting de formularios

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

Este tema muestra una referencia rápida de los métodos de scripting de formularios utilizados con frecuencia en función de las tareas que realiza con ellos. Para obtener la referencia completa, consulte Referencia de programación del lado del cliente. Todos los ejemplos de esta página usan el formulario principal predeterminado de la entidad de cuenta a menos que se especifique lo contrario.

En este tema

Atributos

  • Obtener acceso a los atributos

  • Obtener o establecer datos de atributo de entidad

  • Obtener metadatos del atributo

Guardar argumentos de evento

Mostrar notificaciones

Controles

  • Acceder a controles del formulario

  • Acceder a los controles de encabezado

  • Acceder a controles del flujo de proceso de negocio

  • Métodos de control de formulario

  • Métodos de control de OptionSet

  • Métodos de control de IFRAME y recursos web

  • Consultar métodos de control

  • Métodos de control de subcuadrícula

  • Métodos de control de fecha

Navegación del formulario

Pestañas y secciones

Agregar o quitar controladores de eventos en tiempo de ejecución

Métodos de información contextual

Obtener, actualizar, o guardar datos de entidad

Atributos

Los atributos almacenan los datos disponibles en el registro.

Obtener acceso a los atributos

Los atributos están disponibles en la colección Xrm.Page.data.entity.attributes. Para tener acceso a un atributo, puede usar el método Xrm.Page.data.entity.attributes.get o la versión de acceso directo Xrm.Page.getAttribute. El método get acepta cuatro tipos de argumentos:

  • Cadena: devuelve un objeto de atributo en el que el nombre del atributo coincide con la cadena.

  • Número: devuelve el objeto del atributo en el que el índice de la colección Xrm.Page.data.entity.attributes coincide con el número.

  • Ninguno: devuelve una matriz de todos los atributos.

  • Delegate function(attribute,index): devuelve una matriz de cualquier atributo de la colección Xrm.Page.data.entity.attributes que hace que la función delegar devuelva true.

Tarea

Ejemplo

Obtener acceso a un atributo por nombre

var nameAttribute = Xrm.Page.getAttribute("name");

Asigna el atributo del campo Nombre de cuenta a la variable nameAttribute.

Obtener acceso a un atributo por índice

var firstAttribute = Xrm.Page.getAttribute(0);

Asigna el primer atributo de la colección Xrm.Page.data.entity.attributes a la variable firstAttribute.

Obtener acceso a todos los atributos

var allAttributes = Xrm.Page.getAttribute();

Asigna una matriz de todos los atributos de la colección Xrm.Page.data.entity.attributes a la variable allAttributes.

Obtener acceso a todos los atributos que cumplen criterios específicos

var optionsetAttributes = Xrm.Page.getAttribute(function (attribute, index) {
return attribute.getAttributeType() == "optionset";
});

Asigna una matriz de todos los atributos de la colección Xrm.Page.data.entity.attributes que cumplen los criterios establecidos en la función anónima, que devuelve true cuando el tipo de atributo es "optionset" a la variable optionsetAttributes.

La colección Xrm.Page.data.entity.attributes también incluye un método forEach que puede usar para obtener acceso a atributos dentro de una función. La siguiente función writeRequiredAttributesToConsole escribirá los nombres de los atributos que requieren datos en la consola de depuración:

function writeRequiredAttributesToConsole() {
 var requiredAttributeNames = [];

 Xrm.Page.data.entity.attributes.forEach(
 function (attribute, index) {
  if (attribute.getRequiredLevel() == "required")
  { requiredAttributeNames.push(attribute.getName()); }
 });

 if (requiredAttributeNames.length > 0) {
  if (typeof console != "undefined") {
   console.log(requiredAttributeNames.join());
  }
 }
 else {
  if (typeof console != "undefined") {
   console.log("No required attributes detected");
  }
 }
}

En este tema

Obtener o establecer datos de atributo de entidad

Los ejemplos de la siguiente tabla muestran cómo puede recuperar o cambiar los datos almacenados en los atributos.

Tarea

Método

Ejemplo

Obtener el valor de un atributo

getValue

var nameValue = Xrm.Page.getAttribute("name").getValue();

Asigna el valor del campo Nombre de cuenta a la variable nameValue.

Establecer el valor de un atributo

setValue

Xrm.Page.getAttribute("name").setValue("new name");

Establece el valor del campo Nombre de cuenta en "nuevo nombre".

Obtener el valor de texto de la opción actualmente seleccionada de un atributo optionset

getText

var addressType = Xrm.Page.getAttribute("address1_addresstypecode").getText();

Asigna el texto de la opción seleccionada en el campo Tipo de dirección a la variable addressType.

Obtener el objeto de la opción actualmente seleccionada en un atributo optionset.

getSelectedOption

var addressTypeOption = Xrm.Page.getAttribute("address1_addresstypecode").getSelectedOption();

Asigna la opción seleccionada en el campo Tipo de dirección a la variable addressTypeOption.

En este tema

Obtener metadatos del atributo

En los ejemplos de la siguiente tabla se muestra cómo puede consultar las propiedades del atributo para entender de qué tipo de atributo se trata o cambiar el comportamiento del atributo.

Tarea

Método

Ejemplo

Obtener el tipo de atributo

getAttributeType

var attributeType = Xrm.Page.getAttribute(0).getAttributeType();

Asigna el valor de cadena que representa el tipo de atributo para el primer atributo a la variable attributeType.

Obtener el formato del atributo

getFormat

var attributeFormat = Xrm.Page.getAttribute(0).getFormat();

Asigna el valor de cadena que representa el formato del primer atributo a la variable attributeFormat.

Obtener el valor inicial de un atributo Boolean o optionset.

getInitialValue

var attributeInitialValue = Xrm.Page.getAttribute("address1_addresstypecode").getInitialValue();

Asigna el valor del número inicial del campo Tipo de dirección a la variable attributeInitialValue.

Determinar si el valor de un atributo ha cambiado

getIsDirty

var isNameChanged = Xrm.Page.getAttribute("name").getIsDirty();

Asigna un valor Boolean que indica si el valor del campo Nombre de cuenta ha cambiado a la variable isNameChanged.

Determina si un atributo de búsqueda representa una búsqueda de tipo partylist.

getIsPartyList

var isPartyList = Xrm.Page.getAttribute("to").getIsPartyList();

Asigna un valor Boolean que indica si el campo para de la entidad Correo electrónico representa una búsqueda de lista de partes.

Este método solo está disponible para Entidades actualizadas.

Obtener el valor máximo permitido de un atributo que contiene un número

getMax

var newValue = 100000000000001;
var newValueBelowMax = (newValue < Xrm.Page.getAttribute("creditlimit").getMax())

Asigna un valor Boolean que indica si el valor de la variable newValue supera el valor máximo permitido para el campo Límite del crédito a la variable newValueBelowMax.

Obtener la longitud máxima permitida de un atributo que contiene una cadena

getMaxLength

var newAccountName = "A Store";
var nameTooLong = (newAccountName.length > Xrm.Page.getAttribute("name").getMaxLength())

Asigna un valor Boolean que indica si el valor de la variable newAccountName supera la longitud máxima permitida para el campo Nombre de cuenta a la variable nameTooLong.

Obtener el valor mínimo permitido de un atributo que contiene un número

getMin

var newValue = -1;
var newValueBelowMin = (newValue < Xrm.Page.getAttribute("creditlimit").getMin())

Asigna un valor Boolean que indica si el valor de la variable newValue es inferior al valor mínimo permitido para el campo Límite del crédito a la variable newValueBelowMin.

Obtener el nombre lógico de un atributo

getName

var attributeName = Xrm.Page.getAttribute(0).getName();

Asigna el valor del nombre lógico del primer atributo de la página a la variable attributeName.

Obtener el objeto de opción que representa un valor

getOption

var addressTypeOption = Xrm.Page.getAttribute("address1_addresstypecode").getOption(1);
alert(addressTypeOption.text); //displays 'Bill To'

Abre una alerta que muestra el texto de la opción del campo Tipo de dirección con un valor de 1.

Obtener un valor numérico que representa el nivel de precisión del atributo de número

getPrecision

var creditLimitPrecision = Xrm.Page.getAttribute("creditlimit").getPrecision();

Asigna el valor de precisión del campo Límite del crédito a la variable creditLimitPrecision.

Obtener un valor de cadena que representa si un atributo debe tener un valor

getRequiredLevel

var creditLimitRequired = Xrm.Page.getAttribute("creditlimit").getRequiredLevel();

El valor de la variable creditLimitRequired puede ser none, required o recommended.

Cambiar si los datos son obligatorios en un campo para poder guardar un registro

setRequiredLevel

Xrm.Page.getAttribute("creditlimit").setRequiredLevel("required");

Convierte el campo Límite del crédito en un campo obligatorio.

Determinar si los datos de un atributo se enviarán cuando se guarda el registro

getSubmitMode

var nameSubmitMode = Xrm.Page.getAttribute("name").getSubmitMode();

El valor de la variable nameSubmitMode será always, never o dirty para representar el submitMode para el campo Nombre de cuenta.

Controlar si los datos de un atributo se guardarán cuando se guarda el registro

setSubmitMode

Xrm.Page.getAttribute("name").setSubmitMode("always");

El ejemplo obligará a guardar siempre el valor del campo Nombre de cuenta aunque no se haya modificado.

Cuando se aplicó la seguridad de nivel de campo a un atributo,
determine si un usuario tiene privilegios para realizar operaciones de creación,
lectura o actualización en el atributo. Para obtener más información, vea
Cómo se puede usar la seguridad de campos para controlar el acceso a los valores de campo en Microsoft Dynamics CRM 2015

getUserPrivilege

var canUpdateNameAttribute = Xrm.Page.getAttribute("name").getUserPrivilege().canUpdate;

Asigna un valor Boolean que representa el privilegio del usuario para actualizar el campo Nombre de cuenta a la variable de canUpdateNameAttribute.

En este tema

Guardar argumentos de evento

Cuando se aplica la lógica de negocios, con frecuencia es necesario impedir que un registro se guarde para que el usuario pueda incluir la información necesaria. Para ello, debe configurar el controlador de eventos para que pase en el contexto de ejecución. El contexto de ejecución contiene el método getEventArgs para recuperar los argumentos del evento. Estos argumentos incluyen métodos que puede usar para controlar si se guardará un registro o consultar las propiedades que le brindan información sobre el evento save.

Tarea

Ejemplo

Impedir que un registro se guarde.

function My_PreventSaveFunction(eContext) {
 eContext.getEventArgs().preventDefault();
}

Use el parámetro eContext para capturar el contexto de ejecución y use el método preventDefault incluido con los argumentos del evento.

Determinar qué acción inició la operación de guardar.

function My_GetSaveModeTextFunction(eContext) {
 var saveModeCode = eContext.getEventArgs().getSaveMode();
 var saveModeText = "Unknown";
 switch (saveModeCode) {
  case 1:
   saveModeText = "Save";
   break;
  case 2:
   saveModeText = "SaveAndClose";
   break;
  case 5:
   saveModeText = "Deactivate";
   break;
  case 6:
   saveModeText = "Reactivate";
   break;
  case 7:
   saveModeText = "Send";
   break;
  case 15:
   saveModeText = "Disqualify";
   break;
  case 16:
   saveModeText = "Qualify";
   break;
  case 47:
   saveModeText = "Assign";
   break;
  case 58:
   saveModeText = "SaveAsCompleted";
   break;
  case 59:
   saveModeText = "SaveAndNew";
   break;
  case 70:
   saveModeText = "AutoSave";
   break;
 }
 return saveModeText;
}

Use el parámetro eContext para capturar el contexto de ejecución y use el método getSaveMode incluido con los argumentos del evento para convertir el valor de código entero en texto.

En este tema

Mostrar notificaciones

Las notificaciones ofrecen un modo de mostrar un mensaje al usuario.

Tarea

Método

Ejemplo

Mostrar un mensaje cerca del control para indicar que los datos no son válidos.

setNotification

Xrm.Page.getAttribute("name").controls.forEach(
function (control, i) {
control.setNotification("'Test' is not a valid name.");
})

Establece un mensaje de error de validación en cada control del formulario para el atributo Nombre de cuenta.

Mientras se muestra este mensaje, el registro no se puede guardar.

Este método solo está disponible para Entidades actualizadas.

Eliminar un mensaje que ya se muestra para un control.

clearNotification

Xrm.Page.getAttribute("name").controls.forEach(
function (control, i) {
control.clearNotification();
})

Borra todos los mensajes de error de validación en cada control del formulario para el atributo Nombre de cuenta.

Este método solo está disponible para Entidades actualizadas.

Mostrar notificaciones en el nivel del formulario.

setFormNotification

Xrm.Page.ui.setFormNotification(
"Hello",
"INFO",
"helloMsg"
);

Muestra el mensaje "Hola" en la parte superior del formulario con un icono de información del sistema.

Este método solo está disponible para Entidades actualizadas.

Quitar notificaciones en el nivel del formulario.

clearFormNotification

Xrm.Page.ui.clearFormNotification("helloMsg");

Borra el mensaje establecido anteriormente con "helloMsg" como el parámetro uniqueid.

Este método solo está disponible para Entidades actualizadas.

Mostrar un diálogo de alerta sin bloqueo con una función de devolución de llamada.

alertDialog

var alertDisplayed = false;
Xrm.Utility.alertDialog(
"Showing Alert",
function () { alertDisplayed = true; }
)

Mostrar una alerta y establecer el valor de la variable alertDisplayed cuando se cierra.

Este método solo está disponible para Entidades actualizadas.

Mostrar un diálogo de confirmación sin bloqueo con distintas devoluciones de llamada en función del botón que ha pulsado el usuario.

confirmDialog

var agree = false;
Xrm.Utility.confirmDialog(
"Do you agree?",
function () { agree = true;},
function () { agree = false; }
);

Mostrar un mensaje de confirmación y establecer el valor de la variable agree según la respuesta.

Este método solo está disponible para Entidades actualizadas.

En este tema

Controles

Los controles representan los elementos de la interfaz de usuario del formulario. Cada atributo del formulario tendrá al menos un control asociado con él. No todos los controles están asociado con un atributo.IFRAME, los recursos web y las subcuadrículas son controles que no tienen atributos.

Acceder a controles del formulario

Los controles están disponibles desde la colección Xrm.Page.ui.controls. Para tener acceso a un control, puede usar el método Xrm.Page.ui.controls.get o la versión de acceso directo Xrm.Page.getControl.

El método get acepta cuatro tipos de argumentos:

  • Cadena: devuelve un control en el que el nombre lógico coincide con la cadena.

  • Número: devuelve el control en el que el índice de la colección Xrm.Page.ui.controls coincide con el número.

  • Ninguno: devuelve una matriz de todos los controles.

  • Delegate function(control,index): devuelve una matriz de cualquier control de la colección Xrm.Page.ui.controls que hace que la función delegar devuelva el valor True.

Tarea

Ejemplo

Obtener acceso a todos los controles de un atributo específico

var nameControls = Xrm.Page.getAttribute("name").controls.get();

Asigna una matriz de todos los controles del atributo name a la variable nameControls.

Obtener acceso a un control por nombre

var nameControl = Xrm.Page.getControl("name");

Asigna el primer control que representa al campo Nombre de cuenta a la variable nameControl.

El primer control que se agrega a un formulario de un atributo tendrá el mismo nombre que el atributo. Cada nombre de control adicional tendrá un número de índice anexado al nombre. Por ejemplo, tres controles del atributo nombre se llamarán: name, name1 y name2 respectivamente.

Obtener acceso a un control por índice

var firstControl = Xrm.Page.getControl(0);

Asigna el primer control de la colección Xrm.Page.ui.controls a la variable firstControl.

Obtener acceso a todos los controles

var allControls = Xrm.Page.getControl();

Asigna una matriz de todos los controles de la colección Xrm.Page.ui.controls a la variable allControls.

Obtener acceso a todos los controles que cumplen criterios específicos

var optionsetControls = Xrm.Page.getControl(function (control, index) {
return control.getControlType() == "optionset";
});

Asigna una matriz de todos los atributos de la colección Xrm.Page.ui.controls que cumplen los criterios establecidos en la función anónima, que devuelve true cuando el tipo de control es "optionset", a la variable optionsetControls.

Cada sección también contiene una colección de controles que contiene únicamente los controles de esa sección. El siguiente ejemplo de código asigna la variable generalTabAccountInfoSectionControls a una matriz de controles que se encuentra en la sección Dirección de la pestaña General.
var generalTabAccountInfoSectionControls = Xrm.Page.ui.tabs.get("general").sections.get("address").controls.get();

Nota

Cada atributo existe solo una vez en el formulario, pero se puede agregar un campo al formulario de ese atributo varias veces. Cada campo que se agrega crea otro control. Los formularios se pueden seguir personalizando después de escribir los scripts. Los scripts que escribe para los controles del atributo deben asumir que se han incluido en el formulario varias veces. Cualquier acción que desee realizar en un control de un atributo se debería aplicar normalmente a todos los controles de ese atributo. Por ejemplo, si desea deshabilitar un control, pero solo deshabilita uno de ellos, el usuario aún puede especificar datos con un control diferente. Por esta razón, se recomienda usar el siguiente patrón con la colección del método forEach para aplicar la misma lógica a todos los controles de un atributo, incluso si hay un solo control en el momento que escribe el script.

Xrm.Page.getAttribute("name").controls.forEach(function (control, index) { control.setDisabled(true); });

En este tema

Acceder a los controles de encabezado

Los controles del encabezado siguen la convención de nomenclatura donde se anexa el prefijo "header_" al nombre del control. Por ejemplo, si el atributo name está el encabezado puede tener acceso a él mediante:
var nameControlInHeader = Xrm.Page.getControl("header_name");

Acceder a controles del flujo de proceso de negocio

Los controles del control del flujo de proceso de negocio siguen la convención de nomenclatura donde se anexa el prefijo "header_process_" al nombre del control. Por ejemplo, si el atributo name está el encabezado puede tener acceso a él mediante:
var nameControlInBPF = Xrm.Page.getControl("header_process_name");

Nota

Sólo los controles de la fase activa aparecen en la colección de Xrm.Page.ui.controls cuando el formulario se carga. Se agregan otros controles del flujo de proceso de negocio cuando se selecciona una fase para la entidad actual.

Métodos de control de formulario

Una vez que tenga acceso a un control, puede llamar a los siguientes métodos.

Tarea

Método

Ejemplo

Determinar si un control está visible

getVisible

var isNameVisible = Xrm.Page.getControl("name").getVisible();

Asigna un valor Boolean a la variable isNameVisible que representa si el campo Nombre de cuenta está visible.

Ocultar o mostrar un control

setVisible

Xrm.Page.getControl("name").setVisible(false);

Oculta el campo Nombre de cuenta.

Obtener una referencia al atributo para el control

getAttribute

var nameAttribute = Xrm.Page.getControl("name").getAttribute();

Asigna el atributo para el control del campo Nombre de cuenta a la variable nameAttribute.

Nota

No todos los controles tienen atributos.

Determinar el tipo del control

getControlType

var optionSetControls = Xrm.Page.getControl(function (control, index) { return control.getControlType() == "optionset"; });

Asigna una matriz de controles optionset a la variable optionSetControls.

Determinar si un control está habilitado

getDisabled

var disabledControls = Xrm.Page.getControl(function(control, index) { return control.getDisabled(); });

Asigna una matriz de controles deshabilitados a la variable disabledControls.

Nota

Los controles de recursos web y subcuadrículas no admiten este método.

Deshabilitar o habilitar un control

setDisabled

Xrm.Page.getAttribute("name").controls.forEach(function (control, index) { control.setDisabled(true); });

Deshabilita cada control para el atributo name.

Sugerencia

Recuerde que cualquier atributo puede tener varios controles.

Obtener la etiqueta de un control

getLabel

var nameControlLabel = Xrm.Page.getControl("name").getLabel();

Asigna el valor del control del campo Nombre de cuenta a la variable nameControlLabel.

Cambiar la etiqueta de un control

setLabel

Xrm.Page.getControl("name").setLabel("Company Name");

Cambia la etiqueta del campo Nombre de cuenta a Nombre de la compañía.

Obtener el nombre de un control

getName

var firstControlName = Xrm.Page.getControl(0).getName();

Asigna el nombre del primer control en la colección Xrm.Page.ui.controls a la variable firstControlName.

Obtener el elemento principal de un control

getParent

var parentSection = Xrm.Page.getControl("name").getParent();

Asigna la sección principal del control del campo Nombre de cuenta a la variable parentSection.

Establecer el enfoque en un control

setFocus

Xrm.Page.getControl("name").setFocus();

Establece el enfoque en el campo Nombre de cuenta.

En este tema

Métodos de control de OptionSet

Los conjuntos de opciones (Optionsets) tienen algunos métodos especiales. Es importante recordar que el atributo define las opciones válidas para un optionset. Cuando trabaja con un control optionset, puede manipular las opciones disponibles pero no puede crear opciones nuevas.

Tarea

Método

Ejemplo

Agregar una opción a un control optionset

addOption

var addressTypeCodeControl = Xrm.Page.getControl("address1_addresstypecode");
var billToAddressOption = addressTypeCodeControl.getAttribute().getOption(1);
addressTypeCodeControl.clearOptions();
addressTypeCodeControl.addOption(billToAddressOption);

Con una referencia al control del campo Tipo de dirección, obtenga acceso al atributo del control y use el método getOption para establecer la variable billToAddressOption en la opción que representa la opción Facturación.

Use clearOptions para quitar cualquier opción existente y use addOption para establecer billToAddressOption como la única opción disponible para este control.

Quitar todas las opciones de un control optionset

clearOptions

Xrm.Page.getControl("address1_addresstypecode").clearOptions();

Quite todas las opciones del control del campo Tipo de dirección.

Quitar una sola opción de un control optionset.

removeOption

Xrm.Page.getControl("address1_addresstypecode").removeOption(1);

Quite la opción Facturación del control del campo Tipo de dirección.

En este tema

Métodos de control de IFRAME y recursos web

Un control IFRAME le permite incluir una página dentro de un formulario al proporcionar una URL. Un recurso web HTML agregado a un formulario se presenta mediante un elemento IFRAME.Silverlight y los recursos web de imagen se incrustan directamente en la página.

Tarea

Método

Ejemplo

Obtener el valor del parámetro de la cadena de consulta de datos pasado un recurso web de Silverlight.

getData

var dataValue = Xrm.Page.getControl("WebResource_SilverLightControl").getData();

Asigna el valor pasado con el parámetro de la cadena de consulta de datos a la variable dataValue.

Obtener la URL del contenido que se muestra actualmente en el IFRAME.

getSrc

var iframeSource = Xrm.Page.getControl("IFRAME_targetPage").getSrc();

Asigna la cadena que representa el valor del atributo IFRAME.src actual a la variable iframeSource.

Establecer la URL del contenido que se va a mostrar en un IFRAME.

setSrc

Xrm.Page.getControl("IFRAME_targetPage").setSrc("http://www.bing.com");

Establece una URL para ser el IFRAME.src del control.

Obtener la URL que representa a la URL configurada de manera predeterminada para un IFRAME.

getInitialUrl

var initialUrl = Xrm.Page.getControl("IFRAME_bing").getInitialUrl();

Asigna la URL inicial configurada para mostrarse en el IFRAME a la variable initialUrl.

Obtener el objeto del formulario que representa el recurso web o IFRAME.

getObject

var obj = Xrm.Page.getControl("IFRAME_bing").getObject();

Asigna una referencia de objeto a la variable obj. Para un IFRAME, será el elemento de Document Object Model (DOM) IFRAME. Para un recurso web de Silverlight, será el elemento Objeto Objeto que representa el complemento incrustado de Silverlight.

En este tema

Consultar métodos de control

Un requisito común para los controles de búsqueda consiste en especificar la vista predeterminada que se muestra cuando un usuario actualiza el campo.

Tarea

Método

Ejemplo

Agregar una vista personalizada para una búsqueda.

addCustomView

var viewId = "{C7034F4F-6F92-4DD7-BD9D-9B9C1E996380}";
var viewDisplayName = "SDK Sample View";
var fetchXml = "<fetch version='1.0' " +
"output-format='xml-platform' " +
"mapping='logical'>" +
"<entity name='account'>" +
"<attribute name='name' />" +
"<attribute name='address1_city' />" +
"<order attribute='name' " +
"descending='false' />" +
"<filter type='and'>" +
"<condition attribute='ownerid' " +
"operator='eq-userid' />" +
"<condition attribute='statecode' " +
"operator='eq' " +
"value='0' />" +
"</filter>" +
"<attribute name='primarycontactid' />" +
"<attribute name='telephone1' />" +
"<attribute name='accountid' />" +
"<link-entity "+
"alias='accountprimarycontactidcontactcontactid' " +
"name='contact' " +
"from='contactid' " +
"to='primarycontactid' " +
"link-type='outer' " +
"visible='false'>" +
"<attribute name='emailaddress1' />" +
"</link-entity>" +
"</entity>" +
"</fetch>";
var layoutXml = "<grid name='resultset' " +
"object='1' " +
"jump='name' " +
"select='1' " +
"icon='1' " +
"preview='1'>" +
"<row name='result' " +
"id='accountid'>" +
"<cell name='name' " +
"width='300' />" +
"<cell name='telephone1' " +
"width='100' />" +
"<cell name='address1_city' " +
"width='100' />" +
"<cell name='primarycontactid' " +
"width='150' />" +
"<cell name='accountprimarycontactidcontactcontactid.emailaddress1' " +
"width='150' " +
"disableSorting='1' />" +
"</row>" +
"</grid>";
Xrm.Page.getControl("parentaccountid").addCustomView(viewId, "account", viewDisplayName, fetchXml, layoutXml, true);

Establece las variables viewId, viewDisplayName, fetchXml y layoutXml para pasar como argumentos a fin de que se agregue una vista personalizada como la vista predeterminada al control del campo de búsqueda Cuenta primaria.

Obtener la vista predeterminada para una búsqueda.

getDefaultView

var defaultViewId = Xrm.Page.getControl("parentaccountid").getDefaultView();

Asigna el valor id de la vista predeterminada a la variable defaultViewId.

Establecer la vista predeterminada para una búsqueda.

setDefaultView

var viewId = "{C7034F4F-6F92-4DD7-BD9D-9B9C1E996380}";
Xrm.Page.getControl("parentaccountid").setDefaultView(viewId);

Establece la vista predeterminada para el control del campo Cuenta primaria al valor id en la variable viewId.

Filtrar los registros devueltos para un control de búsqueda

addCustomFilter

El siguiente ejemplo de código es para la búsqueda de Cuenta del formulario de oportunidad (parentaccountid). Cuando la función Sdk.setParentAccountIdFilter se establece en el controlador de eventos de Onload del formulario, la función Sdk.filterCustomAccounts se agrega al evento PreSearch para esa búsqueda. El resultado es que solo se devuelven las cuentas con el valor Categoría (accountcategorycode) de Cliente preferido (1).

var Sdk = window.Sdk || {};

Sdk.filterCustomerAccounts = function () {
    //Only show accounts with the type 'Preferred Customer'
    var customerAccountFilter = "<filter type='and'><condition attribute='accountcategorycode' operator='eq' value='1'/></filter>";
    Xrm.Page.getControl("parentaccountid").addCustomFilter(customerAccountFilter, "account");
}
//set 'Sdk.setParentAccountIdFilter' in the Opportunity form Onload event handler
Sdk.setParentAccountIdFilter = function () {
    Xrm.Page.getControl("parentaccountid").addPreSearch(Sdk.filterCustomerAccounts);
}

En este tema

Métodos de control de subcuadrícula

El control SubGrid es una cuadrícula dentro de un formulario. Tiene un método único.

Tarea

Método

Ejemplo

Actualizar los datos que se muestran en la subcuadrícula

refresh

Xrm.Page.getControl("accountcontactsgrid").refresh();

Actualizar los Contactossubgrid.

En este tema

Métodos de control de fecha

El control Fecha tiene un método único.

Tarea

Método

Ejemplo

Especificar si un control de fecha debe mostrar la parte de hora de la fecha.

setShowTime

Xrm.Page.getControl("createdon").setShowTime(false);

Establecer el campo Fecha de creación de modo que no se muestre la hora.

Este método solo está disponible para Entidades actualizadas.

En este tema

Puede usar y manipular los elementos de navegación en el lado izquierdo del formulario. Por lo general, estos elementos de navegación muestran registros relacionados con el registro que se muestra en el formulario.

Puede obtener acceso a los elementos de navegación mediante la colección Xrm.Page.ui.navigation.items. Al igual que en todas las colecciones del formulario, hay un método get y forEach.

Tarea

Método

Ejemplo

Obtener el nombre de un elemento de navegación

getId

var navItemIds = [];
Xrm.Page.ui.navigation.items.forEach(
function (item, index)
{ navItemIds.push(item.getId()) }
);

Crea una matriz navItemIds que contiene los valores id de cada elemento de navegación en la colección Xrm.Page.ui.navigation.items.

Obtener la etiqueta de un elemento de navegación.

getLabel

var navAddressesLabel = Xrm.Page.ui.navigation.items.get("navAddresses").getLabel();

Asigna la etiqueta del elemento de navegación Más direcciones a la variable navAddressesLabel.

Establecer la etiqueta de un elemento de navegación

setLabel

Xrm.Page.ui.navigation.items.get("navAddresses").setLabel("Other Addresses");

Cambia la etiqueta del elemento de navegación Más direcciones a Otras direcciones.

Ocultar o mostrar un elemento de navegación

setVisible

Xrm.Page.ui.navigation.items.get("navAddresses").setVisible(false);

Oculta el elemento de navegación More Addresses.

Determinar si un elemento de navegación está visible

getVisible

var moreAddressesVisible = Xrm.Page.ui.navigation.items.get("navAddresses").getVisible()

Asigna un valor Boolean a la variable moreAddressesVisible para representar si el elemento de navegación Más direcciones está visible.

Establecer el enfoque en un elemento de navegación.

setFocus

Xrm.Page.ui.navigation.items.get("navAddresses").setFocus();

Establece el enfoque en el elemento de navegación Más direcciones.

En este tema

Pestañas y secciones

Cada formulario tiene una colección de pestañas. Cada pestaña tiene una colección de secciones. Cada sección tiene una colección de controles. Puede obtener acceso a estos elementos mediante programación y usar sus métodos.

Tarea

Método

Ejemplo

Determinar si una pestaña se expande o contrae

getDisplayState

var isGeneralTabExpanded = (Xrm.Page.ui.tabs.get("general").getDisplayState() == "expanded")

Asigna un valor Boolean a la variable isGeneralTabExpanded que indica si la pestaña General se expande.

Expandir o contraer una pestaña

setDisplayState

Xrm.Page.ui.tabs.get("general").setDisplayState("collapsed");

Contrae la pestaña General.

Determinar si una pestaña está visible

getVisible

var isGeneralTabVisible = Xrm.Page.ui.tabs.get("general").getVisible();

Asigna un valor Boolean a la variable isGeneralTabVisible que indica si la pestaña General está visible.

Ocultar o mostrar una pestaña

setVisible

Xrm.Page.ui.tabs.get("general").setVisible(false);

Oculta la pestaña General.

Obtener la etiqueta de una pestaña

getLabel

var generalTabLabel = Xrm.Page.ui.tabs.get("general").getLabel();

Asigna la etiqueta de la pestaña General a la variable generalTabLabel.

Cambiar la etiqueta de una pestaña

setLabel

Xrm.Page.ui.tabs.get("general").setLabel("Major");

Cambia la etiqueta de la pestaña General a Principal.

Establecer el enfoque en una pestaña

setFocus

Xrm.Page.ui.tabs.get("general").setFocus();

Establece el enfoque en la pestaña General.

Obtener el nombre de una pestaña

getName

var firstTabName = Xrm.Page.ui.tabs.get(0).getName();

Asigna el nombre de la primera pestaña a la variable firstTabName.

Obtener la pestaña principal de una sección

getParent

Xrm.Page.getControl("industrycode").getParent().getParent().setFocus();

Establece el enfoque en la pestaña que contiene el campo Sector.

Determinar si una sección está visible

getVisible

var industrySectionVisible = Xrm.Page.getControl("industrycode").getParent().getVisible();

Asigna un valor Boolean a la variable industrySectionVisible que indica si la sección que contiene el campo Sector está visible.

Ocultar o mostrar una sección

setVisible

Xrm.Page.getControl("industrycode").getParent().setVisible(false);

Oculta la sección que contiene el campo Sector.

Obtener la etiqueta de una sección

getLabel

var industryFieldSectionLabel = Xrm.Page.getControl("industrycode").getParent().getLabel();

Asigna la etiqueta de la sección que contiene el campo Sector a la variable industryFieldSectionLabel.

Cambiar la etiqueta de una sección

setLabel

Xrm.Page.getControl("industrycode").getParent().setLabel("Detailed Information");

Cambia la etiqueta de la sección que contiene el campo Sector a Información detallada.

En este tema

Agregar o quitar controladores de eventos en tiempo de ejecución

Normalmente, los controladores de eventos se configuran con el editor de formularios de la aplicación, pero también puede agregarlos al evento OnSave del formulario y los eventos OnChange del atributo en tiempo de ejecución mediante estas APIs. Los ejemplos de esta sección harán referencia a la siguiente definición de función:
function myFunction() {
//perform action here
}

Aunque puede agregar una función anónima, la función debe tener un nombre para hacer referencia a fin de quitarla.

Tarea

Método

Ejemplo

Agregar una función al evento OnSave.

addOnSave

Xrm.Page.data.entity.addOnSave(myFunction);

Agregar la función myFunction al evento OnSave.

Quitar una función del evento OnSave.

removeOnSave

Xrm.Page.data.entity.removeOnSave(myFunction);

Quitar la función myFunction del evento OnSave.

Agregar una función al evento OnChange de un atributo.

addOnChange

Xrm.Page.getAttribute("name").addOnChange(myFunction);

Agregar la función myFunction al evento OnChange del campo Nombre de cuenta.

Quitar una función del evento OnChange de un atributo.

removeOnChange

Xrm.Page.getAttribute("name").removeOnChange(myFunction);

Quitar la función myFunction del evento OnChange del campo Nombre de cuenta.

Agregar una función al evento PreSearch de un control de búsqueda.

addPreSearch

El siguiente ejemplo de código es para la búsqueda de Cuenta del formulario de oportunidad (parentaccountid). Cuando la función Sdk.setParentAccountIdFilter se establece en el controlador de eventos de Onload del formulario, la función Sdk.filterCustomAccounts se agrega al evento PreSearch para esa búsqueda. El resultado es que solo se devuelven las cuentas con el valor Categoría (accountcategorycode) de Cliente preferido (1).

var Sdk = window.Sdk || {};

Sdk.filterCustomerAccounts = function () {
    //Only show accounts with the type 'Preferred Customer'
    var customerAccountFilter = "<filter type='and'><condition attribute='accountcategorycode' operator='eq' value='1'/></filter>";
    Xrm.Page.getControl("parentaccountid").addCustomFilter(customerAccountFilter, "account");
}
//set 'Sdk.setParentAccountIdFilter' in the Opportunity form Onload event handler
Sdk.setParentAccountIdFilter = function () {
    Xrm.Page.getControl("parentaccountid").addPreSearch(Sdk.filterCustomerAccounts);
}

Use Evento OnStageChange y Evento OnStageSelected para eventos que aparecen en el control de flujo de proceso de negocio. Estos eventos solo tienen métodos para agregar o quitar controladores de eventos mediante programación.Más información:Métodos para administrar controladores de eventos.

En este tema

Métodos de información contextual

Use estos métodos para obtener información del usuario, la organización y el cliente. La siguiente tabla proporciona algunos de los métodos de contexto más útiles. Para todos los métodos de contexto, consulte Contexto del lado del cliente (referencia del lado del cliente).

Tarea

Método

Ejemplo

Obtener la URL para conectarse con la organización.

getClientUrl

var serverUrl = Xrm.Page.context.getClientUrl();

Asignar una cadena que represente la URL a la variable serverUrl.

Obtener el identificador único del usuario actual.

getUserId

var userId = Xrm.Page.context.getUserId();

Asignar una cadena que represente el identificador del usuario a la variable userId.

Obtener el nombre del usuario actual.

getUserName

var userName = Xrm.Page.context.getUserName();

Asignar una cadena que represente el nombre del usuario a la variable userName.

Este método solo está disponible para Entidades actualizadas.

Obtener el código de idioma que representa el idioma de interfaz de usuario preferido del usuario.

getUserLcid

var userLCID = Xrm.Page.context.getUserLcid();

Asignar un número que indique el idioma preferido del usuario a la variable userLCID.

Obtener una matriz de cadenas que represente los valores de GUID de cada rol de seguridad asignado al usuario actual y a cualquier equipo al que está asociado el usuario.

getUserRoles

var userRoles = Xrm.Page.context.getUserRoles();

Asignar una matriz de cadenas que represente los roles de seguridad del usuario a la variable userRoles.

Determinar si el script se ejecuta en el cliente de Microsoft Dynamics CRM para Outlook.

client.getClient

var isOutlookClient = (Xrm.Page.context.client.getClient() == "Outlook");

Asignar un valor Boolean que represente si el código se ejecuta en el cliente de Dynamics CRM para Outlook a la variable isOutlookClient.

Determinar si el usuario trabaja sin conexión con el cliente de Microsoft Dynamics CRM para Microsoft Office Outlook con acceso sin conexión.

client.getClientState

var IsOffline = (Xrm.Page.context.client.getClientState() == "Offline");

Asignar un valor Boolean que represente si el usuario trabaja actualmente sin conexión a la variable IsOffline.

En este tema

Obtener, actualizar, o guardar datos de entidad

La siguiente tabla contiene los métodos que puede usar para obtener información sobre el registro actual o guardar cambios. Para obtener más información, vea Xrm.Page.data.entity (referencia del lado del cliente) y Xrm.Page.data (referencia del lado del cliente).

Tarea

Método

Ejemplo

Obtener el nombre lógico de la entidad actual

getEntityName

var entityName = Xrm.Page.data.entity.getEntityName();

Asignar el nombre lógico de la entidad a la variable entityName.

Obtener el valor del atributo principal de la entidad actual.
El atributo principal es el valor que se utiliza para identificar el registro. Por ejemplo contact.fullname.

getPrimaryAttributeValue

var primaryAttributeValue = Xrm.Page.data.entity.getPrimaryAttributeValue();

Asignar el valor del atributo principal a la variable primaryAttributeValue .

Este método solo está disponible para Entidades actualizadas.

Obtener el Id del registro actual

getId

var recordId = Xrm.Page.data.entity.getId();

Asignar el id del registro a la variable recordId.

Actualizar asincrónicamente los datos del formulario sin volver a cargar la página.

refresh

Xrm.Page.data.refresh();

Actualiza los datos en el formulario.

Este método solo está disponible para Entidades actualizadas.

Guardar el registro actual

Xrm.Page.data.entity.Guardar

Xrm.Page.data.entity.save();

Guarda el registro. Existen argumentos opcionales. Use saveandclose o saveandnew para realizar acciones equivalentes.

Guardar el registro actual asincrónicamente con la opción para configurar
las funciones de devolución de llamada para que se ejecuten una vez finalizada la operación de guardar.

Xrm.Page.data.Guardar

Xrm.Page.data.save().then(
function(){
Xrm.Utility.alertDialog("Record saved");
},
function(error){
Xrm.Utility.alertDialog(error.message);
});

Guarda el registro y muestra un mensaje que indica el estado de la operación de guardar.

Este método solo está disponible para Entidades actualizadas.

Determinar si algún dato del registro actual ha cambiado.

getIsDirty

var isDirty = Xrm.Page.data.entity.getIsDirty();

Asignar un valor Boolean que represente si los datos del registro han cambiado a la variable isDirty.

Obtener una cadena que represente los datos que se enviarán al servidor cuando se guarda el registro.

getDataXml

var dataXml = Xrm.Page.data.entity.getDataXml();

Asignar una cadena que represente los datos que se van a guardar a la variable dataXml.

En este tema

Ver también

Use el modelo de objeto Xrm.Page
Escriba código para formularios de Microsoft Dynamics CRM 2015
Referencia de programación del lado del cliente

© 2017 Microsoft. Todos los derechos reservados. Copyright