云南保会通软件公司,29年专注财务内控管理软件
0871-64646363 0875-2140105

首页 >服务支持>技术文章 >保会通函数

保会通函数

编辑时间:2019年10月21日 作者:保会通软件 浏览量:0

第一章  函数综述

 

在保会通软件的“报表”模块和“会计账务”模块的凭证分录模板中,我们希望系统能够按我们的要求自动生成数据。自动生成数据就是计算机的一大优势,但如何让计算机按我们指定的要求生成数据呢,其核心问题是如何向计算机表达我们的要求。为此,保会通软件引入函数来表达用户的取数要求。

为了使函数能表达用户的取数要求,函数必须能准确地描述数据的位置、类别和其他一些条件。同时函数是提供给用户直接使用的,它必须简单、规范、易于记忆和使用。

一、函数的形式函数的形式

二、表达式表达式

三、变量变量

四、表达式的执行轮次表达式的执行轮次

五、表达式中的注释表达式中的注释

六、表达式的值类型表达式的值类型

 

一、函数的形式

函数具有以下通用形式:

函数名(参数1,参数2,…,参数n)

如:y(101)、tl(501,321)、f(511,#y1)

t(511,#y,"c:\保会通数据\××单位\2001.cwd")、

……。

函数名:描述数据类别或对数据的操作要求。如:取余额、取发生额、取绝对值、……。

括号“(”和“)”:函数定界符,用于把函数名和参数分开,同时也起标识函数的作用。

参数1,参数2,…、参数n:函数的参数表,用于描述数据的位置、所处的时间和其他一些对数据的限制条件。函数参数的多少和意义因函数名的不同而不同。

 

二、表达式

表达式是将常数、变量、函数用运算符号连接而成的数学表达式。表达式用于对复杂数据的处理。

表达式中可用的运算符号有:

“+”(加)

“-”(减)

“*”(乘)

“/”(除)

“%”(整除取余)

“^”(方幂)

“=”(相等吗)

“!=”(不等吗)

“>”(大于吗)

“<”(小于吗)

“>=”(大于或等于吗)

“<=”(小于或等于吗)

“!”(逻辑非)

“&&”(逻辑与)

“||”(逻辑或)

“(”(左括号)

“)”(右括号)

 

三、变量

变量是一个以“#”开头的文字串。一个变量代表一个表达式,一个变量应该在变量表中被定义后方可使用。定义变量时应确定变量的如下内容:

变量名:以“#”开头的文字串,除“#”外其他文字必须为大小写字母或数字。变量名是变量的标识,它在引用变量的时候使用;

表达式(公式):变量的表达式就是变量内容,即变量值;

值类型(类型):变量的值类型有“文字”、“数值”和“自动”三种类型;

说明:变量的说明简述变量的内容或作用,以帮助对变量的识别和使用。

变量表:变量表是保会通数据文件用来存放变量的列表,一张保会通报表母表有唯一一张变量表。

 

四、表达式的执行轮次

表达式表达式往往被成批使用,如报表中的表达式、凭证分录模板中的表达式等。软件在使用多个表达式来自动生成数据时,执行表达式取数的次序一般是“Z”次序,即先左后右先上后下。如果实际执行次序不是这样,应当使用表达式的“轮次”来改变表达式被执行的次序。一般说来,如果一组表达式没有附加轮次,系统按“Z”次序逐一执行完一次表达式取数后,即告完成。如果在一组表达式中引入轮次,即在每一个表达式的前面加上一个被称为轮次的数字(0、1、2、3、……),用“:”(英文冒号)将它与表达式连接。引入轮次后,如果一组表达式的最大轮次为n,系统按“Z”次序从头至尾执行n+1次(遍)取数,第0次只执行轮次为0(或无轮次)的表达式取数,第1次只执行轮次为1的表达式取数,……,第n次只执行轮次为n的表达式取数。如此这般,即可达到改变表达式在表达式组中被执行的次序。

image.png

 

如上图所示,左边表达式组执行取数的次序为:表达式1→表达式2→表达式3→表达式4→表达式5→表达式6→表达式7→表达式8→表达式9→表达式10→表达式11→表达式12,右边表达式组执行取数的次序为:第0轮,表达式2→表达式3→表达式8→表达式10→表达式12,第1轮,的表达式1→表达式6→表达式7→表达式11,第2轮,表达式5→表达式9,第3轮,表达式4,

 

五、表达式中的注释

表达式中可以使用注释符“//”、“/*”和“*/”。

注释符“//”:从“//”开始注释到末尾。如:ydc("10?")//期初贷方余额。

注释符“/*”和“*/”:注释符“/*”和“*/”必须成对使用,注释表达式中从“/*”开始到“*/”结束之间的内容。如:ydc("10?"/*账户代码*/,#y/*会计月*/,#z/*账簿文件*/)。

 

六、表达式的值类型

表达式的值类型有文字型和数值型两种。常数也有文字型和数值型两种。文字型常数常用来表示账户代码,账簿文件名。文字型常数应当用两个英文引号“"”将它引起来,如:

"10?"、"c:\BHTSoft\××单位\2001.cwd"、……。

 

第二章  函数的参数

 

一、函数的形式函数的形式

二、报告期报告期

三、账簿文件账簿文件

四、文件名文件名

五、报表名报表名

六、报表行(行号) 表行

七、报表栏(栏号) 表栏

八、单元格单元格

九、(矩形块) 

十、坐标坐标

十一、区域区域

 

 

一、科目(账户)代码参数

 

账簿记载的经济内容一般是按账户(科目)归类收集的,因此,账户(科目)是多种函数都用到的函数参数,科目参数可以是一级科目或各级明细科目,也可以是若干个科目。当只取某个指定科目的某种数据时,科目参数就是该科目的代码;若需要取多个科目的某种数据时,可以将这些科目一一列举出来,彼此间用分号“;”连接。

在取数函数中,科目参数的描述可以使用通配符通配符

例:yjc(101),表示取101科目的期初借向余额;

yjc(101;102;109),表示取101、102、109三个科目的期初借向余额;

yjc(10?,#y,#z),表示取科目代码从100至109之间的所有科目的期初借向余额。

yjm(12201*),表示取12201科目的所有子目的期末借向余额。

若会计科目带辅助核算,科目需要描述到辅助科目时,应按主科目的辅助核算项位置,在主科目后,将辅助科目一一列举出来,中间用\”连接。

image.png

像上图对话框中的科目,我们就可以写成:

5040101\02010301\13010101\\\913

科目:5040101的辅助核算项定义如下图:

image.png

注意:在描述科目的辅助项时,辅助科目码前一定要带组码,而且要注意辅助核算项的位置。没有辅助核算项的位置,也要加\”。除非此位置之后再也没有指定辅助科目,如:

科目:5040101\02010301\13010101\\\

等同于:5040101\02010301\13010101。

 

二、报告期

 

报告期是指报表的报告期,是以月份为单位的。如下图:

image.png

保会通软件报表模块,是一个通用电子表格模块,一张报表由一张母表、若干张子表构成。母表总是处在报表目录的一级位置,一张母表可以有多级子表构成。如上图,资产债表就是一张母表,表号为1。它下面有一级子表,子表号分别为:1、2、3、11、12、13、101、102、

保会通函数中专门有一个函数:dirndirn(),就是取上述子表号的。我们常用它取出来的数作为账簿取数函数的报告期。

“报告期”是账簿取数函数的一个重要参数,系统对报告期的解释方法是:

1、若报告期为六位数,如:200902,直接作为月份使用,因为账簿中的月份都是“年+月”六位数的。

2、若报告期为两位数内,1~12解释成账套年度1~12月,13~99也当成12解释。可见有多个数表示12月,用户可根据这一特征,做出几张12月份的报表,如年末转账前的,转账后的。

3、若报告期为三位数,则百位数+账套年度被解释成年,十位个位数被解释成月。如:101~112被解释成账套年度的下一年度的1~12月。这样一张母表下就可以有两个年度的子表了,如上图。

4、可以用“:”将两个上述所指的月份连接起来,表示两个月份之间的数月。如:

4:6表示账套年度的二季度。

"1:"+dirt() 表示一至当前月,常用作累计数的报告期参数。

a:b而言,要求a、b百位数以上应相同,若不相同,取大者解释。

“1:103”被当成“101:103”解释。

常用的报告期就两个:

本月 变量“#y”就是取“本月”的。#y=dirn()。

年初至本月 变量“#y1”就是取“年初至本月”的。#y1="1:"+dirt()。

报告期变量可缺省,缺省时默认值就是变量“#y”。

用户完全可以构造别的形式的子表,如:


图片12.png

不过要这样的活,就修改变量“#y”和“#y1”的定义了。

#y=dirt(1)+dirt()。

#y1=dirt(1)+01:+#y。

 

三、账簿文件

账簿文件是指由保会通软件创建的年度数据文件的全路径名,比如:

c:\保会通数据\××单位\2001.cwd。

如果是SQL Server数据库(S版软件的数据文件),账簿文件名是指数据库名,而非物理文件名。命名规则是:

保会通数据文件扩展名+账套号+年度

如:cwd00012009就是账套号为“0001”的2009年账务数据文件。

在账簿取数函数中常常可以缺省账簿文件参数,缺省时,以变量“#z”代之。

在变量表中,#z=zw()。

函数zw(),是取当前报表的默认账簿文件。

 

四、文件名

 

本系统中文件名指两种类型的文件,账簿文件名账簿文件和报表名报表名。

 

五、报表名

 

报表名是指报表模块中报表的表号(或报表文件全名),在取数函数中常常可以缺省报表名参数,缺省时,表示当前操作报表。

 

六、报表行(行号)

 

在本系统中,报表行是从上到下连续编排,依次用自然数(1,2,3,…,n)从小到大表示,最大行号也就是该表的行数。

 

七、报表栏(栏号)

 

在本系统中,报表栏是从左到右连续编排,用大写的英文字母表示,A~Z依次代表第1栏到第26栏,AA~AZ代表第27栏到第52栏,BA~BZ代表第53栏到第78栏,依此类推。

 

八、单元格

 

单元格是指报表栏、行的交叉点,一个交叉点就是一个单元格,可以认为单元格是报表的细包。单元格的描述有两方面,一方面是内容描述,另一方面是位置描述,单元格的位置是指它在报表中所处的栏的栏号及所处的行的行号,单元格的位置可以用坐标来表示,单元格的坐标形式为:

栏号+行号

其中:栏号在前,行号在后,比如:A2表示第一栏和第二行的交叉点,即栏坐标是A,行坐标是2。

单元格的内容应根据报表的需要来定义。

若一张报表有8栏、38行,那么,这张报表就有8×38=304个单元格。

 

九、块(矩形块)

 

块是由单元格堆集而成的,规则的块也称为矩形块。

 

十、坐标

 

坐标是用一对有序数来描述平面内的点的一种表示法,本系统中,单元格的位置描述就是用坐标来描述的,坐标的原点是报表的左上角,栏坐标向右递增,行坐标向下递增。

 

十一、区域

 

区域是指给定报表的有效单元格或有效单元块,区域可以是一个单元格,也可以是一个矩形块,还可以是由一些有效单元格堆集而成的一个块,还可以是由若干分散的有效单元格或块组成。一个矩形块是用它的左上角单元格坐标和右下角单元格坐标来表示,并用冒号“:”将其连接(“:”是英文字符),如:C1:D10,B3:B21,E2:E8等。一个不规则的块可以分解成若干个单元格和矩形块。

若一个区域是由若干单元格和块组成,则必须用分号;”将它们分隔,如:A2;B2:D10;E30是由两个单元格A2E30和一个矩形块B2:D10组成的一个区域。