Compiere的应用字典介绍

模型驱动架构介绍

  本章介绍了Compiere的模型驱动架构和Compiere的数据字典功能。

  在大多数应用程序中,开发人员必须设计代码并测试每个屏幕。这可能是非常耗时的,并导致整个应用程序在外观和感觉以及功能方面的不一致。 这也会使用户难以学习像ERP这样复杂的应用程序的新领域。 Compiere通过使用一个更先进的中心激活数据字典的概念,简化了任务。 窗口是在运行时从数据字典中生成的。 开发人员只需定义窗口如何显示和在什么条件下显示的规则。这导致窗口只显示用户在特定情况下需要看到的数据。 例如,如果一个销售订单涉及到客户将商品带走并支付给你,那么就没有必要显示发货规则、发票规则或付款期限等字段。 但是,如果销售订单涉及到你将商品运送给客户,并在稍后时间向他们发送付款账单,那么这些字段是必要的。除了提供一致的外观和感觉外,它还能使数据和字段根据用户的安全性来显示。 在其他应用中,这需要定义多个窗口。

应用字典

  Compiere的应用字典是应用程序的一个组成部分。它 "知道 "如何访问数据以及数据是如何关联的。应用字典包含了一个数据实体的定义(类型、验证等),如何显示(屏幕报告上的标签、帮助、相对于其他字段的显示顺序位置),以及显示规则。安全和访问规则也在这里维护。

  运行时的数据是对环境敏感的。例如:它 "知道 "一个柜台销售没有付款期限,所以它不显示付款期限。它还知道,即使库存记录显示为零,也必须有可用的库存(因为,例如,一个材料收据还没有被处理)。然而,如果用户将交易类型改为标准订单,付款条件就会成为交易的一个强制性部分,交易就会识别 "缺货 "的情况。 此外,用户界面以及业务伙伴文件的翻译是在数据字典中完成的。

  应用字典是用户可扩展的,可以包括用户指定的规则和信息。这使授权用户能够添加新的表格和新的屏幕,并为现有的屏幕添加额外的字段。所有添加的项目都能自动列出,并使用整个应用程序的标准报告功能进行报告。

  应用字典由六个主要实体组成:

  • 元素(Elements)
  • 表和列(Table & Column)
  • 窗口、标签和字段(Window, Tab and Field)
  • 上下文(Context)
  • 报告和流程(Reports and Processes)
  • 表单(Forms)

元素(ELEMENTS)

  元素为所有字段提供了一个中心引用。 在 Compiere 中为任何表定义的任何字段都有一个相应的元素。 这为字段提供了一致的标签,在报告中的显示,以及帮助文本。这也意味着一个元素只需要定义一次,即使它可能在数百个表和多个窗口中使用(例如,组织Organization)。 元素的数据(名称Name、打印文本Print Text、描述Description和注释Comment)会自动与表和窗口的相应字段同步。

   元素是在元素窗口中定义的。这个窗口可以在以系统管理员的角色登录时访问。

  每个元素必须有一个数据库列名(DB Column Name)。 这是在将一个元素连接到一个表中的特定字段时使用的参考。 一个名称和打印文本也是必需的。 名称是在任何窗口、表格或参数表格中使用的标签,该元素被引用。 打印文本是将在报告中打印的列标题。在某些情况下,你可能需要一个较短的打印名称,以使报告布局最大化。 例如,元素ISVendor是一个1位布尔值。 对于报告标题,你可能想打印 "Vend"。

  说明(Description)和 评论(Comment)字段不是必须的。 在大多数情况下,你会希望为这些字段提供数值。 说明字段是当你把光标悬停在一个字段上时显示在 "气泡帮助 "中的文字。 注释字段将显示为该字段的在线帮助(F1)。

  激活(Active)复选框表示这个元素是激活的,在定义表的列时可以被引用。

  对于你添加的任何记录,实体类型将默认为用户定义的。你可以把它改成你定义的另一个实体类型。 如果你想在迁移时保留你的添加内容,你不应该使用Compiere或Dictionary。

        元素窗口还包含一个 "在列中使用 (Used in Column)"标签。 这显示了这个元素被引用的所有列。 如果你正在考虑改变一个现有的元素,这可能是有帮助的,因为它将表明你的改变会影响到哪些其他实体。

