【问题标题】:MS CRM Online Custom View - Need to show specific records in View for specific users (based on team)MS CRM Online 自定义视图 - 需要在视图中为特定用户显示特定记录(基于团队)
【发布时间】:2017-03-20 08:39:22
【问题描述】:

我有实体“工单”,我为其定义了许多自定义视图。工单可以有状态为“活动、已取消、已关闭、进行中、已提交”等状态的记录。我的要求是 - 当前登录的属于特定团队的用户“销售代表”应该能够查看所有记录。这可以很容易地完成,但是如果当前登录的用户不属于“销售代表”团队,她应该看不到“已取消”的记录,但她应该可以看到所有其他记录。如果可能的话,我如何使用自定义过滤器来实现这一点?还是通过代码更改?

【问题讨论】:

  • 您可以开发一个插件,将取消的工作订单分配给用户不属于的团队。然后限制销售代表团队成员访问该团队的记录。

标签: dynamics-crm dynamics-crm-online


【解决方案1】:

使用自定义代码可以做到这一点。无需质疑“为什么”您想这样做(可能是敏感信息或其他什么?),您可以使用在预操作事件上注册的 RetrieveMultiple 插件来实现它。在此插件中,传入的输入参数之一称为“Query”,并将具有 QueryExpression。您可以简单地在插件中为此查询添加过滤器,相关行将被过滤掉。像这样的:

var query = (QueryExpression)context.InputParameters["Query"];

var condition= new ConditionExpression()
{
    AttributeName = "statuscode",
    Operator = ConditionOperator.NotIn,
    Values = { 2, 3 } // Or whatever codes you want to filter!
};

query.Criteria.AddCondition(condition);

要检查当前用户,您可以从插件上下文中获取用户 ID 并检索您想要检查的必要信息。

【讨论】:

    【解决方案2】:

    在高级查找中这听起来不太可能。不过,您也许可以使用安全角色来实现它。如果您可以将已取消的工作订单分配给特定团队,然后组织您的安全设置,以便非销售代表的用户无法看到来自该特定团队的工作订单,那么它可能会起作用。不幸的是,您将不得不重新分配已取消的工单,这并不总是一种选择。

    否则,您可能必须使用单独的视图来查看已取消的工作订单,开箱即用的高级查找应该允许您显示您不在正确的团队中的空白网格。但现在显然您并没有呈现工单的完整视图。

    一般来说,我会选择安全选项,然后让它工作。任何其他选择都只是权宜之计。用户始终可以创建自定义视图,因此如果您不使用安全角色锁定访问权限,数据仍然可以通过间接方式访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      相关资源
      最近更新 更多