NC63开发遇到的错误记录

时间:2024-04-10 22:27:33

NC63开发遇到过的错误,记录一下,写的比较糙

整合的PDF可以在这里下载:整合PDF


1、ARRAY类型为枚举? NO,应该为SINGLE类型并需要添加枚举

NC63开发遇到的错误记录

2、只要修改元数据属性,就需要删除对应的数据表,并重新执行sql语句。枚举类型不需要。

3、新建元数据,唯一约束条件错误

3.1 元数据发布成功过

(连续发布元数据

NC63开发遇到的错误记录

错误出现在这个bmf文件,不是数据库的原因

暂时解决办法:SVN还原前一天的bmf文件,然后在修改之前先删除已发布的元数据

解决办法:删除bmf文件中的所有属性,重新导入。(潜在错误:未正确使用脚本导致id重复

3.2 元数据未发成功过

解决办法:删掉改实体组件,重新创建新的同名实体组件

因为并未保存到库中,因此没有影响,存储元数据的表,md_component

4、同步其他人的代码,造成的无法查询和新增

NC63开发遇到的错误记录

原因:
    新建结点时,修改类路径,造成默认接口路径改变。因此需要导入配置文件到本地的UAP-studio文件夹中。
解决办法:
    核实upm文件是否存在或者类路径信息是否正确,路径为%NCHome%\modules\XXX\META-INF
NC63开发遇到的错误记录

5、无法看见开发出来的单据
  • 清除缓存
6、修改类路径
  • 直接在元数据中修改类路径,发布元数据,生成java源码,但是类路径并没有改
  • 手动直接重构-重命名,报无法找到java vo的错误,系统识别的还是更新前的类路径
  • 删除元数据,重新发布元数据,生成java代码,问题解决了
7、no bean named 'context' is defined
出错原因:界面文件XXconfig.xml文件的某个Context标签下的类路径无法识别,通常出现于新增的Action/按钮情况。
解决办法:
1)寻找最近添加的Action/按钮,查看<bean class="">属性的类路径是否正确。
2)检查UPM文件
3)检查代码是否存在,可能是用chengben项目打开bjcj的单据
8、参照的数据在卡片中显示而在列表中不显示
   参照的字段,只是将参照表的主键存在库里。需要自定义另外的数据(如v_suncontractorname.v_name),来在列表中显示。
    e.g.参照分包商名称里面的字段,则直接将其拖到右边,参照名称中选择分包商名称后,对应的参照数据自动填上。
9、流程平台缓存中不存在该单据或交易类型=1206(1206不唯一)
解决办法:
       1、 重新新建单据,新建单据时会自动把之前建的清除。
        2、先执行delete_Billtype.sql再运行insert_BillType.sql脚本,重新生成对应单据的节点
10、单据模板某个值或某些值卡片中显示而列表中不显示
    e.g.业主信息单据中参照的字段都无法再列表中显示,但是卡片中是显示的
特征:
        字段的某个属性变灰无法修改,无法修改。类似于这种情况。本例子中是“列表是否显示”属性无法进行修改。
         NC63开发遇到的错误记录
方法:
        删除参照字段,该字段重新创建。
11、推单时出现“出现并发,请重新查询”的错误
    使用BeanUtils.copyProperties赋值属性,导致将主键同时复制出来,在系统的insert方法出报错
12、The Attribute is not in the ref
使用AbstractModel时没设置hiddenFieldCode和pkFieldCode
13、不要参照到4层,否则无法保存单据模板
14、发布元数据时报(元数据主键已存在)而无法发布元数据的错误
解决办法:svn回滚,新增的话暂时没有好的解决办法
出现原因:删除元数据
预防措施:发布元数据后,一定不要删除bmf文件相关,否则无法重新发布。预防的话,删文件前务必要右键删除已发布的元数据。ztb/script下的delete all很少可能或许可以一试??
15、所有UAP相关的类无法识别
项目上右键,选择MDE工具->断开UAPHOME链接,然后链接UAPHOME
16、单据无法看见,显示用户没有权限
解决办法:清除NCCACHE,重新打开即可
出现原因:切换系统/数据源后重新打开项目导致的
18、参照字段不触发表体编辑后事件(或参照无法自动带值出来)
出现原因1:该参照引用不存在的字段,导致选择参照时不能给模板中该参照子字段赋值,导致无法触发
解决办法:单据模板初始化,将该参照引用的不存在的字段删除,因为NC不会在模板中自动报错,所以比较坑。

