NC65加自定义项

本地测试环境

1.导入元数据

在数据字典根据元数据路径找到元数据文件

image-20240727143133215

在MDP视图下,在对应模块项目导入元数据文件

image-20240727143047090

2.添加自定义项

添加自定义项之前,要先确认表头表体单据的业务接口属性映射,保证添加完自定义项之前与之后一致,否则会出现单据追溯失败问题

971d33ab768bb1b6441e82fa7967d04

添加需要的自定义项,勾选动态属性(不确定勾不勾选是否影响生成)

image-20240727143711348

添加完成后保存,不论添加的是表头还是表体,都在表头的实体上右键发布元数据

image-20240727144631321

发布完成后,按下面步骤查看数据库,看表中是否有相关自定义项被添加进去

首先打开导入元数据项目所在目录,在其METADATA文件夹中可以看到发布完成的元数据文件:

image-20241204100444863

然后右键以文本文档形式打开,如下id即为查询所用的id

image-20241204100659643
然后去执行查询:

--查元数据对应的class信息,条件id的值为:元数据entity标签上的id,entity标签一般有两个,表头和表体各一个
--这里举例的是表头id
select * from md_class where id='1050e13a-a996-4b75-8abb-5a9eceab7ab1';

--查元数据对应class的属性字段,条件classid的值和也是元数据entity标签上的id
select y.*,y.rowid from md_property y where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' --and displayname like '%自定义%' 

--查元数据自定义项属性,条件classid的值和也是元数据entity标签上的id
select * from  md_ormap where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' and columnid like '%vdef%'

--查对应表中的字段,tableid为表的英文名
select * from md_column where tableid like 'ic_material_h'

在对应实体类代码,及数据表中添加相应字段、get set方法

实体类:

image-20240727145322278

表:

ALTER TABLE 表名
ADD (
  vbdef21 varchar2(101) default null,
  vbdef22 varchar2(101) default null,
  vbdef23 varchar2(101) default null,
  vbdef24 varchar2(101) default null,
  vbdef25 varchar2(101) default null,
  vbdef26 varchar2(101) default null,
  vbdef27 varchar2(101) default null,
  vbdef28 varchar2(101) default null,
  vbdef29 varchar2(101) default null,
  vbdef30 varchar2(101) default null,
  vbdef31 varchar2(101) default null,
  vbdef32 varchar2(101) default null,
  vbdef33 varchar2(101) default null,
  vbdef34 varchar2(101) default null,
  vbdef35 varchar2(101) default null,
  vbdef36 varchar2(101) default null,
  vbdef37 varchar2(101) default null,
  vbdef38 varchar2(101) default null,
  vbdef39 varchar2(101) default null,
  vbdef40 varchar2(101) default null
);

3.更新配置

将完成的实体类导出补丁,连同修改后的元数据,一起更新到home,然后重启。重启完成后,管理员账号admin登录

登录后,在元数据管理页面,左边找到对应单据点击,查看自定义项是否存在

image-20240727151702303

元数据管理查看无问题后,可切换为开发账号或系统账号,去对应页面点击增删改按钮,看单据操作是否有问题

image-20240727152244112

验证单据无问题后,继续以非admin账号,进入用户定义属性组页面,左侧点击对应单据,点击修改按钮,修改用户定义属性数量自定义项数量,然后保存

image-20240727152358795

在以非admin账号进入用户定义属性设置-集团页面:

左侧点击对应单据自定义项,点击修改按钮:

image-20240727152651928

添加自定义项的类型与长度,类型点击放大镜中base基本类型组件的字符串String

image-20240727152820535

长度与元数据中添加的保持一致,为101,添加后如下,点击保存即可:

image-20240727153109876

单据页面的字段显示名称也需要在用户定义属性设置-集团中修改,如下图,将自定义项21名称改为审核状态

image-20240729082752040asd

4.单据模板设置

admin管理员登录客户端,进入单据模板初始化界面,将左侧的自定义项都拖入到右侧

image-20240727163613526

