如何获得帐户的所有活动?

时间:2014-07-09 04:40:37

标签: c# dynamics-crm-online

我有一个我编写的程序,可以从Dynamics CRM 2013在线获取数据。但我遇到一个问题,即获取帐户活动的查询只返回子集而不是所有活动。查询表达式是

private QueryExpression CreateActivityQuery(Guid id)
{
    QueryExpression query = new QueryExpression()
    {
        Distinct = true,
        EntityName = Cd2Sf.ActivityPointer.EntityLogicalName,
        ColumnSet = new ColumnSet(true)
    };
    query.Criteria = new FilterExpression();
    query.Criteria.AddCondition("regardingobjectid", ConditionOperator.Equal, id);
    return query;
}

其中id是帐户ID。我首先尝试使用参与者身份等于帐户ID的activityparty,然后我尝试使用aboutobjectid,最后尝试使用扩展相关实体的Rollup方法,但都产生相同的结果。

#region Create RollupRequest
// Create RollupRequest
RollupRequest rollupRequest = new RollupRequest();
rollupRequest.Query = qexp;
rollupRequest.Target = new EntityReference("account", acct.Id);
rollupRequest.RollupType = RollupType.Extended;
#endregion Create RollupRequest

#region Execute RollupRequest
// Execute RollupRequest
RollupResponse rollupResponse = (RollupResponse)service.Execute(rollupRequest);
#endregion Execute RollupRequest

#region Show RollupResponse results
ShowActivities(rollupResponse.EntityCollection, percent);
#endregion Show RollupResponse results

我是否还需要使用联系人来获取与该帐户相关联的所有活动,即使用activityparty并将to / from / sender / cc / bcc / etc与帐户的联系人匹配?我曾尝试使用联系人ID作为aboutobjectid,但仍未考虑所有活动。

在查看帐户时,动态crm在线的网页以及该页面上的活动似乎超过了上述查询单独的内容。

我如何获得其他活动,这些活动似乎与帐户没有直接关系?

1 个答案:

答案 0 :(得分:0)

我原来的回答并没有回答这个问题 - 我在这里缩写了。

Sarah Champ关于在fetchxml中使用外连接的帖子非常好: http://blogs.msdn.com/b/crminthefield/archive/2013/07/01/dynamic-activity-reporting-using-fetchxml.aspx

您必须使用FetchExpression而不是QueryExpression,但现在可以使用与RetrieveMultipleRequest相同的方式。


FetchExpression示例:

string fetch = "<fetch xml string>"
var query = new FetchExpression(fetch);
var request = new RetrieveMultipleRequest();
request.Query = query;
var entities = ((RetrieveMultipleResponse)service.Execute(request)).EntityCollection.Entities;
foreach (var entity in entities)
{
    Console.WriteLine(entity.GetAttributeValue<string>("subject"));
}