同理,在获取参照下的某值时e.getBillCardPanel().getHeadItem("r_projname.XXXX"),需要将r_projname.XXXX字段拖过来。

出现原因2:参照元数据类型和单据模板中配置的参照类不是对应同一张单据
19、预警无法触发
出现场景:点击立即执行无法触发,无法进行debug
出现原因:UAP-Studio的环境问题
解决办法:更换一个特定的UAP-Studio
20、做档案结点时不要运行脚本
出现过因为运行脚本导致的档案单据中的元数据无法更新的错误,最终新建结点
21、UAP-Studio无法生成单据结点
看其他工程可不可以新建,不可以的话重新把项目导入工作空间
22、查询单据没有值
  • 看组织是否正确
  • 调试private的代码,调试query函数的参数schema。可以查询到sql语句,根据sql语句进行调试
  • 上次出现问题时因为单据日期没有值,导致查不到。没有值是因为单据日期在模板中被删掉了,导致无法赋值
23、无法进行update语句
oracle被锁住,需要找出锁住的地点并解锁。
-- 查询
selectobject_name,machine,s.sid,s.serial#,s.logon_time
fromv$locked_object l,dba_objects o ,v$session s
wherel.object_id = o.object_id andl.session_id=s.sid;
 
-- 解锁
-- alter system kill session 'sid, serial#'
-- 根据查询出来的锁表记录的SID和SERIAL#来释放session
-- 如果提示权限不足的话,请用DBA用户登录进行解锁操作。
24、改private的代码,一定要重启服务!!!
25、修改oracle数据记着commit
27、项目出现红色叹号,无法自动构建clean,删除组件问题
原因:删除组件没删除干净
解决办法(即删除业务模型方式)
项目根目录中的.classpath和manifest.xml中的业务模型对应项删除即可
28、图元实体不存在,某个ID实体不存在
出现场景:导入新的项目,元数据无法本地保存
解决办法:MDE Exploer点击刷新
NC63开发遇到的错误记录
29、删除已发布的元数据造成的无法打开单据造成的错误
出现场景:(修改正式库的代码,但是无法更新元数据,删除已发布的元数据时造成单据无法打开)元数据删除
解决办法:从测试库导出元数据脚本,从正式库执行还原
使用NC6X脚本导出工具V3.0
30、发布元数据,出现实体名重复问题
NC63开发遇到的错误记录
错误原因:
类名称错了。导致重复(实则发布的元数据在项目删除时没有删除,导致库里面存在同名元数据)
NC63开发遇到的错误记录
31、生成sql时遇到写文件错误
错误:
cause by ncmdp.exception.MetaDataException:java.lang.reflect.Invocation TargetException;
          cause by nc.md.model.MetaDataException:写文件出现错误,请检查磁盘文件及文件系统是否只读
出现场景:新建一个项目,新建元数据生成sql脚本时
出现原因:属性中的多语资源模块名、名称空间、所属模块没有值
NC63开发遇到的错误记录
解决办法:项目删除重建,简单发布元数据进行测试
NC63开发遇到的错误记录

32、报表穿透不过去原因
注意,报表穿透涉及的两张表字段名要一样,仅仅值是相同时不行的。
33、表体编辑事件不触发
检查单据模板是否分页签,默认只会触发第一页的项
解决办法:需要在config.xml中配置childrenPicky项
34、单据无法保存
控制台报null错误
原因:单据模板中将“组织”误删,导致没有值,无法保存。注意单据某些原生的字段要拖进单据模板,否则影响系统操作。
37、新建单据保存后出现“重复的列名”问题
表中是新建了重复的数据,在字段名称中,排序后再看看。注意查看元数据对应的字段名称是否重复。
38、生成单据结点时,在功能注册多语资源处卡主无法生成
NC63开发遇到的错误记录
解决办法:
进入所述路径,删除menucode、funcode和之前已经生成过的对应节点文件夹。
NC63开发遇到的错误记录
39、查询模板无法加载
执行对应模块下的sql脚本,delete_QueryTempletInit.sql和insert_QueryTempleteInit.sql
40、单据按钮消失
场景:打开单据,只显示“按钮注册”按钮
原因:1)config.xml文件,最近添加的按钮代码出错(通常可以在控制台中找到出错地点)
          2)按钮权限问题。按钮权限在职责中配置,默认是没有按钮权限。当该单据分配按钮权限后,需要重新分配功能,否则出现上述场景。