表和列(TABLE AND COLUMN)

  表是Windows所建立的实体。 你可以通过用户界面在Compiere Application Dictionary中直接定义一个表及其相关列,并使用这个定义在底层数据库中创建相应的数据库表或数据库视图。 或者,你可以先在数据库中创建一个数据库表或数据库视图,然后将其定义导入Compiere Application Dictionary中。

  在以系统管理员角色登录的情况下,可以通过打开表和列(Table and Column)窗口来创建新表。

   输入一个数据库表名(DB Table Name)。 如果你想导入数据库中已经创建的数据库表或数据库视图的定义,请确保这里提供的名称是相同的。

  如果底层数据库对象是一个视图,请选中视图(View)复选框。

  你还必须输入一个数据访问级别(Data Access Level,用于自动角色)和一个交易类型(Transaction Type)。交易类型将表明当记录被保存到该表时,是否需要一个明确的组织值(除*外)。

  其他字段是可选的。 其中一些对数据字典的功能有直接影响。

        窗口(Window)和PO窗口(PO Window)字段表明哪个窗口将成为 "缩放目标(Zoom Target)"。

  如果选择了高容量(High Volume)复选框,将使引用此表的窗口最初显示一个查询窗口。如果不选择该复选框,将返回所有活动记录。

  要从数据库中导入一个已经创建的数据库表或数据库视图,请选择 "从数据库中创建列(Create Columns from Database) "按钮或 "从数据库中导入此视图 (Import this view from DB)"按钮。为了验证视图定义是否被正确导入,选择 "在数据库中创建此视图(Create this view in DB) "按钮,使用导入的视图定义在数据库中重新创建该视图。

列(Column)

  列(Columns)将在引用该表的窗口中显示为字段。列既可以在数据字典中输入,然后与数据库同步,也可以从数据库中已经填充的表中创建。 一般来说,新的表和它们各自的列是通过一个工具(如SQL Loader)在数据库中填充的,但如果你有一两个新的列要添加,在Compiere中创建它们然后与数据库同步可能更容易。

  在列中选择的值和输入的数据将决定这些字段在窗口中的显示方式和时间。 在窗口定义中还可以做进一步的细化,这将在下一节介绍。 

       数据库列的名称(DB Columns Name)是必需的(我们建议使用与元素相同的名称)。

  选择与该列相对应的元素(Element)。 如果你从数据库中创建了列,而同名的元素并不存在,该过程将创建该元素。

  输入一个名称(Name)。 你可以把描述(Description)和评论(Comment)留空,因为它们将在保存记录时与元素同步。

  数据字典使用的列(Column)中的一些其他字段包括:

  • 引用(Reference)字段决定了该字段的访问方式。例如,Table Direct表示表名可以通过去除字段名中的_ID来确定。 List的值将提示List的引用信息(稍后讨论)。
  • 默认逻辑(Default Logic)允许定义规则,当创建一个新记录时,将填充该字段。 这种逻辑可以包括基于登录时的选择或基于登录的用户的变量。
  • 强制性逻辑(Mandatory Logic)允许定义在什么情况下需要这一栏。
  • 离开调用代码(Callout Code)代码允许在用户离开字段时执行代码。 这是一个数据输入的结果,不应该用于验证(这应该在用户离开字段之前发生)。 销售订单( Sales Order)窗口中就有一个离开调用的例子。 当用户输入商业伙伴(Business Partner)时,被执行的离开调用(Callout)会更新窗口中的其他字段,如价格表(Price List)、交付规则(Delivery Rule)和伙伴地址(Partner Addess)。
  • 标识符(Identifier)表示当用户选择该字段或下拉列表时显示的内容。 例如,当用户选择一个合作伙伴组(Partner Group)时,显示的是合作伙伴组名称(Partner Group Name)而不是合作伙伴组ID(Partner Group ID)。 可以定义多个标识符,这些字段将以"_"分开显示。
  • TableUID表示该列是否可以被那些不能访问内部表唯一标识符的人使用,以唯一地识别表中的一条记录。例如,当一个用户想寻找一个特定的窗口,她不知道AD_Window_ID是什么。相反,她会使用Window Name来唯一地识别一个Window记录。同样,当Compiere在迁移一个Window记录时,它不能使用AD_Window_ID来唯一地识别一个Window记录,因为AD_Window_ID不能保证在不同的系统中引用相同的记录。相反,它将使用窗口名称来查看该窗口是否已经存在于目标实例中。如果没有相同窗口名称的记录,那么Compiere将插入一个具有该窗口名称的新记录。如果已经有一条具有相同Window Name的记录,那么Compiere将比较这两条记录的属性,如果有差异,就更新目标实例中的属性。要把一个列标记为外部唯一标识符,把TableUID值设置为大于0的整数。注意,你可能需要设置多于一列作为表的外部唯一标识符。例如,一个标签将有父窗口和标签名称作为外部唯一标识符(标签名称对于一个给定的窗口来说应该是唯一的,但在不同的窗口中可能会重复)。根据定义,你不应该把内部记录ID标记为外部唯一标识符(即AD_Window.AD_Window_ID和AD_Tab.AD_Tab_ID没有资格成为外部唯一标识符)。然而,请注意,AD_Tab.AD_Window_ID有资格成为外部唯一标识符,因为它描述了AD_Tab记录的父窗口。
  • 选择列(Selection Column)表示如果选择了搜索,在初始搜索窗口中显示哪些字段。 表上的所有字段都可以在高级搜索选项卡中使用。

  如果你正在数据库中创建列,或者你已经改变了表定义的一部分(如约束名称或增加字段长度),就应该选择 "同步列(Synchronize Column) "按钮。

