NC65客开单据自定义项处理以及自定义项相关介绍(超级详细带图以及代码NC65自定义项大全)

自定义项教程

自定义项和物料辅助属性简介

  • 自定义档案的概念:
    NC系统中有大量的档案,这些档案中有相当一部分为系统预置的,鉴于用户对系统应用的个性化需求,系统支持用户自定用户自己的档案,并对其进行维护管理,以增强系统可用性与扩展性。
  • 自定义档案维护:
    见节点【企业建模平台】→【基础数据】→【自定义项】→【自定义档案维护】
  • 用户定义属性(也称自定义项引用):
    用户自定义属性必须依附于某个单据,可以理解为用户对单据进行个性化加工的载体,更技术一些描述就是字段。NC系统为各个领域、模块中大多数的单据都预置了多个自定义属性。供应链的单据在表头、表体均存储了20个自定义项字段(命名参见相关规范,有些单据需求要求更多数量)。用户需要使用某个自定义项字段来保存个性信息时,就要由管理员配置这个自定义项的引用,既可用引用基础数据中定义的自定义档案,也可引用可参照到的各种档案,还可以基本类型。
    维护节点:【企业建模平台】→【基础数据】→【自定义项】→【用户定义属性】。配置好单据对自定义项的引用后,做单据时就可以维护和显示这些自定义项了。
  • 用户定义属性组找不到对应单据:
    其中 引用用户定义属性组的实体为对应的元数据实体

相关的SQL可以在前台上述两个节点进行新增或者使用下面的sql进行新增

sql 复制代码
INSERT INTO BD_USERDEFRULE (CODE, COMP, CREATIONTIME, CREATOR, DATAORIGINFLAG, DR, ITEMCOUNT, MODIFIEDTIME, MODIFIER, NAME, NAME2, NAME3, NAME4, NAME5, NAME6, PARENT_ID, PK_GROUP, PK_ORG, PK_USERDEFRULE, RULETYPE, SHOWORDER, TS) VALUES ('CGHT', null, '2021-03-23 10:00:00', '1001A110000000001ME2', null, null, 20, null, '~', '采购合同_H', null, null, null, null, null, null, '~', '1001Z810000000002CW', '1001A1100000002UICMN', 0, 0, '2021-03-23 10:00:00');
INSERT INTO BD_USERDEFRULE (CODE, COMP, CREATIONTIME, CREATOR, DATAORIGINFLAG, DR, ITEMCOUNT, MODIFIEDTIME, MODIFIER, NAME, NAME2, NAME3, NAME4, NAME5, NAME6, PARENT_ID, PK_GROUP, PK_ORG, PK_USERDEFRULE, RULETYPE, SHOWORDER, TS) VALUES ('CGHTB', null, '2021-03-23 10:00:00', '1001A110000000001ME2', null, null, 20, null, '~', '采购合同_B', null, null, null, null, null, null, '~', '1001Z810000000002CWS', '1001A1100000002UICMQ', 0, 0, '2021-03-23 10:00:00');
sql 复制代码
INSERT INTO BD_USERDEFRULEREF (CHECKCLASS, CREATIONTIME, CREATOR, DATAORIGINFLAG, DR, MODIFIEDTIME, MODIFIER, PK_USERDEFRULE, PK_USERDEFRULEREF, PREFIX, REFCLASS, TS) VALUES (null, '2021-03-23 10:00:00', '1001A110000000001ME2', null, null, null, '~', '1001A1100000002UICMN', '1001A1100000002UICMP', null, 'c7aca2c3-109f-4f9e-aa67-6ccf3befe6a7', '2021-03-23 10:00:00');
INSERT INTO BD_USERDEFRULEREF (CHECKCLASS, CREATIONTIME, CREATOR, DATAORIGINFLAG, DR, MODIFIEDTIME, MODIFIER, PK_USERDEFRULE, PK_USERDEFRULEREF, PREFIX, REFCLASS, TS) VALUES (null, '2021-03-23 10:00:00', '1001A110000000001ME2', null, null, null, '~', '1001A1100000002UICMQ', '1001A1100000002UICMR', null, 'd58ac9ce-5eeb-4013-8f39-71068682d16f', '2021-03-23 10:00:00');

