【问题标题】:CRM 2011 Xrm . audit records return system user instead of logged one客户关系管理 2011 Xrm。审计记录返回系统用户,而不是记录一个
【发布时间】:2018-07-24 19:44:49
【问题描述】:

我使用 CRM 2011 SDK 创建了应用程序。

在检索审计记录时,我使用推荐的代码。 我的代码如下所示:

using (_serviceProxy = ServerConnection.GetOrganizationProxy(serverConfig))
{
    _service = (IOrganizationService)_serviceProxy;
    RetrieveRecordChangeHistoryRequest changeRequest = new RetrieveRecordChangeHistoryRequest();
    changeRequest.Target = new EntityReference(Static.IncidnentsEntityName, new Guid(id));

    RetrieveRecordChangeHistoryResponse changeResponse =
                        (RetrieveRecordChangeHistoryResponse)_service.Execute(changeRequest);

    return changeResponse.AuditDetailCollection.AuditDetails.SelectMany(s => createAuditRecord(s)).ToList();
}

createAuditRecord 函数只是解包属性。有一个名为userid 的属性,但它总是返回系统用户,我的应用在该用户下调用CRM,而不是登录用户。

直接查询SQL的时候,发现有登录用户的信息。

有没有什么方法可以在不直接从数据库中提取数据的情况下提取这些信息?

【问题讨论】:

  • 请附上您用于createAuditRecord的代码。
  • var inrecord = detail.AuditRecord; var res = new List(); var date = inrecord.Attributes.SafeToDateTime("createdon"); var action = inrecord.Attributes.getOption(Static.AuditName, "action").Text; var user = inrecord.Attributes.toEntity(Static.AuditName, "userid").Name;
  • @alekoo73 将该代码添加到您的初始帖子中,最好是完整的函数定义

标签: c# dynamics-crm crm xrm


【解决方案1】:

如果用于外部使用或报告,我更喜欢直接从数据库中提取信息。它更快,您可以执行更复杂的查询,并且可以节省大量时间。使用 SDK 读取数据除了确保下一版本支持并在线支持之外,没有其他好处。

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2012-11-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多