视图组件(View Component)

  视图组件(View Components)包含数据库视图的SELECT语句定义中的FROM、WHERE、GROUP BY和HAVING条款。如果你的数据库视图由多个SELECT语句组成(用UNION连接在一起),每个SELECT语句都需要一个视图组件。

视图列(View Column)

  视图列包含数据库视图的SELECT语句定义中的SELECT子句。

  举个例子,如果你的数据库视图是用以下语句创建的:

CREATE VIEW someView ( someViewID, someViewName) AS SELECT someID, someName FROM someTable WHERE someAttribute = 'Y'

  然后,以下信息将被储存在 "表和列 (Table and Column)"窗口的各个标签中。 

  • 表(Table)选项卡将存储视图名称someView和这个Compiere表对应于一个数据库视图的事实。
  • 列(Column)标签将存储someViewID和someViewName视图列的名称和数据类型。
  • 视图组件(View Component)标签将存储视图SELECT语句的FROM子句 FROM someTable和WHERE子句 WHERE someAttribute = 'Y'。
  • 视图列(View Column)标签将在视图SELECT语句的SELECT子句中存储列someID, someName。

窗口、标签和字段(WINDOW, TAB AND FIELD)

  窗口(Window)、标签(Tab)和字段(Field)窗口定义了每个窗口内的表和列的呈现方式。窗口中的每个选项卡指的是一个单一的表。 窗口的标签中的字段指的是表中的列。

窗口(WINDOW)

   窗口(Window)标签定义了系统中的每个窗口。名称(Name)和窗口类型(Window Type)是必须的。 名称是显示在窗口标题中的内容。 它也是显示在菜单中的名称。 系统会将窗口名称与菜单实体同步。

  窗口类型(Window Type)决定了用户打开窗口时的行为。例如,如果窗口类型是维护(Maintain),那么所有激活的记录都会被检索到。 如果窗口类型是 交易(Transaction),则只显示今天创建或更新的记录,或未完成的记录。(请注意,所有的记录都可以通过搜索工具来检索)。 一般来说,在处理交易窗口时,例如发票,你不想检索两年前的发票,你想看看今天做了什么,哪些还需要进一步处理。

窗口访问(WINDOW ACCESS)

  窗口访问(Window Access)标签定义了可以访问此窗口的角色。这通常是在角色窗口中定义的。

标签(TAB)

  Tab标签定义了一个窗口中的每个Tab。每个标签指的是一个单一的表。表上的所有列都可以显示,但通常使用特定的字段选择。注意,显示(Display)和只读( read only)逻辑(连同为表/列定义的默认逻辑)在加载窗口时被评估。

  在标签(Tab)中,所需的字段是名称(Name)、表(Table)、顺序(Sequence)和标签级别(Tab Level)。 名称(Name)表示在帮助文本中显示的内容,表(Table)将决定哪些字段可供显示,以及在此窗口标签中添加、删除或修改记录时将更新的表。 

  顺序(Sequence)决定了标签在窗口中出现的顺序。 默认情况下,每增加一个新的标签,系统将以10的数值递增序列。

  标签级别(Tab Level)决定了该标签是否是前一个标签的子记录。标签级别为0表示它是起始的父标签。 标签级别为1表示它是父标签的一个子标签(例如在产品(Product )窗口中,BOM标签是产品标签的一个子标签)。 标签级别为2表示它是前一个标签级别为1的孩子(例如,BOM组件是BOM标签的孩子)。

  标签定义的其他一些特点是:

  • 过程(Process)表示该标签将启用可以打印文件的过程。 这将控制窗口上的打印按钮是否被启用(例如,在发票窗口上有一个定义的流程,打印按钮被启用,在产品窗口上没有定义过程,打印按钮没有被启用)。
  • 单行布局(Single Row layout),如果选择,表明当窗口打开时,它将以单记录模式显示(仅swing)。
  • 高级、会计和翻译选项卡(Advanced, Accounting and Translation Tab)的复选框表明该选项卡的显示是否将与安全一起由偏好中定义的设置控制。
  • 显示和只读逻辑(Display and Read Only Logic)允许定义业务规则来控制一个标签的显示和更新。 例如,在产品窗口中,BOM标签有只读逻辑,如果没有选择BOM复选框,就不能输入数据。

