可重复使用NAV设计模式是 NAV 团队 NAV 伙伴之间的联合倡议。
任何人整理出NAV模式,请在这里留下评论或通过写信给我们。
下面就是本周的NAV设计模式。
Single-Record (Setup) Table
初识该模式
这种模式被用于在数据库中存储操作设置或环境有关的信息,这样可以在会话之间保持数据。为了实现此目的,此信息存储在具有唯一的一条记录的表中。用户随后能够修改,而不是添加或删除表中的记录。
最共同执行的这是导航系统安装程序表中。
使用该模式
模式的实施涉及 3 注意事项:
- 定义一个合适的主键。
- 创建页面,在其中用户可以查看和编辑记录,但不是添加新记录或删除一个现有。
- (可选) 创建公司( create Company)-初始化 codeunit。
定义主键
这种表是几种环境或配置参数的集合,因为主键不涉及任何业务属性,然而,对于维护数据库的完整性,有必要定义一个主键。
所以,最常见的实现是定义一个Code [10] 的"主键"。当插入记录时被填充空白值。此字段不会添加到Page,使得用户无法修改它以后。
创建Page
CardPage 类型是最适合于表示这样的表的Page。此外,应该是 InsertAllowed 和 DeleteAllowed 的属性页中设置为 false,以防止用户添加或删除表中的记录。
在 OnOpenPage 触发器中,应添加下面的代码,用户首次打开页面时,如果已不存在的记录,插入记录。
公司-初始化( create Company) Codeunit
公司初始化( create Company) codeunit (codeunit 2) 是创建一家新公司时执行的。我们建议您通过此 codeunit添加records到single-record tables 中。如果某些字段有默认值,它们也可以在这里填充。
NAV 用法
在NAV系统中的几个Setup表实现此模式。
其中一些是:
- Table 98 General Ledger Setup
- Table 311 Sales & Receivables Setup
- Table 312 Purchases & Payables Setup
- Table 313 Inventory Setup
- Table 242 Source Code Setup
注:
虽然大多数表是通过 codeunit 2 中插入一条带有空主键
记录,Table 242("Source Code Setup")
提供的插入的表的所有字段的默认值的示例("InitSourceCodeSetup"的method)
。
这种做法,在可行情况下,很可能在执行期间减少工作量。