Я создаю плагин, когда пользователь задает статус задачи в crm, проверяет все задачи, связанные с инцидентом. Если нет открытых задач, инцидент должен быть закрыт.CRM 2011 PLUGIN - PostTaskSetState
Когда я использую профиль для отладки плагина, он отлично работает, но в противном случае ничего не происходит.
IPluginExecutionContext context = localContext.PluginExecutionContext;
IOrganizationService service = localContext.OrganizationService;
EntityReference entity = (EntityReference)context.InputParameters["EntityMoniker"];
ColumnSet cols = new ColumnSet();
cols.AllColumns = true;
Entity entityComplete = service.Retrieve("task", entity.Id, cols);
if (((OptionSetValue)entityComplete.Attributes["statecode"]).Value == 0) //se o status for cancelado ou concluído
{
if (entityComplete.Attributes.Keys.Contains("regardingobjectid") && ((EntityReference)entityComplete.Attributes["regardingobjectid"]).LogicalName == "incident")
{
QueryExpression query = new QueryExpression();
query.EntityName = "task";
query.ColumnSet = cols;
query.LinkEntities.Add(new LinkEntity("task", "incident", "regardingobjectid", "incidentid", JoinOperator.Inner));
query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
query.Criteria.AddCondition(new ConditionExpression("activityid", ConditionOperator.NotEqual, entityComplete.Id));
query.Criteria.AddCondition(new ConditionExpression("regardingobjectid", ConditionOperator.Equal, ((EntityReference)entityComplete.Attributes["regardingobjectid"]).Id));
EntityCollection collection = service.RetrieveMultiple(query);
if (collection.Entities.Count == 0)
{
Entity incident = service.Retrieve("incident", ((EntityReference)entityComplete.Attributes["regardingobjectid"]).Id, cols);
SetStateRequest setState = new SetStateRequest();
setState.EntityMoniker = new EntityReference();
setState.EntityMoniker.Id = incident.Id;
setState.EntityMoniker.LogicalName = incident.LogicalName;
setState.State = new OptionSetValue(1);
SetStateResponse setStateResponse = (SetStateResponse)service.Execute(setState);
}
}
}
Кто-нибудь может мне помочь? Спасибо.
Таким образом, просто установка отладчика заставляет его работать правильно? – Daryl
есть, хорошо работает. –
Получаете ли вы какие-либо ошибки в журнале трассировки? Может быть, для отладки, если в отладчике он работает как другой пользователь? – Daryl