先确认是不是‘病假天数’字段本身超限
U8 V13.0及之前版本的人力资源模块中,病假天数字段(如HR_EMP_LEAVE.HOLIDAY_DAYS)默认为SMALLINT类型,取值范围为-32768~32767。当累计病假天数录入或计算结果超过32767(例如连续休病假90年),数据库将触发‘Arithmetic overflow error’报错,界面显示‘保存失败’或‘数据超出范围’。该问题与权限、流程无关,属底层数据结构硬约束。
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'HR_EMP_LEAVE' AND COLUMN_NAME LIKE '%HOLIDAY%',确认字段是否为smallint;若返回值为int或decimal,则非本问题范畴。点击‘保存’报错时优先检查这3类配置项
即使字段未达理论上限,业务配置错误也可能触发溢出提示。重点核查以下三类设置:
- 休假规则公式错误:在【人力资源】→【基础设置】→【休假类型】中,若‘病假’类型的‘计算方式’误设为‘按工作日累加+系数放大’(如×100),且员工档案中已存在多年休假记录,系统自动重算时可能瞬时生成超限值;
- 导入模板列映射偏差:Excel批量导入病假记录时,若模板中‘天数’列被映射至‘小时数’字段(如HR_EMP_LEAVE.HOURS),而单位换算逻辑缺失,1000小时≈41.7天,但系统误存为1000,叠加后快速突破32767;
- 审批流节点二次计算:启用多级审批后,某审批节点配置了‘自动追加5天补偿病假’规则,且未做最大值拦截,导致终审后天数突增超限。
病假天数字段被其他模块误读的典型现象
部分客户反馈‘仅在工资模块计算时出现溢出’,实为工资公式引用了HR_EMP_LEAVE.HOLIDAY_DAYS字段,但工资表头定义为INT型而子表仍用SMALLINT,跨模块关联时发生隐式转换失败。此时报错位置在【工资管理】→【工资录入】→【计算’按钮,而非HR模块保存环节。
高频原因拆解:从数据源到计算链路
原始录入超限(占比约45%)
实施初期未对员工历史病假做归档清洗,直接将纸质档案中‘休病假120个月’按‘120’填入天数字段(未换算为3600天),或手工录入时误输‘327680’(多打一个0)。该类问题在【员工休假登记】单据中可直观复现。
系统自动计算逻辑失控(占比约30%)
启用‘病假折算社保缴费年限’功能后,U8后台运行存储过程sp_calculate_sickdays_to_years,其内部未对中间变量做边界判断,当员工累计病假达20年以上时,折算值溢出。该过程通常在每月1日02:00自动触发,故问题呈周期性。
数据库补丁或升级残留(占比约25%)
V12.5升级至V13.0时,若未执行官方补丁U8HR_Patch_13002.sql(该补丁将HOLIDAY_DAYS字段扩展为INT),旧字段结构将沿用。客户常误以为升级即自动扩容,导致后续所有新增病假记录均受制于smallint限制。
当前U8环境下的紧急处理与长期规避策略
立即止血操作:使用DBA账号执行ALTER TABLE HR_EMP_LEAVE ALTER COLUMN HOLIDAY_DAYS INT(需停服务并备份)。但此操作存在风险——若关联视图/报表/工资公式未同步适配,可能引发下游模块空指针异常。因此推荐分三步走:
- 导出全部病假记录(含员工ID、日期、天数),用Excel筛查>32767的异常行,人工核对原始凭证;
- 对确认无误的超限值,按实际天数÷30≈月数,改录为‘X个月’并备注‘按月折算’,规避字段限制;
- 在【系统服务】→【数据库工具】中运行‘字段类型一致性检测’,确保HR_EMP_LEAVE、HR_EMP_ATTENDANCE、PAY_SALARY_DETAIL三张表中同名字段类型统一。
适用场景升级建议:何时应评估用友畅捷通好业财
当企业出现以下组合特征时,U8病假管理已逼近能力天花板:
• 年度病假数据量>5万条,且需对接医保局直报接口;
• 要求病假与工伤、生育假期智能互斥(如‘病假满3个月自动转工伤’);
• 需实现‘病假天数→薪酬扣减→个税专项附加扣除→社保基数联动’全链路自动化。
此时,可优先评估用友畅捷通好业财:其HR模块采用DECIMAL(18,2)存储天数,支持小数点后两位(精确到小时),内置假期冲突引擎与政策库(含2023年各省市病假工资支付标准),且与总账、固定资产模块原生集成,避免U8中需大量自定义SQL补丁的运维负担。
不建议强行升级U8新版本的两种情况
① 当前U8为V10.1且无维保合同——V13.0强制要求SQL Server 2016+,硬件与授权成本远超替换为好业财;
② 人事部门仅需基础考勤统计,无复杂薪酬联动需求——此时用友畅捷通好会计已覆盖凭证自动生成、工资表一键过账、个税申报表导出,实施周期<7人日,TCO更低。