41、修改结点名称
方法:修改菜单注册和功能注册的对应节点名称,然后清除缓存
42、单据字段无法保存
关注点:
  • 生成JAVA代码和数据库/元数据字段对不对应
  • 试试其他命名规则,大文本m_开头的都不行、祖鹏传说中的r_XX(参照)字段都不行、后来遇到的i_XX(自定义项)
 (自己写的代码都删了排除其他因素影响,修改元数据/新增字段再重新发布,对比和成功的同类型(大文本)数据的区别,元数据删了重新拖过来,还是不行,。找到原因了、、、生成JAVA代码出错了、、从m开头换成t开头试试、、竟然可以了。。)
43、UAP object is not an instance of declaring class
出现场景:本地运行项目没有错误,部署到测试环境中后,打开某一张单子保存时报错
解决办法:重新部署EJB到bin/sysconfig.bat中
“由于我用的HOME是客户的生产环境HOME,已经做过EJB部署,在我做调用接口的时候会找HOME下EJB文件夹下对应模块里面的'模块名_Local’这个类下找发布的方法,但是我新加的接口并没有发布,所以在这个类里找不到对应的方法。所以我将开发代码放到home中,重新部署EJB后就可以找到对应的方法。如果一开始不做EJB部署应该也不会存在这个问题。”
44、单据保存单据号重复问题
--单据号重复处理脚本,按单据类型 查询出要返回的单据号 rtnsn ,增加 1
select pub_bcr_return.rtnsn,pub_bcr_return.pk_billcodebase
  from pub_bcr_RuleBase    
 inner join pub_bcr_return on pub_bcr_return.pk_billcodebase = pub_bcr_RuleBase.Pk_Billcodebase
 where pub_bcr_RuleBase.nbcrcode = '6109'
   and pub_bcr_RuleBase.pk_group = 'GLOBLE00000000000000'
   and nvl(pub_bcr_RuleBase.isused, 'Y') = 'Y'
  • 查询出重复单据号后,将单据号+1保存
  • 然后将一起查到的
    pk_billcodebase做删除操作
    delete pub_bcr_return where pk_billcodebase='0001ZZ1000000004A5PR'
  • 删除后,记得commit!
45、查询模板导致的,部署系统后出现的问题
出错结果:
无法打开单据出现下面错误
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nc.ui.uif2.tangramlayout.node.HSNode#18b9fac' defined in class path resource [nc/ui/nk/economic/h6h50108/ace/view/Economic50108_config.xml]: Cannot create inner bean 'nc.ui.uif2.tangramlayout.node.CNode#1cdb751' of type [nc.ui.uif2.tangramlayout.node.CNode] while setting bean property 'left'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nc.ui.uif2.tangramlayout.node.CNode#1cdb751' defined in class path resource [nc/ui/nk/economic/h6h50108/ace/view/Economic50108_config.xml]: Cannot resolve reference to bean 'queryArea' while setting bean property 'component'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'queryArea' defined in class path resource [nc/ui/nk/economic/h6h50108/ace/view/Economic50108_config.xml]: Invocation of init method failed; nested exception is java.lang.StringIndexOutOfBoundsException: String index out of range: -1

场景:
 我们这边测试系统的另一个环境用最新的代码 是可以的 但是开发环境连正式库还是不行
开发环境连测试环境也是可以打开的