字段(FIELD)

  字段(Field)标签定义了在一个标签内显示的字段。由于缓存,对字段标签所做的更改在重启后变得可见。如果序列为负数,记录将被降序排列。注意,如果是集中维护,名称、描述和帮助会自动同步。 

  名称(Name)和列(Column)是必须的。 可供选择的列是基于为标签定义的表格。 名称、描述和注释将从列的定义(已从元素定义中同步)中同步出来。如果在一个特定的窗口中,你想使用不同的字段标签或有不同的帮助定义,只需输入所需的内容并取消选择集中维护(Centrally Maintained)的复选框。这将阻止这个特定字段与表/列值的同步。

  影响显示的字段的其他一些属性是: 

  • 显示的(Displayed)表示该字段是否会被显示。如果一个字段在特定的实现中是不需要的,你可以取消选择这个标志。 请注意,如果该字段是必需的,你必须首先确保有一个定义好的默认值。 另外,如果一个字段不被显示,可能会影响字段的布局。
  • 只读(Read Only)表示该字段将被显示但不能被更新。例如,如果你不希望用户更新销售订单中的价格表,就把该字段设置为只读。 价格表字段是必须的,但有一个默认值(来自业务伙伴或租户级别)。
  • 顺序(Sequence)和同一行(Same Line )决定它在窗口中的显示位置。
  • 默认焦点(Default Focus)表示当一个新的记录被输入时,用户的光标将在这个字段上。
  • Obscure允许你混淆该字段(例如,只显示信用卡号码的最后4位)。 这也是它在报告中的打印方式。 然而,它在数据库中是作为明文存储的。 你可以通过选择 "加密 "对显示和数据库中的字段进行加密。

上下文 

  上下文(Context)允许为给定的窗口定义备用字段标签。 例如,字段 "商业伙伴 "在不同背景下对用户意味着不同的东西。在销售订单中,商业伙伴是 "客户",在采购订单中是 "供应商"。 Context窗口为系统定义了不同的上下文。 然后为适当的元素定义不同的字段标签,并将语境分配给所需的窗口。 

   定义了一些情境(例如,销售Sales、采购Purchasing和请求Request)。如果需要,你可以添加新的上下文记录。

  接下来为适当的元素添加新的名称Names、打印文本Print Text、描述Description和注释Comment。没有必要为所有字段定义上下文值。 如果没有定义上下文,系统将使用标准元素的定义。 

  最后,为窗口选择适当的上下文(例如,在销售订单(Sales Order)中,上下文被定义为销售)。

报告和过程(Reports and Processes)

  在Compiere中,报表和过程在技术上是同一个实体。两者都可以有一个预处理(如参数选择),都可以有输出(如报表查看器)。 然而,对于用户来说,它们被视为独立的实体。出于这个原因,它们在菜单中以图标的形式进行了区分。

  要定义一个报告,打开报告和过程窗口。

名称(Name)是将显示在菜单和报告标题中的名称。 

描述(Description)和注释(Comment)将显示在确认窗口中,当用户点击菜单中的报告图标时显示。 这是提供报告或流程用途信息的一个好方法。

数据访问级别(Data Access Level)用于自动生成角色安全。

选择报告视图(Report View)复选框,表示这是一份报告。这将把报告图标分配给这个菜单项,并显示适当的字段(如报告视图),以便进一步定义报告。

适当地输入其余字段。 唯一需要的其他字段是报告视图(Report View)。

直接打印(Direct Print)复选框表示报告在执行时将自动打印。

如果需要,你可以输入一个打印格式,在生成这个报告时使用。 如果没有选择打印格式。

选择参数(Parameter)选项卡来定义此报告的参数。可供选择的字段仅限于所选报告视图中的那些字段。

