找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 9264|回复: 10

[技巧] 详细的关于最大单据号问题的处理方法!!顶!!

  [复制链接]
发表于 2012-11-20 15:59:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
在平常处理的问题中,经常会碰到诸如:单据保存时提示“违反了primary key约束'****'不能在对象'***'中插入重复键。新增单据保存失败”的问题。
分析这种错误主要有两个原因:
1、系统库ufsystemua_identity表存在重复的记录;
2、Ufsystemua_identity表的ifatherichildid值小于data库中相关联主子表的最大id值。
那么对于第一种情况,解决办法很简单,删除多余的记录。但是该删哪一条呢?我们必须找到对应单据的最大ID,才可判断哪一条是多余的;
第二种情况,新增的单据在data库中是什么表?对应的在系统库中ua_identity表中字段cvouchtype是什么?相对应Id又是什么呢?
通过做新的单据找规律,下面我总结出了各种业务单据在系统库和data库中相关联的表和字段。
注:对应单据名称为我们新增单据的名称,cvouchtype为系统库中ua_identity表对应单据类型字段,ua_identity表中ifatherid对应关联表主表中ID标识, ichildid对应关联表子表中ID标识。
这样我们从cvouchtype判断是什么业务单据,然后到data库中找到相对应单据的主子表,找到其最大的俩ID,与ua_identity表中ifatheridichildid比较,保证ifatheridichildid大于等于关联data库中关键ID值即可。
对应单据名称

cvouchtype

data库中相关联主子表

相关联主子表ID字段标识

采购请购单

PuApp

PU_AppVouch/s

ID/Autoid

采购订单

Pomain

PO_Pomain/PO_Podetails

POID/ID

采购到货单

PuArrival

PU_ArrivalVouch/s

ID/autoid

采购入库单

rd

Rdrecord/s

ID/Autoid

采购发票

Purbill

PurBillVouch/s

PBVID/ID

销售报价单

QuoMain

SA_QuoMain/ SA_QuoDetails

ID/Autoid

销售订单

Somain

SO_SOMain/SO_SODetails

ID/Autoid

销售发(退)货单

Dispatch

DispatchList/s

DLID/Autoid

销售发票

Billvouch

SaleBillVouch/s

SBVID/Autoid

委托代销发货(退)单

Dispatch

DispatchList/s

DLID/Autoid

委托代销结算单

SettleVouch

SA_SettleVouch/s

ID/Autoid

委托代销调整单

Dispatch

DispatchList/s

DLID/Autoid

销售调拨单(红、蓝)

Billvouch

SaleBillVouch/s

SBVID/Autoid

销售零售日报(红、蓝)

Billvouch

SaleBillVouch/s

SBVID/Autoid

代垫费用单

Expense

ExpenseVouch/s

ID/Autoid

销售支出单

Salepay

SalePayVouch/s

ID/autoid

委外发票

Wwpurbill

OM_PurBillVouch/s

PBVID/ID

产成品入库单

rd

Rdrecord/s

ID/Autoid

其他入库单

rd

Rdrecord/s

ID/Autoid

材料出库单

rd

Rdrecord/s

ID/Autoid

其他出库单

rd

Rdrecord/s

ID/Autoid

调拨单

td

TransVouch/s

ID/Autoid

盘点单

ch

CheckVouch/s

ID/autoid

限额领料单

ma

MatchVouch/s

ID/autoid

不合格品记录单

sc

ScrapVouch/ScrapVouchs

ID/Autoid

不合格品处理单

sc

ScrapVouch/ScrapVouchs

ID/Autoid

货位调整单

ad

AdjustPVouch/s

ID/Autoid

应收应付单

sk

ap_closebill/s

IID/ID

举一个实例,问题现象如下图:
我们查询关联的rdrecord/s表中记录,找其最大ID值,参考语句如下:
use UFDATA_883_2008
select max(autoid) from rdrecords
select max(id) from rdrecord
这时我们再看系统库中identity表中记录:
use ufsystem
select * from ua_identity where cacc_id='883' and cvouchtype='rd'
我们发现系统库中ifatheridichildid小于data库中的,参考以下语句进行调整即可:
update ua_identity set ifatherid=(select max(id) from ufdata_883_2008..rdrecord where cacc_id='883')
update ua_identity set ichildid=(select max(autoid) from ufdata_883_2008..rdrecords where cacc_id='883')
其中UFDATA_883_2008为问题帐套数据库名称。
发表于 2012-11-21 09:48:05 | 显示全部楼层
收藏了                    
回复 点赞 拍砖

使用道具 举报

发表于 2012-11-23 12:29:18 | 显示全部楼层
可以下载个最大单据号工具进行调整

点评

是的,不过工具也是开发写的,还是了解下表结构吧,多学习学习哈  详情 回复 发表于 2012-11-23 14:11
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2012-11-23 14:11:39 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2012-11-23 16:36:03 | 显示全部楼层
{:soso_e128:}是的
回复 点赞 拍砖

使用道具 举报

发表于 2013-4-27 13:02:39 | 显示全部楼层
步骤很清晰,谢谢分享
回复 点赞 拍砖

使用道具 举报

发表于 2013-8-19 15:17:59 | 显示全部楼层
非常的好,收藏了,太谢谢了
回复 点赞 拍砖

使用道具 举报

发表于 2013-8-19 22:27:11 | 显示全部楼层
步骤很清晰,谢谢分享
回复 点赞 拍砖

使用道具 举报

发表于 2013-8-29 11:44:10 | 显示全部楼层
许多最大号工具,对老版本的,许多最新版本数据库有差异的
楼主通过查询有关单据主、子最大流水号,比对最大单据号表里里所对应单据流水号,比较准确,把稳。

其实出现此类问题多数属于人为,或直接附加数据库造成的。
回复 点赞 拍砖

使用道具 举报

发表于 2014-6-19 08:31:46 | 显示全部楼层
学习中 感谢
回复 点赞 拍砖

使用道具 举报

发表于 2020-10-8 17:57:01 | 显示全部楼层
学习了 谢谢楼主分享
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-4-29 12:11 , Processed in 0.058725 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表