拖入后,切换开发账号或系统账号登录,进入模板设置-集团界面,点击有单据名的文件夹图标,点击复制,复制一个新的模板即可(因为新增自定义项后,需要使用上一步管理员admin所设置的新模板,旧的没有新增的自定义项

image-20240727171904772

模板设置-集团页面,左侧找到对应单据点击,右侧选则对应复制新增的模板,点击分配按钮,

image-20240727153957144

点击分配按钮后,在弹框中搜索用户或角色,移到右边点击确定,该用户或角色即可在对应单据看到新增的自定义项

image-20240727154150454

将新的模板设置为默认模板

image-20240727173013344



正式环境

1.将上面已完成的元数据及代码更新到home,在正式数据库添加对应字段

2.管理员账号admin登录客户端,在元数据管理页面,左边找到对应单据,点击选中,然后点上面的升级按钮,弹框选择修改完成的元数据文件.bmf进行升级,升级后查看是否出现新增的自定义项(查md_class、md_property、md_ormap、md_column等表)

3.上一步的数据表种有了自定义项无问题后,重启服务

4.,重启完成后在admin登录元数据管理页面去看自定义项是否添加成功,然后进行用户定义属性及属性组、单据模板配置,与本地测试环境的3、4步操作一致

image-20240727151809442

失败的问题排查

添加失败,或添加后单据报错

排查1:md_property表中如果有HELP字段为URC的多余记录,要删除

image-20240729102851200

删除后在MDP视图删除发布的元数据

image-20240729143933919

检查下面的表是否为空,正常删除发布的元数据后查询应该为空,然后重新发布元数据,遇到不可处理的错误可以重新导入元数据重新改再发布,然后重启服务。

--查元数据对应的class信息,id对应元数据中,entity标签displayName属性为表头表体vo名的id 
select * from md_class where id='1050e13a-a996-4b75-8abb-5a9eceab7ab1';

--查元数据对应class的属性字段,classid对应元数据中,entity标签displayName属性为表头表体vo名的id
select y.*,y.rowid from md_property y where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' --and displayname like '%自定义%' 

--查元数据自定义项属性,classid对应元数据中,entity标签displayName属性为表头表体vo名的id 
select * from  md_ormap where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' and columnid like '%vdef%'

重启后删除相关的单据模板配置(新增自定义项之前的模板可以不用),用户定义属性页面的配置可以不用删除,

但是在管理员登录客户端配置单据模板时,需要将之前拖入到表头表体的自定义项删除,重新拖入,然后再看是否成功

image-20240729144732722

元数据升级无反应

在admin登录元数据管理页面,对元数据进行升级后,如果数据库信息没有发生变化,没有新加的自定义项,则使用如下语句查询当前数据库中元数据的版本号:

--查元数据版本号,id为元数据跟标签(第一行)上的id
select version from md_component where id = 'e50d9302-d87c-4d57-807d-2a0772bf0564' and industry = '0' and versiontype = '0'

id是下面这个id,在以xml格式打开元数据文件的第一行上:
image-20240814203812716
通过查询出的版本号,与bmf元数据文件里的VERSION进行对比,如果数据库里的版本高于bmf文件的版本,则修改元数据文件版本号,保证新发布的元数据版本高于现在版本。

自定义项类型错误

报错某个自定义项类型错误时,去查该自定义项是否已经被使用,如果如下sql查询有结果,则就是该自定义项被使用的地方

select * from bd_userdefrule where pk_userdefrule in (select pk_userdefrule from bd_userdefitem  where  showname  = '非扣吨' )
<think>嗯,用户这次问的是NC633系统自定义项的使用方法、设置方式和相关介绍。从引用的资料来看,NC系统的自定义项涉及多个层面:查询条件设置、元数据扩展、下拉菜单配置和外部数据调用。我需要把这些碎片信息整合成系统性的操作指南。 用户提到的是NC633版本,这个版本应该和引用中提到的NC56、NC65功能类似。自定义项的核心逻辑可能是相通的:既要满足业务字段扩展需求,又要保证系统稳定性。值得注意的是引用[2]提到的痛点——系统默认20个自定义项经常不够用,这说明用户可能需要大规模扩展字段。 在组织回答时,应该先区分两类自定义项:基础档案关联字段(如引用[1]中提到的bd_corp表字段)和真正的新增字段。前者属于系统已有字段的再利用,后者才是真正的元数据扩展。引用[2]提供的元数据扩展步骤很关键,包括复制元数据、修改配置文件等操作,但需要提醒用户测试环境先行。 特别要注意引用[3]暴露的陷阱:自定义项设置为下拉菜单时,如果启用异常需要删除才能显示。这个细节容易踩坑,应该在回答中重点标注。另外引用[4]提到的自定义参照索引问题也很有趣,外部数据接入时需要手动指定显示顺序,这种设计确实容易导致开发人员出错。 用户身份可能是NC实施顾问或企业系统管理员,提问非常精准。ta没有问初级操作,而是直接要求“使用方法、设置方式及相关介绍”,说明需要体系化知识。考虑到NC633版本较老,部分操作可能和新版本有差异,回答时需要强调“以实际环境为准”。 最后设计的问题要覆盖不同角色需求:开发者关心扩展步骤,管理员关注风险控制,业务人员需要知道如何使用。这三个衍生问题正好形成知识闭环。 </think>以下是基于NC633系统的自定义项使用指南,整合了引用资料的关键信息: ### 一、自定义项核心功能 1. **字段扩展** - 解决系统默认自定义项数量不足的问题(默认约20个)[^2] - 支持在单据/档案中增业务特有字段(如采购入库单扩展)[^2] 2. **查询关联** - 制作自定义查询时优先关联表头字段(如销售订单表头)[^1] - 常用基础档案字段: `bd_corp.pk_corp`(公司主键) `bd_corp.unitname`(公司名称) `bd_corp.fathercorp`(上级公司主键)[^1] --- ### 二、设置流程详解 #### ▶ **新增元数据字段(以采购入库单为例)** ```sql /* 引用[2]操作步骤 */ 1. 复制元数据:从NCHOME目录拷贝元数据文件到开发环境 2. 修改配置文件:扩展自定义项上限并定义新字段属性 3. 重启服务:使新元数据生效 ``` #### ▶ **查询条件设置为下拉菜单** ```sql -- 启用下拉菜单前需清理异常配置 [^3] SELECT * FROM BD_USERDEFRULE WHERE code LIKE '45%'; -- 查询用户自定义组 SELECT * FROM bd_userdefitem WHERE pk_userdefrule='1001Z8100000000005F5'; -- 查属性 DELETE FROM bd_userdefitem WHERE pk_userdefitem ='1001A11000000043M1AS'; -- 删除冲突项 ``` #### ▶ **外部数据接入自定义参照** ```java // 引用[4]关键点: Vector 赋值时需注意: 1. 字段顺序必须与 FiledCode 声明完全一致 2. 最后一位需添索引值(从1开始)控制显示顺序 3. 字段数 = 定义列数 + 1(索引位) ``` --- ### 三、使用建议与避坑指南 1. **数据关联原则** - 优先关联稳定表头字段,避免因明细表结构变化导致查询失效[^1] 2. **索引设计要点** - 外部数据接入时索引值缺失会导致数据显示错乱[^4] 3. **扩展风险控制** - 元数据修改前必须备份测试环境,严禁直接修改生产环境[^2] - 下拉菜单配置异常时,需彻底删除错误项才能正常显示[^3] > **注**:NC633与NC65操作逻辑基本一致,但具体菜单位置可能略有差异,建议通过`管理工具 > 动态建模平台 > 基础数据管理`路径查找自定义项配置模块。 --- ### 相关问题 1. 如何在NC633中实现自定义项的跨单据传递? 2. 自定义项扩展导致系统性能下降时如何优化? 3. 如何通过二次开发实现自定义项的自动计算公式? [^1]: 关联字段选择规范 [^2]: 元数据扩展流程 [^3]: 下拉菜单异常处理 [^4]: 外部数据接入结构设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值