如何在Dynamics 365活动任务记录中检索描述字段的当前值?

时间:2017-10-09 00:33:05

标签: c# plugins dynamics-crm dynamics-365 dynamics-crm-365

我有一个Dynamics 365活动任务记录,其中包含值为"测试描述值"的描述。我想在插件中检索此值。

我的主要代码概述如下。

public void Execute(IServiceProvider serviceProvider)
{
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService((typeof(IPluginExecutionContext)));
    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = factory.CreateOrganizationService(context.UserId);
    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
    {
        Entity task = (Entity)context.InputParameters["Target"];
        if (task.LogicalName == "task")
        {
            ColumnSet cs = new ColumnSet(new string[] { "description", "ownerid" });
            service.Retrieve("task", task.Id, cs);
            foreach (KeyValuePair<String, Object> attribute in task.Attributes)
            {
                tracingService.Trace(attribute.Key + ": " + attribute.Value);
            }
        }
    }
}

迭代foreach循环显示task.Attributes不包含描述键,也不能使用task["description"]获取描述的当前值。两者都返回System.Collections.Generic.KeyNotFoundException。

是否可以在插件中获取活动任务记录的描述字段的当前值?怎么样?

1 个答案:

答案 0 :(得分:1)

您将进行显式服务调用以检索额外的任务实体属性,但缺少一个简单的属性。

myThing.runFuncs(lambda1, lambda2);

在迭代循环中,使用此检索的实体而不是目标实体。

Entity wholeTask = service.Retrieve("task", task.Id, cs);

如果需要,您也可以使用preimage,这样可以避免再次使用SDK。