自定义项代码和配置部分(客开单据)

如果是客开单据那么需要在配置文件中配置自定义项处理的相关类

  1. 需要修改的部分
xml 复制代码
	<!--====== 视图元素:[PUBAPP列表视图控件(ShowUpableBillListView)实例对象] ============== -->
	<bean id="billListView" class="nc.ui.pubapp.uif2app.view.ShowUpableBillListView"
		init-method="initUI">
		<property name="model">
			<ref bean="bmModel" />
		</property>
		<!-- 列表自定义项处理 更改开始-->	
		<property name="userdefitemListPreparator">
			<bean class="nc.ui.pubapp.uif2app.view.CompositeBillListDataPrepare">
				<property name="billListDataPrepares">
					<list>
						<ref bean="userdefitemlistPreparator" />
					</list>
				</property>
			</bean>
		</property>
		<!-- 列表自定义项处理 更改结束-->
		<property name="nodekey" value="bt" />
		<property name="multiSelectionEnable" value="false" />
		<property name="templateContainer" ref="templateContainer" />
	</bean>


	<!--====== 视图元素:[PUBAPP表单控件(ShowUpableBillForm)实例对象] ============== -->
	<bean id="billForm" class="nc.ui.pubapp.uif2app.view.ShowUpableBillForm"
		init-method="initUI">
		<property name="model">
			<ref bean="bmModel" />
		</property>
		<property name="nodekey" value="bt" />
		<!-- 卡片自定义项处理 更改开始-->
		<property name="userdefitemPreparator">
			<bean class="nc.ui.pubapp.uif2app.view.CompositeBillDataPrepare">
				<property name="billDataPrepares">
					<list>
						<ref bean="userdefitemPreparator" />

					</list>
				</property>
			</bean>
		</property>
		<!-- 卡片自定义项处理 更改结束 -->
		<!-- 表体行操作按钮注册,这只是一组默认设置,开发人员需要自己在此添加其他需要的表体行操作按钮 -->
		<property name="bodyLineActions">
			<list>
				<bean class="nc.ui.ct.ctysj.actions.HtBodyAddLineAction" />
				<!-- <bean class="nc.ui.pubapp.uif2app.actions.BodyInsertLineAction" 
					/> -->
				<bean class="nc.ui.pubapp.uif2app.actions.BodyDelLineAction" />
			</list>
		</property>
	</bean>
  1. 需要新增的部分
xml 复制代码
	<!-- 卡片自定义项配置 -->
	<bean name="userdefitemPreparator" class="nc.ui.uif2.editor.UserdefitemContainerPreparator">
		<property name="container" ref="userdefitemContainer" />
		<property name="params">
			<list>
				<bean class="nc.ui.uif2.editor.UserdefQueryParam">
					<!-- 该地方需要根据元数据修改 -->
					<property name="mdfullname" value="ct.ct_ht" />
					<property name="pos" value="0" />
					<property name="prefix" value="vdef" />
				</bean>
				<bean class="nc.ui.uif2.editor.UserdefQueryParam">
					<!-- 该地方需要根据元数据修改 -->
					<property name="mdfullname" value="ct.ct_ht_b" />
					<property name="pos" value="1" />
					<property name="prefix" value="vbdef" />
				</bean>
			</list>
		</property>
	</bean>

	<!-- 列表自定义项处理 -->
	<bean name="userdefitemlistPreparator" class="nc.ui.uif2.editor.UserdefitemContainerListPreparator">
		<property name="container" ref="userdefitemContainer" />
		<property name="params">
			<list>
				<bean class="nc.ui.uif2.editor.UserdefQueryParam">
					<!-- 该地方需要根据元数据修改 -->
					<property name="mdfullname" value="ct.ct_ht" />
					<property name="pos" value="0" />
					<property name="prefix" value="vdef" />
				</bean>
				<bean class="nc.ui.uif2.editor.UserdefQueryParam">
					<!-- 该地方需要根据元数据修改 -->
					<property name="mdfullname" value="ct.ct_ht_b" />
					<property name="pos" value="1" />
					<property name="prefix" value="vbdef" />
				</bean>
			</list>
		</property>
	</bean>
	<!-- 通用部分 -->
	<bean id="userdefitemContainer" class="nc.ui.uif2.userdefitem.UserDefItemContainer">
		<property name="context" ref="context" />
		<property name="params">
			<list>
				<bean class="nc.ui.uif2.userdefitem.QueryParam">
					<!-- 该地方需要根据元数据修改 -->
					<property name="mdfullname" value="ct.ct_ht" />
				</bean>
				<bean class="nc.ui.uif2.userdefitem.QueryParam">
					<!-- 该地方需要根据元数据修改 -->
					<property name="mdfullname" value="ct.ct_ht_b" />
				</bean>
				<bean class="nc.ui.uif2.userdefitem.QueryParam">
					<property name="rulecode" value="materialassistant" />
				</bean>
			</list>
		</property>
	</bean>

