新闻资讯  > 知识学习

公司资讯 行业资讯 知识学习
2024优惠活动:迷你版1880元,KIS软件5折,金蝶云6折起!

金蝶KIS旗舰版业务单据保存时提示插入重复键?

发布时间:2023-2-6浏览:1138次

【问题描述】

业务单据(出入库单据,如销售出库、外购入库等)保存的时候提示“单据未能正确保存,原因如下:插入重复键值”?


【场景介绍】

业务单据不能正常保存。提示“插入重复键值”。



【解决方案】

该问题有两种情况:

情况一:因为单据体存在脏数据,存在有单据体,没有单据头的情况,导致单据体被异常占用,无法新增单据,请用以下语句进行检测:

--库存类单据(出库类单据+入库类单据)

select * from icstockbillentry where finterid not in (select finterid from icstokcbill)

--销售订单

select * from seorderentry where finterid not in (select finterid from seorder)

--采购订单

select * from poorderentry where finterid not in (select finterid from poorder)

--销售发票

select * from icsaleentry where finterid not in (select finterid from icsale)

--采购发票

select * from icpurchaseentry where finterid not in (select finterid from icpurchase)


如果查询出来数据,则代表有上述的情况需要进行修复,需要将这部分异常的单据体进行删除,修复语句如下:

--库存类单据(出库类单据+入库类单据)

delete from icstockbillentry where finterid not in (select finterid from icstokcbill)

--销售订单

delete from seorderentry where finterid not in (select finterid from seorder)

--采购订单

delete from poorderentry where finterid not in (select finterid from poorder)

--销售发票

delete from icsaleentry where finterid not in (select finterid from icsale)

--采购发票

delete from icpurchaseentry where finterid not in (select finterid from icpurchase)


情况二:单据中的最大内码在已有单据中已存在,导致新增内码失败,无法保存新增单据,请用以下语句进行检测,如果第一行查出的数小于第二行查出的数,则证明有问题:

--出入库单据

select max(finterid) from icstockbill 

select * from icmaxnum where ftablename='icstockbill'



--销售订单

select max(finterid) from seorder 

select * from icmaxnum where ftablename='seorder'

--采购订单

select max(finterid) from poorder 

select * from icmaxnum where ftablename='poorder'

--销售发票

select max(finterid) from icsale 

select * from icmaxnum where ftablename='icsale'

--采购发票

select max(finterid) from icpurchase 

select * from icmaxnum where ftablename='icpurchase'


修改方案(需执行对应单据的语句):

--出入库单据

update icmaxnum set fmaxnum=(select max(finterid) from icstockbill)+1 where ftablename='icstockbill'

--销售订单

update icmaxnum set fmaxnum=(select max(finterid) from seorder)+1 where ftablename='seorder'

--采购订单

update icmaxnum set fmaxnum=(select max(finterid) from poorder)+1 where ftablename='poorder'

--销售发票

update icmaxnum set fmaxnum=(select max(finterid) from icsale)+1 where ftablename='icsale'

--采购发票

update icmaxnum set fmaxnum=(select max(finterid) from icpurchase)+1 where ftablename='icpurchase'


【注意事项】

正式账套执行脚本前请先做好备份,建议待在测试账套中核实无误后再在正式账套中执行。




X青岛金蝶软件公司_金蝶软件技术服务公司

截屏,微信识别二维码

客服QQ:1250556403

(点击QQ号复制,添加好友)

微信号已复制,请打开微信添加咨询详情!