【苍穹踩坑】之行政区划原创
金蝶云社区-wh_cn
wh_cn
3人赞赏了该文章 621次浏览 未经作者许可,禁止转载编辑于2021年08月15日 11:27:59

现象:

    用户反馈某张业务单据保存时报错:

image.png



分析

    根据提示可以看到是单据保存时无法将空格写入数值型的列中,经检查这个字段是行政区划。而行政区划是基础资料,怎么会出现要保存空格呢?

    此报错也并非所有用户都有反馈,为了探究错误发生的原因我们直接联系具体用户,看了具体的操作。发现单据中行政区划字段如果不做选择直接保存就会出现报错,而选择了行政区划的值则不会引发此错误。

    看来就是这个字段的问题,接下来就排查一下原因了。由于这个错误时发生在本地部署的环境中,所以直接连数据库看一下,该字段在数据库中类型是bigint,这应该没有问题啊。接下来进BOS查看该字段,发现这个字段并非直接使用的基础资料字段,而是使用了“行政区划”image.png。难道是这个问题?

    于是尝试在单据中再增加一个行政区划字段,保存后道数据库中查看了,发现新增的行政区划字段类型竟然是varchar(50)。于是乎明白了报错的原因,将原来的bigint型行政区划类备份后修改成为varchar,再次测试一切正常。

    至此已经明白了报错的原因:基础资料字段由于在单据中存储内码,所以数据库中是bigint类型的;而“行政区划”字段对应数据库列类型是varchar,如果选择了内容那么存储内码是整数不会出现什么问题,一旦没有选择,那么就会存一个空格“ ”,就会出现类型错误。

    至于为什么会出现类型不一致,后续跟实施沟通后发现,单据中该字段原来是基础资料选择行政区划,后来为了比较好的体验,删除后更换为“行政区划”,并且继续使用了原字段名;调整之后由于一般做单据都会选择行政区划,这个问题一直没有暴露,直到有个用户在没有选择该字段内容的情况下点了保存,才将以上问题暴露出来。


总结:

1、在BOS中删除字段时数据库对应列是不会被删除的,如果调整字段类型而继续使用原字段的话必须保证数据库列的类型一致,否则会出现问题。

2、做了任何调整之后必须经过完善的测试,不仅仅是正常操作,更要对各种异常、不允许的、不合法的操作进行充分测试,否则很可能在不经意中给你“惊喜”。

赞 3