用友 当前脚本发生错误
亿格用友软件
用友通系列的软件在采购管理,销售管理和库存管理中均有单据列表这个查询按钮,可以汇总查询各种单据明细信息。
打开单据列表的过滤条件界面,录入条件,点击确认后,无任何反应,无任何数据显示出来。
导致这种情况发生,一般有如下几个方面的情况:
- 单据列表定义表vouchlist 表问题
- 视图有问题
- 单据自定义项的问题
- 自定义数据类型有误
- 数据兼容级别的问题
单据列表定义表vouchlist 表问题
Vouchlist表单据列表定义,表如下:
除了账套中的一些自定义项不同外,此表一般和正常账套是一样的。
所以可以新建一套账,将新建账套中的自定义项设置和有问题的账套一致,然后删除有问题账套的vouchlist 表,将新建账套的vouchlist表导入到有误的账套中。
具体操作如下:
1、删除vouchlist表:deletevouchlist
2、导表(以sql2000数据库为例)
点击“导入和导出数据”:
点击“下一步”后,选择“源数据库”即新建的账套,如图:
然后再点击“下一步”,选择“目的数据库”,即有问题的账套,再点击“下一步”,选择“从源数据库复制表和视图”:
然后再点击“下一步”,选择表vouchlist:
然后再点击“下一步”进行导入即可。
视图的问题
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。视图总是显示最近的数据。每当用户查询视图时,数据库引擎会通过使用 SQL 语句来重建数据。可以通过 DROP VIEW 命令来删除视图。
通过以上解释,可以理解为视图是通过sql语句得到的一张显示最近数据的表,本身并不存储任何数据。所以当视图有问题时会导致要显示的表显示不了,这时可以通过删除视图重新创建视图来解决。
- 下面列示出各模块单据列表对应的视图:
- 采购相关视图:
采购订单zpurPOList,zpurpotail采购入库单zpurRkdList,zpurrkdtail采购发票zpurBillList, zpurbilltail。
- 销售相关视图:
SaleOrderListSales_FHD_ListSaleBillVouchZList。
- 库存相关视图:
销售出库单kcsaleoutlist 产成品入库单RecordInList材料出库单RecordOutList 生产加工单KCMatchList其他入库单KCOtherInList其他出库单KCOtherOutList。
- 下面以视图zpurpolist为例,介绍如何进行视图删除和重建。
- 视图删除
数据库中找开对应的账套数据库下的视图,
找到视图zpurpolist,点右键删除。
- 创建视图
从正常账套,打开视图(如999演示账套中)
打开视图,点右键,选择“在新窗口中编写对象脚本”-“创建”
这时会出现如下的窗口:
然后下图标示的位置选对需要创建视图的账套年度库,点击执行,在此账套创建此视图。
自定义项的问题
这种情况出现在:数据量较大,且单据列表中将此自定义项显示出来统计的时候,这时使用的自定义项名称一定不要和系统中的字段名称有重复。如下图中的件数,开单数量和开单金额均会导致单据列表打不开。把“开单数量”改成“开单数量1”,把“开单金额”改成“开单金额1”,把件数改为件数1 等,然后再打开相应的单据列表即可正常。
- 自定义项数据类型不正确
使用SQL数据库中的事件探查器来帮助确认单据列表打不开的原因。软件中找开单据列表,事件探查器跟踪如下:
找到Select Distinct '' as 'zz'…这条SQL执行语句,以及Select * From VouchList… 复制到查询分析器中,执行第一条语句
3、如果第一条Select Distinct '' as 'zz'…这条SQL语句执行出来的结果如下图:
将varchar值 '397WZ-578-0001'转换为数据类型为int的列时发生语法错误。通过软件确认后,发现新力编号这个自定义项有问题。
通过之前跟踪的第二条语句,Select * From VouchList Where cVouchCode='24' order by iColPos可以确认‘新力编号’在VouchList表中,单据类型为cVouchCode='24'。在查询分析器中执行以下语句:
select ifieldtype, * from vouchlist Where cVouchCode='24' and citemname='新力编号'
查询后确认数据类型(ifieldtype)是9,而不是int类型(int类型编号是5)
确认问题的原因后,执行以下语句:
update vouchlist set ifieldtype = 5 Where cVouchCode='24' and citemname='新力编号'
再进入软件,列表就可以打开了。
注:这种情况,也可以通过第一种情况的方法来解决,就是新建立一个自定义项和此账套一致的账套,然后通过导vouchlist表来解决。
数据库级别问题
以上为常见的单据列表打不开的问题,这个是比较不常见的现象,就是数据库兼容级别有问题。
正常的数据兼容级别如下图:
1、找到对应的账套数据年度库,点击右键,点“属性“:
“选项“页签中,数据库兼容级别为 80。
用友软件(广州)客服中心
广州市亿格科技有限公司