荆老师提供的解决方法:
1)数据库的问题 然后重新发布元数据试试
2)开发环境连正式库,查看是否出现问题
3)开发环境连测试库,查看是否出现问题
4)问题定位到单据模板和查询模板,询问成员今天是否修改过对应的地方
5)删除单据模板、查询模板,重新生成后再试试
影响数据库的操作:单据模板、查询模板和元数据
解决办法:
将查询模板中类型为自定义项的字段删去
48、保存单据时,报不支持此种业务,请检查 错误
错误原因:新增BLOG类型的数据导致,大文本类型的数据应该是备注类型的
出这种错,可检查元数据中是否有特殊的不常用的字段
荆老师说的潜在原因:业务类型字段去找原因
49、生成单据结点时,点击第一个“下一步”时报表dapSystem中不存在XXX模块
错误原因:
模块名需要在功能注册中提前设置好,否则不可以
解决办法:
确保新建模块项目中的模块名称和功能注册中的上级菜单中的模块名对应上,注意只能用小写字母。
50、生成单据节点时报父节点不存在或者为虚菜单的空指针错误
解决办法:
去功能注册和菜单注册中检查,上次菜单是否存在。若不存在,手动新建一个。
51、报表求和功能无法使用问题
插入小计:求和之前要先合并扩展区域
NC63开发遇到的错误记录
NC63开发遇到的错误记录
52、delete或update后未提交导致的事务锁死
1、查询出锁住的sid和session
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid
2、终止对应的事务

ALTER system KILL session '399,2084'; (分别对应sid和serial#)
3、谨慎操作、不要误删系统事务,否则会引起数据库的崩溃
53、职责中找不到新建完成的节点
新建单据结点后,功能注册和菜单注册下面出现新建出来的节点,但是职责中分配功能时无法找到。
解决方法:账套管理员登入,在“业务初始化”中,增补对应的模块

54、查询单据出错
查询模块初始化无法打开,由于查询模板中存在已被删除的元数据。
解决办法:1)删除对应的字段,执行delete语句,然后insert回来
  1. select * from pub_query_condition where field_code='r_xxjjb' and PK_TEMPLET = (SELECT ID from PUB_QUERY_TEMPLET where MODEL_CODE='H3H40301');
  2. delete pub_query_condition where field_code='r_xxjjb' and PK_TEMPLET = (SELECT ID from PUB_QUERY_TEMPLET where MODEL_CODE='H3H40301');
2)查询模板初始化删除出错字段(一般为自定义项)
55、保存单据时,获取自定义属性失败错误
解决办法:将参照带出的相关自定义项类型字段删除,或者取消卡片/列表下显示,对应字段显示通过显示公式配置。
56、单据模板初始化 参照带不出来值
解决办法(4类):
1)查看控制台,由于参照带出的值不存在所致,删除不对应的数据即可
2)检查是否有不正确的关键字名
NC63开发遇到的错误记录
3)参照标题,参照类的主键应该为pk_deftable_b不是默认的pk_deftable_h
        this.setPkFieldCode("pk_deftable_b");
        this.setHiddenFieldCode(new String[]{"pk_deftable_b"});
4)参照11,由于某些字段(如列表下显示)变灰失效。解决办法:删除参照字段,重新拖回。
58、多表体中,参照带值不能全部即时显示
解决办法:
参照类型字段赋值后,重写加载,调用loadLoadRelationItemValue
panel.getBillModel("pk_deftable_b1").loadLoadRelationItemValue();
panel.getBillModel("pk_deftable_b2").loadLoadRelationItemValue();
59、提交单据报operation failed baseDao.retrieveByPK null错误
执行super.doAction()时报错
解决办法:重新发布元数据
60、修改元数据后,单据模板
NC63开发遇到的错误记录
原因:元数据丢失
解决办法:删除已发布的元数据,再发布元数据
61、生成JAVA代码失败
NC63开发遇到的错误记录
查找对应的实体ID,查找元数据管理,发现本单据的元数据丢失(原因:其他人改过本张单据的元数据),元数据丢失导致无法生成Java代码和建库。
出错原因:单据中某个字段属性出错,引用问题等等,找到出错字段删除即可(可以根据二分删除、查找SVN修改记录等方式查找)
62、Error to init aggVOStyle
出错原因:元数据丢失,重新发布元数据后再重启服务
63、修改元数据方法
1)元数据管理-升级,上传bmf文件
2)UAP-Studio连远程环境发布,不行的话(切换数据源)重启UAP-Studio
64、功能注册结点位置错误
select FUN_NAME,FUNCODE,cfunid,parent_id from sm_funcregister
where funcode LIKE 'H3H4%';
将pareent_id设置为要指向的功能结点PK即CFunid    
NC63开发遇到的错误记录
[转载](https://blog.csdn.net/SN2OVFAN/article/details/74178303)