Usuario
podria alguien ayudarme con este plug in?

Pregunta
-
hola estimados, tengo un problema con este plug in, que extraje de este articulo
http://a33ik.blogspot.com/2009/06/personal-default-views-manager-for.html
he realizado todo lo que aparece en el, pero cuando guardo en el CRM me arroja un error y no puedo saber en que linea se que es el plug in que tiene un problema pero no he podido dar con el, he tratado de depurar, el plug in pero me pide las credenciales de administrador de la maquina y eso demorara ya que estoy en una institucion grande :(, expongo el plug in para ver si alguien me da una mano puede ser que algo no este bien, he dado los permisos a la entidad default user view, asi que asumo que no es de permisos, he registrado correctamente el plug in sin problemas y la compilacion del plug in sin errores tambien, que sera?
using
System;
using System.Collections.Generic;
using
System.Text;
using
Microsoft.Crm.Sdk;
using
Microsoft.Crm.SdkTypeProxy;
using
Microsoft.Crm.Sdk.Query;
using
System.Diagnostics;
namespace
InternalPVM
{
public class DefaultViewHandler : IPlugin
{
#region
IPlugin Members
public void Execute(IPluginExecutionContext context)
{
if (context.PrimaryEntityName == EntityName.savedquery.ToString() && context.InputParameters.Contains("Query") && context.InputParameters["Query"] is QueryExpression)
{
QueryExpression resultExpression = (QueryExpression)context.InputParameters["Query"];
//I retrieve entity Type code of entity
string entityname = ((ConditionExpression)resultExpression.Criteria.Conditions[0]).Values[0].ToString();
ICrmService crmsevice = context.CreateCrmService(true);
//I create a request to retrieve default View for current entity
QueryExpression query = new QueryExpression("crm_defaultuserview");
query.Criteria.AddCondition(
new ConditionExpression("crm_userid", ConditionOperator.Equal, context.UserId));
query.Criteria.AddCondition(
new ConditionExpression("crm_entitytypecode", ConditionOperator.Equal, entityname));
query.ColumnSet =
new ColumnSet(new string[] { "crm_defaultview" });
RetrieveMultipleRequest request = new RetrieveMultipleRequest();
request.ReturnDynamicEntities =
true;
request.Query = query;
RetrieveMultipleResponse response = (RetrieveMultipleResponse)crmsevice.Execute(request);
//If there are no settings just exit from this method
if (response.BusinessEntityCollection.BusinessEntities.Count == 0)
return;
//Identifier of Default View
Guid defaultviewid = new Guid(((DynamicEntity)response.BusinessEntityCollection.BusinessEntities[0])["crm_defaultview"].ToString());
BusinessEntityCollection result = (BusinessEntityCollection)context.OutputParameters["BusinessEntityCollection"];
//Scroll all Views one-By-One and Set default View from user Setting to be default in resultset
foreach (DynamicEntity de in result.BusinessEntities)
if (((Key)de["savedqueryid"]).Value.Equals(defaultviewid))
{
de[
"isdefault"] = new CrmBoolean(true);
}
else
de[
"isdefault"] = new CrmBoolean(false);
}
}
#endregion
}
}
Todas las respuestas
-
Hola Carlos,
El plugin lo veo correcto, bueno te recomiendo utilizar el visor de eventos para poder tener un poco más de visión del error. Es decir, coloca toda esa función en un Try y cuando suceda el error, grabas el detalle en el visor. Una consulta, has firmado tu plugin? (clic derecho en tu proyecto, vas a firma y le creas una, sin password).
Salu2
Atilin
-
-
-
Estimados, realice los cambios al plug in y no entra al cath, sino que se va en la siguiente linea, entra a este IF del plug in, lo chequie escribiendo en un archivo de texto por cada linea que pasaba.
//If there are no settings just exit from this method
if (response.BusinessEntityCollection.BusinessEntities.Count == 0)
return;
//Identifier of Default Viewque podra ser?
saludos y gracias por la ayuda
-
Bueno, fijate si la consulta retorna algo,
Es decir, en la entidad crm_defaultuserview, fijate si por el crm_userid que tu estas consultando y por crm_entitytypecode (me imagino tipo de entidad), te retorna algun dato
QueryExpression query = new QueryExpression("crm_defaultuserview");
query.Criteria.AddCondition(new ConditionExpression("crm_userid", ConditionOperator.Equal, context.UserId));
query.Criteria.AddCondition(new ConditionExpression("crm_entitytypecode", ConditionOperator.Equal, entityname));
query.ColumnSet =new ColumnSet(new string[] { "crm_defaultview" });
RetrieveMultipleRequest request = new RetrieveMultipleRequest();
request.ReturnDynamicEntities = true;
request.Query = query;
RetrieveMultipleResponse response = (RetrieveMultipleResponse)crmsevice.Execute(request);
El response te esta viniendo, nulo o vació.
- Propuesto como respuesta Jimmy LarrauriModerator viernes, 19 de noviembre de 2010 16:37
-
-
-