如何在Business Central中通过单据编号反查编号系列(No. Series)?
通过单据编号反向查找Business Central编号系列
问题场景
在Business Central中,编号系列ENS-PED对应的最后单据编号为PED80019,下一个编号为PED80020。需要通过这两个单据号反向定位对应的编号系列ENS-PED。
操作方案
一、手动查找(无需开发)
- 搜索并打开编号系列行(No. Series Lines)页面
- 若已知大致范围,可直接筛选
编号系列代码为ENS-PED,查看其起始编号、结束编号、最后使用编号字段,确认PED80019/PED80020是否属于该系列的编号区间 - 若未知编号系列代码,可通过以下筛选定位:
- 筛选
最后使用编号等于PED80019,直接匹配对应行 - 筛选
起始编号≤ PED80020 且结束编号≥ PED80020,找到包含该编号的编号系列行
- 筛选
二、开发实现(AL代码)
如果需要在自定义功能中自动实现,可通过以下两种方式:
方法1:利用NoSeriesManagement代码单元
procedure FindCorrespondingNoSeries(DocumentNo: Code[20]): Code[20] var NoSeriesManagement: Codeunit "NoSeriesManagement"; TargetNoSeriesCode: Code[20]; begin if NoSeriesManagement.TryFindNoSeries(DocumentNo, TargetNoSeriesCode) then exit(TargetNoSeriesCode); exit(''); end;
调用该方法时传入PED80019或PED80020,即可返回对应的编号系列代码ENS-PED。
方法2:直接查询No. Series Line表
procedure GetNoSeriesByDocNo(DocumentNo: Code[20]): Code[20] var NoSeriesLine: Record "No. Series Line"; begin // 查找包含目标单据号的编号系列行 if NoSeriesLine.SetRange("Starting No.", '', DocumentNo) and NoSeriesLine.SetRange("Ending No.", DocumentNo, '') then begin NoSeriesLine.FindFirst(); // 若存在多个匹配,可添加日期/模块等额外筛选条件 exit(NoSeriesLine."No. Series Code"); end; exit(''); end;
注:如果存在跨模块或跨日期范围的重复编号区间,需补充模块(Module)、起始日期(Starting Date)等筛选条件来精准匹配。
内容的提问来源于stack exchange,提问作者kuhi
相关产品推荐
相关产品推荐

