Axapta 特殊字段值和空值的安全策略

Axapta 特殊字段值和空值的安全策略,axapta,x++,security-policy,Axapta,X++,Security Policy,我已经在AOT中创建了一个查询。此查询用于安全策略。安全策略是限制采购订单表单中的每个用户只查看为其定义的采购池。 他应该看到购买池也是空的购买记录。 假设我有一个将用户映射到购买池的表(映射)。映射表有两个字段UserId和PurchpoolId 正如您所知,安全策略对象接受查询。我的查询将内部联接应用于PurchPool表和当前用户范围的映射表。 purch表添加在安全策略下的约束表下。 安全策略的第一部分(即限制用户访问未为其定义池的采购订单)正确执行。但第二部分,即用户可以访问任何未定义

我已经在AOT中创建了一个查询。此查询用于安全策略。安全策略是限制采购订单表单中的每个用户只查看为其定义的采购池。 他应该看到购买池也是空的购买记录。 假设我有一个将用户映射到购买池的表(映射)。映射表有两个字段UserId和PurchpoolId

正如您所知,安全策略对象接受查询。我的查询将内部联接应用于PurchPool表和当前用户范围的映射表。 purch表添加在安全策略下的约束表下。 安全策略的第一部分(即限制用户访问未为其定义池的采购订单)正确执行。但第二部分,即用户可以访问任何未定义池的采购订单,仍然未解决


如何通过一个查询创建安全策略,该查询考虑用户定义池的记录以及空的购买池?

这听起来像是我以前做过的事情。这需要一些扭曲的思维。您需要使用两个不存在的联接

您的查询和策略都需要设置为使用不存在联接。这样,您将从查询中返回无效值,并通过策略限制这些无效值。这允许空白/默认值包含在有效数据集中

以下是我们用于业务部门的示例查询:

政策如下:


这听起来像是我以前做过的事情。这需要一些扭曲的思维。您需要使用两个不存在的联接

您的查询和策略都需要设置为使用不存在联接。这样,您将从查询中返回无效值,并通过策略限制这些无效值。这允许空白/默认值包含在有效数据集中

以下是我们用于业务部门的示例查询:

政策如下:


最近,我们找到了更好的解决方案,我认为它比使用不存在连接更有效、更简单。在这里,我根据位置对固定资产表应用了安全策略。因此,我创建了一个查询,将Assetlocation连接到当前用户的映射表中。 查询可以是简单的内部联接或存在联接。在安全策略中,我们应该使用约束表达式而不是约束表。 因此,在value属性中,我们可以使用以下两个或两个条件:

(AssetTable.Location==“”)| |(AssetTable.Location==AssetLocation.Location))


最近,我们找到了更好的解决方案,我认为它比使用不存在连接更有效、更简单。在这里,我根据位置对固定资产表应用了安全策略。因此,我创建了一个查询,将Assetlocation连接到当前用户的映射表中。 查询可以是简单的内部联接或存在联接。在安全策略中,我们应该使用约束表达式而不是约束表。 因此,在value属性中,我们可以使用以下两个或两个条件:

(AssetTable.Location==“”)| |(AssetTable.Location==AssetLocation.Location))


您必须提供查询和安全策略。伙计,我知道。我被困在查询中。你必须提供查询和安全策略。伙计,我知道。我陷入了疑问之中。