01.11.2007, 18:48 | #1 |
Участник
|
Закрыть задачи
Доброго времени суток!
Задача состоит в следующем: есть несколько задач (объектов CRM) с одинаковым признаком - групповым ключом. При завершении одной из задач должны автоматически завершиться все задачи с тем же групповым ключом. Делаю так: callout на смену статуса Задачи Код: if (newSateCode==1) { task currTask = (task)service.Retrieve(EntityName.task.ToString(),entityContext.InstanceId,new AllColumns()); if (currTask.af_groupkey!=null&&currTask.af_groupkey!="0")//есть групповой ключ { //найти все задачи с таким же групповым ключом ConditionExpression exp = new ConditionExpression(); exp.AttributeName = "af_groupkey"; exp.Operator = ConditionOperator.Equal; exp.Values = new string[]{currTask.af_groupkey}; ConditionExpression exp2 = new ConditionExpression(); exp2.AttributeName = "state"; exp2.Operator = ConditionOperator.Equal; exp2.Values = new string[]{TaskState.Open.ToString()}; FilterExpression filter = new FilterExpression(); filter.Conditions = new ConditionExpression[]{exp,exp2}; filter.FilterOperator = LogicalOperator.And; QueryExpression qu = new QueryExpression(); qu.EntityName = EntityName.task.ToString(); qu.ColumnSet = new AllColumns(); qu.Criteria = filter; BusinessEntityCollection tasks = service.RetrieveMultiple(qu); foreach (BusinessEntity entity in tasks.BusinessEntities) { task oTask = entity as task; SetStateTaskRequest setState = new SetStateTaskRequest(); setState.EntityId = oTask.activityid.Value; setState.TaskState = TaskState.Canceled; setState.TaskStatus = 6; SetStateInvoiceResponse setedState = (SetStateInvoiceResponse)service.Execute(setState); } } } Спасибо. |
|