IUFO周报账里取数方案NC产品支持部吴洪英一、需求支持中遇到这样的需求:客户想要做一张资金周报,报表里有本周期初数,本周借方发生数,本周贷方发生数,本周期末数,这个几个公式怎么设置呢?二、分析可以设置一张关键字为“单位”、“周”的报表,然后设置账里取数函数。目前总账提供的函数,有日发生和日期末函数,没有周发生和周期末,所以,可以通过变通应用日发生和日期末函数得到一周内的发生和期末数。但是周的起始日期和截止日期不好判断,还要结合使用IUFO提供的时间关键字函数。三、实现1、传统方案以前传统的应用方案是这样的,在表样中提取两个日期型指标,让客户录入开始日期和截止日期,然后在日发生函数中用这两个日期作为时间参数来取值。如下图公式中B4就是指开始日期,D4就是指结束日期。表样如下图:取数结果:1传统方案的缺点这种方案,可以取到数据,但让客户指定开始日期和截止日期,客户不太好接受,如果指定的时间多于或少于一周,也不是真正意义上的周报。2、用IUFO提供的时间关键字函数实现IUFO中提供了Zdate()和zdateqc()这两个函数,其中,Zdate()取到当前关键字下的最后一天,zdateqc()取到是当前关键字下的第一天,注意格式是YYYYMMDD,需要加参数转换成YYYY-MM-DD格式。公式设置说明:本周期初:MSELECT('本周期末','周',-1)本周借方:GLRFS('1001',zdateqc('-'),zdate('-'),'','借','','Y',zdw(),'','','','')本周贷方:GLRFS('1001',zdateqc('-'),zdate('-'),'','贷','','Y',zdw(),'','','','')本周期末:GLRQM('1001',zdate('-'),'','','','Y',zdw(),'','','')表样如图:2取数结果如下图,通过公式追踪,可以看到各时间参数取数正确:四、其他说明1、关于周时间属性系统里预置了周时间属性。如果系统预置的周起始时间与客户使用习惯不符可以通过设置修改。路径:系统设置—关键字—时间区间—设置周属性3如下图:2、旬报也可以通过此方案类似设置以前没有想到此方案时,我们设置过超级复杂的旬报大公式,贴出来仅供大家娱乐:GLRQM('100205',STR(k('年'))+'-'+STR(k('月'))+'-'+STR(IFF(VAL(SUBSTR(zdate(),7,2))<11,10,IFF(VAL(SUBSTR(zdate(),7,2))<21,20,zday()))),,,'本币','Y','00','本币','0002','y')4