为什么在数据视图SQL语句中过滤了BranchId

时间:2018-02-22 00:06:46

标签: acumatica acumatica-kb

我创建了一个自定义DAC,其中包含一个BranchID字段。客户端对此字段的要求是默认插入值0。该字段定义为KeyField,但未定义PXDefault属性。我使用PXRowPersisting事件处理程序,以便在0的情况下设置值。我使用ListView屏幕,以便返回记录。但是没有返回任何记录。我注意到在SQL跟踪中,过滤器应用于BranchID字段:

AND ([MyCustomTable].BranchID IS NULL OR [MyCustomTable].BranchID IN (16, 17, 20))

为什么要添加此过滤器?

1 个答案:

答案 0 :(得分:0)

对于包含 BranchID UsrBranchID 列的任何表格,框架会自动将 BranchID 条件包含在其中条款。无论在DAC字段上应用了哪些属性,如果将partucular DAC绑定到包含 BranchID UsrBranchID 列的表, BranchID 条件将添加到为此表生成的所有 Where 子句中。

对于您的特定方案,可能的解决方案是将 BranchID 列重命名为与 BranchID UsrBranchID 不同的列。如果您需要强制将基于分支的访问限制应用于自定义DAC,只需将MatchWithBranch<MyDAC.myBranchID>运算符添加到BQL查询中。