c# – CRM 2011 PLUGIN – PostTaskSetState

c# – CRM 2011 PLUGIN – PostTaskSetState,第1张

概述我正在创建一个插件,当用户在crm中设置任务的状态时,验证与事件关联的所有任务.如果没有打开任务,则应该关闭事件. 当我使用配置文件调试插件时,它工作正常,但没有任何反应. IPluginExecutionContext context = localContext.PluginExecutionContext; IOrganizationService service = 我正在创建一个插件,当用户在crm中设置任务的状态时,验证与事件关联的所有任务.如果没有打开任务,则应该关闭事件.

当我使用配置文件调试插件时,它工作正常,但没有任何反应.

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",((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);                    }                }            }

有人可以帮帮我吗?
谢谢.

解决方法 尝试为SetStateDynamicEntity消息注册插件,此外还要为SetState执行相同的 *** 作.根据我的经验,实体需要注册才能工作,虽然我不是100%明确是否有必要,但我知道它有效.几次搜索没有给我一个确定的答案.查看这个受欢迎的CRM博客与相同的建议. http://nishantrana.wordpress.com/2010/01/29/plug-in-for-setstate-and-setstatedynamicentity-messages/

我知道我使用过的实体,未能注册SetStateDynamic会导致插件无法触发.

总结

以上是内存溢出为你收集整理的c# – CRM 2011 PLUGIN – PostTaskSetState全部内容,希望文章能够帮你解决c# – CRM 2011 PLUGIN – PostTaskSetState所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存