Personalizar vistas de entidad
Las vistas de entidad son consultas guardadas especiales que recuperan datos mediante un filtro específico. También contienen información sobre cómo se deben mostrar los datos de la vista en la aplicación. Las vistas de entidad son registros SavedQuery
que se pueden crear mediante programación. También puede definirlas como XML e importarlas a Dynamics 365 for Customer Engagement con una solución no administrada.
Una vista de entidad es diferente de una UserQuery
. Una consulta de usuario, llamada una vista guardada en la aplicación, es propiedad de un usuario individual, se puede asignar y compartir con otros usuarios, y pueden verla otros usuarios en función de sus privilegios de acceso. Esto es adecuado para consultas usadas frecuentemente que abarcan tipos de entidad y consultas que realizan agregación. Más información: Entidad UserQuery (vista guardada)
También puede usar la herramienta personalización de Dynamics 365 para personalizar vistas. Más información: Creación y edición de vistas
Tipos de vistas
La siguiente tabla muestra los cinco tipos de vistas que son compatibles para la personalización. El código de tipo de una vista se almacenan en el atributo SavedQuery.QueryType
. Tenga en cuenta que hay otros valores válidos para el atributo QueryType
que no se muestran aquí porque esta entidad también se usa para almacenar los filtros y plantillas de Office Outlook. Para obtener más información, consulte Plantillas y filtros de Outlook y sin conexión.
Cuando las vistas se definen para una entidad específica, el atributo SavedQuery.ReturnedTypeCode
devuelve el nombre lógico de la entidad.
Tipo de vista | Código de tipo | Descripción |
---|---|---|
Pública | 0 |
-
Repeticiones: muchas - Acciones: crear, actualizar, eliminar - Comentarios: puede establecer una de estas vistas como la vista pública predeterminada estableciendo SavedQuery.IsDefault en true. |
Búsqueda avanzada | 1 |
-
Repeticiones: 1 - Acciones: solo actualizar. - Comentarios: de forma predeterminada, esta vista aparece cuando los resultados se muestran en Búsqueda avanzada. |
Asociadas | 2 |
-
Repeticiones: 1 - Acciones: solo actualizar. - Comentarios: de forma predeterminada, esta vista se muestra cuando aparece una cuadrícula de registros relacionados en el panel de navegación de un registro. |
Búsqueda rápida | 4 |
-
Repeticiones: 1 - Acciones: solo actualizar. - Comentarios: esta vista define las columnas en las que se buscará cuando un usuario busque registros mediante el campo de búsqueda de una vista de lista. |
Búsqueda | 64 |
-
Repeticiones: 1 - Acciones: solo actualizar. - Comentarios: esta es la vista predeterminada que se usará para buscar un registro cuando no se haya configurado ninguna otra vista para el campo de búsqueda. |
Tareas de vista
Puesto que las vistas son registros SavedQuery, puede crearlas, actualizarlas, recuperarlas, eliminarlas y desactivarlas. Además puede editar criterios de filtro o configurar el orden, editar columnas o establecer una vista como vista predeterminada.
Crear vistas
Para crear una vista pública, especifique las propiedades siguientes:
SavedQuery.Name
: identificador único de la vista guardada.SavedQuery.ReturnedTypeCode
: coincide con el nombre lógico de la entidad.SavedQuery.FetchXml
: Consulte Usar FetchXML para crear una consulta.SavedQuery.LayoutXml
: Vea el elementolayoutxml
en el esquema de archivo de soluciones de personalización para los elementos válidos.SavedQuery.QueryType
: debe ser siempre cero (0).El siguiente ejemplo crea una vista pública nueva para la entidad de oportunidad:
System.String layoutXml = @"<grid name='resultset' object='3' jump='name' select='1' preview='1' icon='1'> <row name='result' id='opportunityid'> <cell name='name' width='150' /> <cell name='customerid' width='150' /> <cell name='estimatedclosedate' width='150' /> <cell name='estimatedvalue' width='150' /> <cell name='closeprobability' width='150' /> <cell name='opportunityratingcode' width='150' /> <cell name='opportunitycustomeridcontactcontactid.emailaddress1' width='150' disableSorting='1' /> </row> </grid>"; System.String fetchXml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'> <entity name='opportunity'> <order attribute='estimatedvalue' descending='false' /> <filter type='and'> <condition attribute='statecode' operator='eq' value='0' /> </filter> <attribute name='name' /> <attribute name='estimatedvalue' /> <attribute name='estimatedclosedate' /> <attribute name='customerid' /> <attribute name='opportunityratingcode' /> <attribute name='closeprobability' /> <link-entity alias='opportunitycustomeridcontactcontactid' name='contact' from='contactid' to='customerid' link-type='outer' visible='false'> <attribute name='emailaddress1' /> </link-entity> <attribute name='opportunityid' /> </entity> </fetch>"; SavedQuery sq = new SavedQuery { Name = "A New Custom Public View", Description = "A Saved Query created in code", ReturnedTypeCode = "opportunity", FetchXml = fetchXml, LayoutXml = layoutXml, QueryType = 0 }; _customViewId = _serviceProxy.Create(sq); Console.WriteLine("A new view with the name {0} was created.", sq.Name);
Actualizar vistas
Si la propiedad administrada SavedQuery.IsCustomizable
permite que la vista se actualice, puede usar el método IOrganizationService.Update o el mensaje UpdateRequest para actualizar la vista.
Eliminar vistas
Debe eliminar solo las consultas guardadas que ha creado. Un componente de la solución o parte de la aplicación puede depender de una consulta guardada específica. Si hubiera consultas que no desea que aparezcan en la aplicación, debe desactivarlas.
Recuperar vistas
Use RetrieveMultipleRequest o IOrganizationService.RetrieveMultiple para recuperar registros de consulta guardados.
El siguiente ejemplo recupera todas las vistas públicas para la entidad de oportunidad:
QueryExpression mySavedQuery = new QueryExpression
{
ColumnSet = new ColumnSet("savedqueryid", "name", "querytype", "isdefault", "returnedtypecode", "isquickfindquery"),
EntityName = SavedQuery.EntityLogicalName,
Criteria = new FilterExpression
{
Conditions =
{
new ConditionExpression
{
AttributeName = "querytype",
Operator = ConditionOperator.Equal,
Values = {0}
},
new ConditionExpression
{
AttributeName = "returnedtypecode",
Operator = ConditionOperator.Equal,
Values = {Opportunity.EntityTypeCode}
}
}
}
};
RetrieveMultipleRequest retrieveSavedQueriesRequest = new RetrieveMultipleRequest { Query = mySavedQuery };
RetrieveMultipleResponse retrieveSavedQueriesResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveSavedQueriesRequest);
DataCollection<Entity> savedQueries = retrieveSavedQueriesResponse.EntityCollection.Entities;
//Display the Retrieved views
foreach (Entity ent in savedQueries)
{
SavedQuery rsq = (SavedQuery)ent;
Console.WriteLine("{0} : {1} : {2} : {3} : {4} : {5},", rsq.SavedQueryId, rsq.Name, rsq.QueryType, rsq.IsDefault, rsq.ReturnedTypeCode, rsq.IsQuickFindQuery);
}
Desactivar vistas
Si no desea que una vista pública aparezca en la aplicación, puede desactivarla. No puede desactivar una vista pública que se establece como la vista predeterminada. El siguiente ejemplo deshabilita la vista Oportunidades cerradas del año fiscal actual para la entidad de oportunidad:
System.String SavedQueryName = "Closed Opportunities in Current Fiscal Year";
QueryExpression ClosedOpportunitiesViewQuery = new QueryExpression
{
ColumnSet = new ColumnSet("savedqueryid", "statecode", "statuscode"),
EntityName = SavedQuery.EntityLogicalName,
Criteria = new FilterExpression
{
Conditions =
{
new ConditionExpression
{
AttributeName = "querytype",
Operator = ConditionOperator.Equal,
Values = {0}
},
new ConditionExpression
{
AttributeName = "returnedtypecode",
Operator = ConditionOperator.Equal,
Values = {Opportunity.EntityTypeCode}
},
new ConditionExpression
{
AttributeName = "name",
Operator = ConditionOperator.Equal,
Values = {SavedQueryName}
}
}
}
};
RetrieveMultipleRequest retrieveOpportuntiesViewRequest = new RetrieveMultipleRequest { Query = ClosedOpportunitiesViewQuery };
RetrieveMultipleResponse retrieveOpportuntiesViewResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveOpportuntiesViewRequest);
SavedQuery OpportunityView = (SavedQuery)retrieveOpportuntiesViewResponse.EntityCollection.Entities[0];
_viewOriginalState = (SavedQueryState)OpportunityView.StateCode;
_viewOriginalStatus = OpportunityView.StatusCode;
SetStateRequest ssreq = new SetStateRequest
{
EntityMoniker = new EntityReference(SavedQuery.EntityLogicalName, (Guid)OpportunityView.SavedQueryId),
State = new OptionSetValue((int)SavedQueryState.Inactive),
Status = new OptionSetValue(2)
};
_serviceProxy.Execute(ssreq);
Nota
El estado de la vista, activo o inactivo, no se incluye con la vista cuando se agrega a una solución. Por lo tanto, cuando la solución se importa a una organización de destino, el estado se establecerá en activo de forma predeterminada.
Editar los criterios de filtro o configurar la ordenación
Para modificar el filtro o editar cómo se ordenan los datos, debe establecer el atributo SavedQuery.FetchXml
. Para obtener más información, consulte Crear consultas con FetchXML.
Propina
Si no está familiarizado con FetchXML los siguientes mensajes se pueden usar para convertir entre QueryExpression y FetchXML: QueryExpressionToFetchXmlRequest y FetchXmlToQueryExpressionRequest.
Editar columnas
Las columnas que desea mostrar en las vistas se pueden obtener de la entidad o las entidades relacionadas.
Para obtener más información sobre cómo especificar las columnas para mostrar, vea el elemento layoutxml
en el esquema de archivo de soluciones de personalización.
Agregar iconos personalizados con información sobre herramientas para una columna
Puede agregar un icono personalizado con texto de información sobre herramientas en una columna según el valor de la columna; también puede especificar el texto de información sobre herramientas localizado. Esto puede realizarse agregando iconos personalizados como recursos web de imagen en su instancia de Dynamics 365 y luego usar un recurso web de JavaScript para agregar código JavaScript para que una columna muestre los iconos según el valor de la columna.
Nota
Esta característica se introdujo con la actualización de diciembre de 2016 para Dynamics 365 (en línea y local). Agregar iconos personalizados con información sobre herramientas se admite únicamente para cuadrículas de sólo lectura; esta característica no es compatible con las cuadrículas editables. Para obtener más información acerca de las cuadrículas editables, consulte Usar cuadrículas editables.
Dos atributos nuevos, imageproviderwebresource
y imageproviderfunctionname
, se agregan al elemento cell
del layoutxml de la consulta guardada que le permite especificar el nombre de un recurso web y un nombre de función JavaScript para mostrar iconos personalizados y texto de información sobre herramientas para una columna.
El código JavaScript se ejecuta cuando se carga la página.
También puede usar los nuevos campos Recurso web y Nombre de función en la página Propiedades de columna mientras modifica la propiedad de un atributo (columna) en una definición de vista en el cliente web de Dynamics 365 para especificar el nombre del recurso y el nombre de función de JavaScript.
El código de ejemplo siguiente demuestra cómo puede especificar mediante programación un recurso web y un nombre de función JavaScript para agregar iconos personalizados e información sobre herramientas para la columna opportunityratingcode
en layoutxml:
System.String layoutXml =
@"<grid name='resultset' object='3' jump='name' select='1'
preview='1' icon='1'>
<row name='result' id='opportunityid'>
<cell name='name' width='150' />
<cell name='customerid' width='150' />
<cell name='estimatedclosedate' width='150' />
<cell name='estimatedvalue' width='150' />
<cell name='closeprobability' width='150' />
<cell name='opportunityratingcode' width='150' imageproviderwebresource='new_SampleWebResource'
imageproviderfunctionname='displayIconTooltip' />
<cell name='opportunitycustomeridcontactcontactid.emailaddress1'
width='150' disableSorting='1' />
</row>
</grid>";
La función JavaScript para mostrar iconos personalizados e informaciones sobre herramientas espera los dos argumentos siguientes: el objeto de fila completo especificado en layoutxml y el Id. de configuración regional del usuario que llama (LCID). El parámetro LCID permite especificar el texto de información sobre herramientas para el icono en varios idiomas. Para obtener más información sobre los idiomas admitidos por CRM, vea Habilitar idiomas adicionales e Instalar o actualizar paquetes de idiomas para Microsoft Dynamics 365 Customer Engagement. Para ver una lista de valores de Id. de configuración regional (LCID) que puede usar en el código, consulte Id. de configuración regional asignados por Microsoft.
Suponiendo que muy probablemente agregará iconos personalizados para un tipo de conjunto de opciones de atributo, ya que tiene un conjunto limitado de opciones predefinidas, asegúrese de que usa el valor entero de las opciones en lugar de etiqueta para evitar romper el código debido a cambios en la cadena de etiqueta localizada. Además, en la función JavaScript, especifique únicamente el nombre de un recurso web de imagen que desee usar como icono para un valor del atributo. La imagen debe ser de tamaño 16x16 píxeles; las imágenes más grandes automáticamente se reducirán proporcionalmente al tamaño 16x16 píxeles.
El siguiente código de ejemplo muestra iconos e informaciones sobre herramientas distintos basándose en uno de los valores (1: Muy interesado, 2: Algo interesado, 3: No interesado) del atributo opportunityratingcode (Rating)
. El código de ejemplo también muestra cómo mostrar texto de información sobre herramientas localizado. Para que este ejemplo funcione, debe crear tres recursos web de imagen cada uno con imágenes de 16 x 16 (, y ) en su instancia de Dynamics 365 con los nombres siguientes respectivamente: new_Hot
, new_Warm
y new_Cold
.
function displayIconTooltip(rowData, userLCID) {
var str = JSON.parse(rowData);
var coldata = str.opportunityratingcode_Value;
var imgName = "";
var tooltip = "";
switch (coldata) {
case 1:
imgName = "new_Hot";
switch (userLCID) {
case 1036:
tooltip = "French: Opportunity is Hot";
break;
default:
tooltip = "Opportunity is Hot";
break;
}
break;
case 2:
imgName = "new_Warm";
switch (userLCID) {
case 1036:
tooltip = "French: Opportunity is Warm";
break;
default:
tooltip = "Opportunity is Warm";
break;
}
break;
case 3:
imgName = "new_Cold";
switch (userLCID) {
case 1036:
tooltip = "French: Opportunity is Cold";
break;
default:
tooltip = "Opportunity is Cold";
break;
}
break;
default:
imgName = "";
tooltip = "";
break;
}
var resultarray = [imgName, tooltip];
return resultarray;
}
Esto muestra los valores de la columna Rating
con los iconos adecuados según el valor, y el texto de información sobre herramientas del icono cuando mantiene el mouse sobre los iconos.
Establecer como predeterminada
Solo se puede configurar una vista pública activa como la vista predeterminada. Para establecer una vista como predeterminada, establezca la propiedad IsDefault
en true.
Consulte también
Ejemplo: trabajar con vistas
Crear consultas con FetchXML
Ampliar el modelo de los metadatos para Microsoft Dynamics 365 Customer Engagement
Personalizar formularios de entidad en Microsoft Dynamics 365 Customer Engagement
Personalizar conjuntos de opciones globales en Microsoft Dynamics 365 Customer Engagement
Personalizar Dynamics 365 Customer Engagement