Acumatica导入场景导入含连字符序列号时更新异常问题
问题结论
这个现象不是Acumatica导入场景的默认通用运行行为,是序列号类字段绑定的自动格式化规则在导入流程中静默触发导致的匹配偏差。
触发原因
- 所有标记了
[LotSerialNbr]特性的字段,Acumatica框架会默认绑定系统序列号分段规则做自动格式化校验:如果当前租户配置的序列号分段规则没有将连字符-设置为合法分段分隔符,字段赋值时系统会自动过滤掉规则不识别的特殊字符。 - 你导入的
2022-07-12-001这类带连字符的序列号,在导入流程中被后台静默移除连字符后,实际用于主键匹配的值变成了无连字符的20220712001,和自定义表中存储的原始带连字符主键值不匹配,系统判定为不存在对应记录,自然就执行了新增操作而非更新。 - 手动在页面录入时不会出现无感知的偏差:手动输入触发格式化后会立刻在前端输入框回显处理后的值,你能直接看到字符变动;但导入是后台批量执行流程,格式化过程没有前端提示,很容易出现主键匹配错误。
可落地的解决方法
- 调整序列号分段规则:进入系统序列号分段配置页,将连字符
-设置为对应序列号分段的合法分隔符,配置后系统导入时会完整保留连字符,按导入的原始值做主键匹配。 - 调整自定义字段特性:如果你的自定义表中
LotSerialNbr字段不需要复用系统标准序列号的分段校验逻辑,不要给该字段绑定[LotSerialNbr]特性,替换为普通[PXDBString]特性并设置匹配的字段长度,关闭自动格式化逻辑后,导入会完整保留原始输入的所有字符。 - 导入场景增加自定义赋值逻辑:如果不方便调整系统规则和字段属性,可以在对应自定义页面的导入处理委托中重写
LotSerialNbr字段的赋值逻辑,强制读取导入源文件中的原始序列号值,跳过字段自带的自动格式化步骤后再执行数据库匹配。
内容的提问来源于stack exchange,提问作者Muralidharan Ramakrishnan
相关产品推荐
相关产品推荐

