我怎样才能得到一个账户的所有活动?

本文关键字:一个 活动 | 更新日期: 2023-09-27 18:12:16

我有一个程序,我已经写了从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等于帐户id,然后我尝试使用regardingobjecd,最后尝试使用扩展相关实体的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作为相关对象,但这仍然不能解释所有的活动。

当查看帐户和该页面上的活动时,动态crm在线页面似乎比上述查询单独获得的内容更多。

我如何获得其他活动,那些似乎不直接相关的帐户?

我怎样才能得到一个账户的所有活动?

我原来的答案没有回答这个问题——我在这里缩写了一下。

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