参数允许默认值、必需或可选以及值或日期的范围。

生成报告时使用的任何参数都打印在报告头。

过程(Processes)

如前所述,过程的定义方式与报告类似。

  由于没有选择报告视图(Report View)复选框,在菜单中使用过程(Process)图标。另外,报告视图、打印格式和直接打印字段不显示(这是为窗口定义的显示逻辑的一个例子)。 

  在这里你将输入一个与过程相关的类名(Classname)和/或程序(Procedure)。 你也可以选择服务器过程(Server Process),如果这应该只在服务器上运行(而不是使用Swing客户端时的客户端)。

  当你定义的过程是通过选择一个按钮(如文档上的 "完成 "按钮)启动的过程时,就会用到工作流字段。

  与报表一样,过程也可以有参数供用户在执行流程时输入。

表单(Forms)

  表格是复杂的窗口,是硬编码的。 一般来说,它们涉及来自一个以上的表的数据,可能有一对多或多对多的关系。 与其他实体不同,表单是在Swing客户端和HTML客户端中单独定义的。

  Classname是用于为Swing客户端生成表单的代码。

  WebUI的Java Classname是用来生成HTML UI的表单的代码。 

  如果定义了,jsp URL定义了用于运行HTML用户界面的java类的URL。

业务逻辑(BUSINESS LOGIC)

引用(Reference)

  引用(Reference)是在列(表和列)中使用的,以控制在一个字段中显示什么以及如何显示。 引用可以是三种不同的验证类型之一;数据类型、列表或表验证。 选择的类型通常是基于字段的使用方式和所需的控制水平。

  数据类型(DataType)的验证类型(Validation Type)用于定义不同的字段类型(例如,按钮 Button、日期时间Date Time、数字Number)。 一般来说,你不需要创建新的数据类型验证类型(Validation Type)的引用。

  以下是Compiere支持的标准数据类型列表:

  • 帐户(Account):这用于存储账户组合的字段。这方面的一个例子是GL日志行的账户组合字段。
  • 金额(Amount):这是一个有4位小数的数字字段,用于表示金额。这方面的一个例子是销售订单上的总计字段。
  • 分配(Assignment):这是用于资源分配。这方面的一个例子是销售订单行的资源分配字段。目前只在Java客户端(Swing UI)支持这个功能。
  • 二进制(Binary):这是用来存储二进制数据(Blobs)。例如,它被用来在AD_Attachment表中存储附件。
  • 按钮(Button):这是用来显示字段作为一个可点击的按钮。这可以用来启动一个程序。这方面的一个例子是销售订单窗口的 "复制行 "按钮。
  • 成本+价格(Costs+Prices):这是用来显示数字字段的。它将以最小的货币精度显示,或更多。
  • 日期(Date):这是用来显示日期字段(没有时间戳)的。
  • 日期+时间(Date+Time):这是用来显示带有时间戳的日期字段。
  • FileName : 这是用来显示一个本地文件名。目前只在Java客户端(Swing UI)支持这个功能。
  • ID : 这是每个表的主键。例如,列C_Order_ID有一个参考类型为ID。对于每条记录,Compiere将使用内部序列为该列自动生成一个唯一值。
  • 图片(Image):这是用来允许用户在窗口中添加图片。目前只在Java客户端(Swing UI)中支持这个功能。
  • 整数(Integer):这是用来表示整数值的。
  • 列表(List):这是用来让用户从一个包含数值列表的下拉列表框中进行选择。
  • 地点Location (地址Address):这用于包含地址信息的字段。对于这些字段,用户将被允许调出一个弹出窗口,在那里他们可以输入街道地址信息。还有一个从这个弹出窗口到谷歌地图的链接。
  • 定位器Locator (WH) :这是用来显示仓库的适当定位器的下拉列表。
  • 备注(Memo):这用于多达2000个字符的大型文本字段。
  • 数字(Number):这用于任何数字字段。
  • 打印机名称(Printer Name):这是用来让用户从可访问的打印机列表中选择。目前只在Java客户端(Swing UI)中支持这个功能。
  • 产品属性(Product Attribute):这是用来带来一个动态生成的弹出窗口,基于已经为一个给定产品添加的属性。这方面的一个例子是销售订单行的产品属性字段。
  • 数量(Quantity):这用于数量字段。这方面的一个例子是销售订单行的数量字段。
  • 搜索(Search):这是用来弹出一个(搜索窗口),用户可以输入各种标准来搜索适当的值。这方面的一个例子是销售订单行的产品字段。
  • 字符串(String):这用于字母数字字符串字段。
  • 表(Table):这是用于对系统中其他实体的外来键引用。它将被呈现为一个下拉对话框,其中有来自引用表的标识符列。如果你使用这种数据类型,你还必须指定参考键。参考键详细说明了被引用的表。一个例子是C_Order表中的Bill_BPartner_ID列(用于显示销售订单窗口中的Bill To)。
  • 表直接(Table Direct):这与表引用类似,它被用于系统中其他实体的外键引用。主要的区别是,你不需要使用参考键来指定被参考的表。相反,该表是通过删除表名中的"_ID "自动得出的。例如,这被用于C_Order表中的M_Warehouse_ID列(用于在销售订单窗口中显示仓库)。在这种情况下,被引用的表从列名中派生为M_Warehouse(通过删除 "M_Warehouse_ID "名称中的"_ID",得到M_Warehouse)。这导致用户看到一个所有有效仓库的下拉列表。
  • 文本(Text):这是用于最多2000个字符的字符串。
  • Text Long : 这是用于超过2000个字符的字符串。
  • 时间(Time):这是用来表示时间戳的。这方面的一个例子是 "资源类型 "窗口中的 "槽位开始 "字段。
  • URL : 这是用来表示URL的。然后,用户将能够使用该字段上的放大镜图标链接到该URL。
  • Yes-No : 这是用来表示具有下拉列表的字段,包含 "是"、"否 "和一个空字符串的值。如果这一栏是强制性的,这个字段将在webUI中被呈现为一个复选框。

  当你想给用户提供一个供其选择的数值列表,并且该列表是基于一个用户可能有或没有能力添加记录的表时,就会使用表验证的参考验证类型。

  

  当你选择表验证的验证类型时,表验证标签被启用(这是一个为窗口、标签和字段中的标签定义的只读逻辑的例子)。

   在这里你选择表名(Table Name)和表的关键列(Key column)。显示列(Display column)是将在下拉列表框中显示的内容。

  选择显示值(Display Value)复选框,在下拉列表框中显示字段值。

  如果列表中应显示作为表的标识符的所有字段,请选择 "显示标识符(Display Identifiers) "复选框。

  如果合适,可以输入SQL WHERE和ORDER BY子句,以控制列表中显示的内容和顺序。这用于防止摘要组织出现在文档的组织下拉列表框中。

  引用类型(Reference Type)的列表用于你想给用户提供一个可以进行选择的值的列表,但这个列表是在引用中定义的(而不是从一个表格中导出)。 列表最常被用于有一些与所选值相关的逻辑,因此涉及到代码的情况。 在这些情况下,你需要知道可能的值是什么。这方面的例子是销售订单中的发货规则。 这些值被限制在Reference中定义的列表中,所选的值会影响到生成货物的过程。 因此,允许用户输入任何他们想要的值是不合适的。

  当选择了列表验证的验证类型时,列表验证标签被启用。这允许输入将被显示给用户选择的值。 

  搜索键用于控制数值在列表中出现的顺序,而名称是呈现给用户选择的内容。

