凭证查询,通过多个科目或者多个摘要过滤精准筛选对应凭证的变通方案原创
金蝶云社区-小一1
小一1
71人赞赏了该文章 208次浏览 未经作者许可,禁止转载编辑于2024年04月23日 21:39:31

凭证查询,希望通过多个并集的科目或摘要的过滤条件精准筛选出对应凭证,比如包含A科目并且不含B科目、同时包含A和B科目、同时包含摘要1和摘要2等此类条件。

由于产品架构限制,目前标准产品暂无法支持到此类应用场景,现有变通处理方案如下:

在凭证单据头加入大文本字段,在凭证的表单插件中注册Python脚本,使凭证保存时自动将凭证上的所有科目编码更新拼接到该字段或者摘要更新拼接到该字段,凭证查询通过对该字段进行多条件过滤即可实现需求。

注:如果同个凭证中有重复的科目编码或者摘要,会自动去重。

操作步骤:通过boside在凭证单据头拉入大文本字段,然后在凭证的表单插件中注册Python脚本。

# 将科目反写到单据头(注意最后一段中"F_ABC_TEXT"需要改为自行拉入的大文本字段的唯一标识)

from System import String

def BeforeSave(e):

iCount = this.View.Model.GetEntryRowCount("FEntity")

acclist0 = '';

for i in range(iCount):

acc0 = this.View.Model.GetValue("FACCOUNTID", i)["Number"]+',';

if (acclist0.find(acc0) < 0):

acclist0 = acclist0 + acc0;

#this.View.ShowMessage(acclist0)

this.View.Model.SetValue("F_ABC_TEXT",acclist0)


# 将摘要反写到单据头(注意最后一段中"F_abc_LargeText"需要改为自行拉入的大文本字段的唯一标识)

def BeforeSave(e):

iCount = this.View.Model.GetEntryRowCount("FEntity")

acclist0 = ''

for i in range(iCount):

acc0 = this.View.Model.GetValue("FEXPLANATION", i)

if (acc0 is None) or (acc0==""):

continue

acc0 = acc0+';'

if (acclist0.find(acc0) < 0):

acclist0 = acclist0 + acc0

#this.View.ShowMessage(acclist0)

this.View.Model.SetValue("F_abc_LargeText",acclist0)


操作图:

image.png


效果图:

6627b489bb8b8900013a584d.png

6627b5d77e02280001e71efa.png

赞 71