说明:

将单据中需要用到的所有自定义项配置好,一次加载数据,卡片或列表引用时从container取值,可以减少连减数。

有两个参数context和params。每一组param中,可以设置mdfullname或rulecode方式查询自定义项,mdfullname取值为元数据命名空间加名称,rulecode取值为对应用户定义属性组的编码(一般为materialassistant)。

普通单据一般需要设置三组param,即表头自定义项、表体自定义项、物料辅助属性。

卡控件中配置不变;

卡片自定义项配置与以前完全不同,其中引用类改为nc.ui.uif2.editor.UserdefitemContainerPreparator,有两个参数container和params。

每一组param中,属性mdfullname对应实体元数据的全名(spacename.entityname);属性rulecode对应用户定义属性组的编码;mdfullname和rulecode属性在每一组param中不能同时设置;

属性pos标识自定义项显示位置,取值为0,1,2,对应IBillItem.HEAD, IBillItem.BODY, IBillItem.TAIL;

属性prefix表示自定义项前缀。

自定义项代码和配置部分(标准单据)

标准单据进行扩展自定义项,需要在元数据、数据库表、实体VO、单据模板等进行扩展

  1. 扩展元数据

    使用UAP找到对应的元数据所需要扩展的实体类进行扩展自定义项

  2. 扩展完实体以后发布扩展的元数据

  3. 将增加自定义项的表进行扩展

    本次以增加一个自定义为例

sql 复制代码
ALTER TABLE ct_pu ADD (vdef20 varchar2(101) default null);
  1. 生成增加的自定义字段对应的VO

  2. 用户定义属性组增加定义属性属性

  3. 单据模板初始化和单据模板设置(集团)将新增的自定义项字段拖拽过去

相关推荐
Pluto_CSND2 分钟前
hbase shell的常用命令
大数据·数据库·hbase
哈哈真棒19 分钟前
sparkSQL读入csv文件写入mysql(2)
数据库·mysql
Cynicism_Smile25 分钟前
Mysql 8.0.32 union all 创建视图后中文模糊查询失效
数据库·mysql
小oo呆25 分钟前
【自然语言处理与大模型】向量数据库技术
数据库·人工智能·自然语言处理
小刘不想改BUG1 小时前
LeetCode LCR 010 和为 K 的子数组 (Java)
java·算法·leetcode
MeyrlNotFound1 小时前
(二十一)Java集合框架源码深度解析
java·开发语言
正在走向自律1 小时前
2025年、2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建+Maven下载及配置)
java·jvm·jdk·maven·intellij-idea
不会就选C.1 小时前
【开源分享】健康饮食管理系统(双端+论文)
java·spring boot·开源·毕业设计
永远有多远.1 小时前
【高频面试题】LRU缓存
java·缓存·面试
Ten peaches1 小时前
Selenium-Java版(环境安装)
java·前端·selenium·自动化