如何配置Dataverse自动编号SEQNUM实现每日重置?
Dataverse每日重置序号的自动编号实现方案
原生Autonumber列的限制
直接通过Dataverse Autonumber列的格式设置无法实现每日重置序号。内置的{SEQNUM:3}是全局连续递增的序列,没有按日期自动重置的参数支持,因此会出现跨日期后序号持续累加的情况。
可行替代方案
方案一:Power Apps前端生成(轻量场景)
- 在目标Dataverse表中新增文本类型列(例如命名为
DailySerialNo),放弃Autonumber类型。 - 在Power Apps的表单提交逻辑中添加以下步骤:
- 生成当日日期前缀:
Text(Today(), "MMddyy") - 统计当日已创建的记录数:
CountRows(Filter(你的表名, StartsWith(DailySerialNo, Text(Today(), "MMddyy")))) - 计算当日序号:
Text(CountRows结果 + 1, "000") - 拼接最终编号:
Text(Today(), "MMddyy") & Text(CountRows结果 + 1, "000") - 将拼接后的编号赋值给表单的
DailySerialNo字段,再提交记录。
- 生成当日日期前缀:
注意:需处理并发提交导致的重复编号问题,可添加提交后验证逻辑,若发现重复则重新生成编号。
方案二:Power Automate云流生成(后端处理,低并发风险)
- 同样新增文本类型列
DailySerialNo。 - 创建Power Automate云流,触发条件选择当Dataverse记录创建时。
- 云流内执行以下操作:
- 格式化当前日期为
MMddyy格式(注意时区适配,可根据需求用UTC或本地时间)。 - 查询当日该表中所有以该日期前缀开头的
DailySerialNo记录,统计数量。 - 计算当日序号:
统计数量 + 1,格式化为3位数字(formatNumber(统计数量+1, '000'))。 - 拼接编号,更新到当前创建的记录的
DailySerialNo字段。
- 格式化当前日期为
方案三:Dataverse插件生成(高并发场景)
针对企业级高并发需求,可编写C#插件在记录创建前(PreCreate事件)执行:
- 获取当前记录的创建日期,格式化为
MMddyy。 - 通过FetchXML查询当日已生成的最大编号,提取后三位数字并加1。
- 拼接完整编号赋值给目标字段。
- 利用插件的事务特性保证编号生成的原子性,彻底避免重复问题。
内容的提问来源于stack exchange,提问作者Robby
相关产品推荐
相关产品推荐

