
# 【应用场景】
套打时,需要根据基础数据的几次进行汇总打印,比如按一级汇总、二级汇总等。
# 【案例演示】
以凭证为例,演示通过套打动态字段配置获取一级科目、二级科目等的编码和名称,并按照一级科目、二级科目汇总。
# 【数据前提】
由于此方案利用了动态字段,在目前的功能实现上平台只能够以分隔符进行级别拆分,而非标准的获取一级科目方案。
如(1221.01)平台能够认为是二级科目,一级科目编码为1221,二级科目编码为01;
又如(其他应收款_客户往来)平台能够认为是二级科目,一级科目为其他应收款,二级科目为客户往来。
# 【动态字段配置】
根据动态字段配置,获取对应数据的对应级别的科目编码和科目名称。
演示数据中科目编码以"."分隔,科目全称中以"_"分隔;
获取二级科目的科目编码
```python
'' if FACCOUNTID == null or FACCOUNTID.FNumber == null else ( FACCOUNTID.FNumber if len(FACCOUNTID.FNumber.split('.')) <= 2 else '.'.join(FACCOUNTID.FNumber.split('.')[0:2]))
```
表达式逐步解析
<1>当科目为空或者科目的编码为空,则输出空字符串。
对应表达式('' if FACCOUNTID == null or FACCOUNTID.FNumber == null)
<2>当科目编码按照"."进行拆分,拆分长度小于等于2,则认为该科目最大几次小于等于2,直接输出科目编码。
对应表达式(FACCOUNTID.FNumber if len(FACCOUNTID.FNumber.split('.')) <= 2 else)
<3>级次大于2,则取拆分后的前两位([0:2]),然后再用"."将元素拼起来。
对应表达式('.'.join(FACCOUNTID.FNumber.split('.')[0:2]))
同理获取二级科目的科目名称
```python
'' if FACCOUNTID == null or FACCOUNTID.FFullName == null else ( FACCOUNTID.FFullName if len(FACCOUNTID.FFullName.split('_')) <= 2 else '_'.join(FACCOUNTID.FFullName.split('_')[0:2]))
```
获取目标级次的编码或者名称,只需要将表达式中的2改为目标等级即可,
如三级编码
```python
'' if FACCOUNTID == null or FACCOUNTID.FNumber == null else ( FACCOUNTID.FNumber if len(FACCOUNTID.FNumber.split('.')) <= 3 else