上传者: 36654971
|
上传时间: 2025-08-04 21:58:26
|
文件大小: 355KB
|
文件类型: DOCX
参照是在NC框架下开发中非常常见的一个专项,本质就是在编辑某字段时通过触发参照时获得的一些信息(集团、组织、用户等),临时拼成SQL语句,到数据库中指定的单张或联查多张表,过滤出所有备选项,展现在页面参照选择对话框中供用户选择。目的是统一提供基本档案的录入,防止手工录入产生的错误。NC系统中的参照大致分为两种:系统参照(物料、集团等预制好的)和自定义参照。
### NC标准参照开发详解
#### 一、NC参照开发概述
在NC系统中,参照机制是一种重要的功能,用于简化和标准化基本档案的录入工作,从而减少由人工输入引起的错误。参照开发主要涉及到当用户编辑某一字段时,通过触发参照功能获取相关信息(例如集团、组织、用户等),并基于这些信息动态构建SQL语句来查询数据库中的单个或多个表,筛选出符合条件的备选记录,最终在界面上以参照选择对话框的形式展现给用户进行选择。
#### 二、NC系统的参照分类
NC系统中的参照大致分为两大类:系统参照和自定义参照。
- **系统参照**:由NC系统预先定义好的参照,如物料、集团等。这类参照通常较为通用,可以直接使用而无需额外的开发工作。
- **自定义参照**:根据具体业务需求定制的参照,需开发者自行设计和实现。
#### 三、系统参照开发详解
系统参照的开发相对简单,主要包括单据模板参照和查询模板参照。
##### 1. 单据模板参照
在单据模板中设置参照字段时,只需在元数据中将相应字段的类型样式设为“REF”,并选择合适的系统参照类型即可。需要注意的是,某些参照类型可能不会自动带出参照名称,这种情况下需要手动补全。此外,在单据模板初始化中还可以对参照进行更具体的设置,比如离开焦点时显示名称、启用数据权限等。
对于较复杂的参照场景,还需在编辑前事件中传入特定参数来精确控制数据过滤,如下例所示:
- **离散订单表头产品字段**:在编辑前事件中需要取出产品的参照模型,并设置集团等信息,以便更准确地过滤数据。
##### 2. 查询模板参照
查询模板中的参照字段设置选项较少,但同样需要设置过滤条件。与单据模板不同,查询模板没有编辑前后事件,因此参照过滤和字段间的联动设置更为复杂。
- **查询模板参照过滤设置**:可以通过实现平台提供的`IQueryConditionDLGInitializer`接口来进行设置。在接口的初始化方法中,利用`QueryConditionDLGDelegator`对象进行参照设置。
- **字段间的联动**:对于需要根据另一字段值动态调整过滤条件的情况,可以通过手动配置字段监听来实现。具体操作是继承`AbstractLinkageColumnListener`类,并在其中定义监听和联动逻辑。
#### 四、自定义参照开发详解
自定义参照是根据业务需求定制的,相较于系统参照而言更为灵活。
##### 1. 最简单的自定义参照
自定义参照的基本构成包括参照模型定义和SQL拼接规则的制定。
- **参照模型定义**:自定义参照需要定义参照模型(`RefModel`)。与系统参照不同,自定义参照对应的表在元数据实体定义时必须实现`IBDObject`接口。
- **SQL拼接规则**:根据具体业务需求,自定义SQL语句的拼接规则,以确保能够正确地过滤出所需的数据。
##### 2. 自定义参照开发流程
- **定义参照模型**:创建自定义的参照模型类,定义其属性和方法。
- **实现参照接口**:参照模型类需实现特定接口,以支持参照功能。
- **设置SQL拼接规则**:根据业务需求定义SQL语句的拼接逻辑。
- **集成到业务单据**:将自定义参照集成到相应的业务单据中,以便在使用时可以调用。
#### 五、总结
NC系统中的参照开发是一项重要的技术实践,不仅能够提高数据录入的准确性,还能提升用户体验。无论是系统参照还是自定义参照,都有其适用场景和技术要点。开发者需要根据实际需求灵活选择并实现相应的参照机制,以满足不同的业务需求。通过对参照开发的深入了解和实践,可以进一步提升NC系统的灵活性和实用性。