验证规则(Validation Rule)

  验证规则是用来控制显示给用户选择的内容(类似于参考条目中的SQL Where Claus)。 然而,这些可以用于列中的任何字段类型。 它在表和列的动态验证规则中被选中。 正如其名称所示,它在选择列表或查找时动态地执行。

  在这个例子中,验证被用来确保呈现给用户的选择只包含为所选的业务伙伴定义的地点,并且选择了寄往地址复选框。 这可以防止显示与其他业务伙伴相关联的地点或未被指示为送货地址的地点。 

  这种验证是动态的,因为它是基于另一个字段(在此情况下是业务伙伴)中选择的值。

  与Compiere的其他数据字典窗口一样,验证规则也有一个 "使用列 "标签。如果你想改变一个验证规则,这很有帮助,因为你可以从这个标签中看到系统的其他区域。

接要(SUMMARY)

  Compiere中的应用字典是一个强大的开发工具。 在传统系统中用代码完成的许多工作都可以在应用字典中完成。 这有助于提供整个应用程序的一致性(特别是当多个开发人员参与时)和稳定性,此外还有快速、敏捷的开发。

  Compiere 应用程序中充满了例子,显示了字典的不同功能是如何工作的。 无论你正在进行哪种类型的扩展或定制,你一般都可以在应用程序的其他地方找到一个以类似方式工作的实例。我们建议你在自己的开发工作中使用这些实例作为参考。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值