1     脚本语言... 2

1.1      介绍说明... 2

1.2      应用场景... 2

2     语法介绍... 3

2.1      类型... 3

2.2      运算... 3

2.3      控制... 4

2.4      内置函数... 5

2.5      自定义函数... 5

2.6      注释... 5

3     内置函数... 6

3.1      显示提示函数... 6

3.2      输入控制函数... 6

3.3      界面控件操作函数... 7

3.4      单据操作函数... 8

3.5      数据库操作函数... 8

3.6      更多函数... 9

4     打印脚本的事件... 12

4.1      相关参数... 12

4.2      函数清单... 12

4.2.1       main. 12

4.2.2       func_gopage. 12

4.2.3       func_gorow. 12

4.2.4       before_draw_obj() 12

4.3      例子... 13

4.3.1       如何进行大写金额的套打... 13

5     应用函数... 14

5.1      人力资源系统... 14

5.2      进销存系统... 14

6     物资单据的事件... 15

6.1      函数清单... 15

6.1.1       create_voucher 15

6.1.2       func_show. 15

6.1.3       init_row. 15

6.1.4       cell_change. 15

6.1.5       obj_change. 15

6.1.6       func_before_print 15

6.1.7       adjust_row. 15

6.2      例:如何限定打印只打印一次... 15

 

1       脚本语言

1.1   介绍说明

系统包含了一个脚本引擎,用于增强系统的适应能力,使得使用者在一定程度上能对系统加以定制。

 

对于学过简单计算机语言的使用者掌握脚本语言并不困难。

 

了解脚本的应用场合能最大程度地发挥系统的能力,并带来效率的提升。

 

1.2   应用场景

工资的计算公式定义(人力资源)

打印模板的控制

单据的控制(进销存)

 

随着系统的扩展,将有更多的环节支持脚本。

 

 

2       语法介绍

       解释执行器基本采用C的语法。下面是它的功能定义:

 

2.1   类型

int,float,string,采用 string类型做字符串处理

 

2.2   运算

l        赋值

=

 

例:

int a,b;

  a=5;

  b=2*a+3;

 

l        基本运算

 +  -  *  /

 

例:

float a,b;

  a=5.1;

  b=2*a+3*2.3-12/4;

 

l        判断运算

>   ==   <   >=    <=   !=

 

例:

判断a是否大于b       if(a>b)

 

判断a是否等于b       if(a==b)

 

判断a是否小于b       if(a<b)

 

判断a是否大于等于b   if(a>=b)

 

判断a是否小于等于b   if(a<=b)

 

判断a是否不等于b     if(a!=b)

 

l        逻辑运算

  ||   &&  !

 

例:

判断a大于3或者b大于5   if(a>3 || b>5)

判断a大于3并且或者b大于5   if(a>3 && b>5)

判断非(a大于3  if(!(a>3))

 

 

 

2.3   控制

l        判断

if(条件)

{

}

else

{

};

 

if(条件)

{

}

else if(条件)

{

}

else if(条件)

{

}

else

{

};

 

 

l        循环

for(id=0;id<num;id++)

{

};

 

l        循环

 

do

{

}while(id<3);

 

l        循环

 

while(id<3)

{

};

 

l        选择

 

switch(变量)

{

    case 1:

    break;

  .

  .

  .

};

 

l        其他控制

continue

break

goto test_lab

label test_lab

 

 

2.4   内置函数

系统定义了一些内置函数,可以直接调用。

 

2.5   自定义函数

int add(int x,int y)

{

  return x+y;

};

 

2.6   注释

采用//作为注释

 

3       内置函数

 

类型标识: S 字符型  I 整数型  F 数值型

 

3.1   显示提示函数

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

dbg

S

 

显示变量

要显示的变量

 

msg

S

 

显示提示

要显示的内容

 

warn

S

 

显示警告

要显示的内容

 

confirm

S

 

请确认

要显示的内容

1 确定

0 取消

 

 

 

 

 

 

 

 

3.2   输入控制函数

 

这组函数主要用于在脚本里设定弹出一个输入窗口,让操作员输入一些参数,便于进行后续处理。

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

inp_clear

 

 

清除内容

 

 

inp_get_val

 

 

获得指定变量的值

变量

变量值

inp_set_val

 

 

设置一个变量的值

变量标识,变量值

 

inp_def_dict

 

 

定义一个选择型的变量

变量标识,变量意义,字典编号

 

inp_def_string

 

 

定义一个字符型的变量

变量标识,变量意义

 

inp_def_date

 

 

定义一个日期型的变量

变量标识,变量意义

 

inp_def_month

 

 

定义一个月份型的变量

变量标识,变量意义

 

inp_def_int

 

 

定义一个整数型的变量

变量标识,变量意义

 

inp_select

 

 

选择变量组

变量组标识

 

inp_para

 

 

弹出窗口,输入相关参数

 

 

 

 

 

 

 

 

 

例子:

  inp_def_string('mnum','数量');

  inp_def_date('mdate','日期');

  inp_para();

  inp_num=inp_get_val('mnum')

 

 

3.3   界面控件操作函数

 

这组函数主要用于在脚本里设定获取或者修改当前窗口输入控件的内容。

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

gui_list_inp_all

 

 

显示当前窗口所有输入控件

 

 

gui_list_inp

 

 

显示指定名称控件包含的输入控件内容

控件的名称

 

gui_list_all

 

 

显示当前窗口所有控件

 

 

gui_list

 

 

显示指定名称控件包含的控件内容

控件的名称

 

gui_hide

 

 

隐藏一个控件

控件的名称

 

gui_show

 

 

显示一个控件

控件的名称

 

gui_set_val

 

 

设置指定控件的内容

控件的名称,要设置的值

 

gui_get_val

 

 

获取指定控件的内容

控件的名称

指定控件的内容

 

 

 

 

 

 

 

例子:这个例子可以用于销售发货单里面,当联系人变化时,从数据库查出该联系人的地址作为目的地址。

 

int obj_change()

{

  //change_obj

  int card_id;

  string sql;

 

  if(change_obj=='ComboBox_Ext_Linkman')

  {

       card_id = gui_get_val('ComboBox_Ext_Linkman');

       if(card_id>0)

       {

         sql='select address from eba_card where card_id=' + card_id;

         db_run(sql);

         if(db_row_count()>0)

           gui_set_val('Edit_Aim_Address',db_res(0));

       };

  };

  // gui_list_inp_all();

  return 1;

};

 

 

3.4   单据操作函数

 

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

v_mark_sum

S

 

标记一个列显示合计数(这个函数主要用于支持单据扩展的列显示合计)

列标识

 

vr_add_res

SS

 

增加物资

这个函数仅在物资单据中有效

产品编号,数量

 

 

 

 

 

 

 

 

 

3.5   数据库操作函数

 

这组函数主要用于访问数据库操作。

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

db_run

S

I

执行一个sql语句

要执行的语句

db_go_head

 

I

指向第一条记录

db_next

 

I

指向下一条记录

db_row_count

 

I

获得记录数

记录数

db_field_count

 

I

获得字段数

字段数

db_res

I

S

获得指定列的值

列号

字段值

 

 

 

 

 

 

db_add_row

 

I

添加一行记录

db_set_value

IS

I

设置当前行指定列的值

列号,

db_drop_field

S

I

删除指定的列

列名

db_add_field

S

I

增加一个列

列名

db_map

SSS

I

数据字典转换

字典名,编码列名,名称列名

db_set_main_sort_id

I

I

设置第一排序列

编号

db_add_sort_id

I

I

添加排序列

编号

db_sort

 

I

排序

db_have_error

 

I

是否有sql错误

有错1,无错0

db_field_name

I

I

取字段名

字段编号

字段名

db_set_table_name

S

I

设置表的名称

表名称

db_set_field_count

I

I

设置字段数

字段数

db_set_field_name

IS

I

设置字段名称

编号,字段名

db_set_field_type

II

I

设置字段类型

编号,字段类型

db_set_field_caption

IS

I

设置字段标题

编号,字段标题

db_select_area

I

I

选择一个工作区

工作区0-5

 

 

 

 

 

 

 

 

3.6   更多函数

 

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

dt_get_name

SS

S

获取字典对应字典意义

字典标识,字典取值编码

字典意义

dt_get_code

SS

S

获取字典意义对应的字典编码

字典标识,字典意义

字典编码

 

 

 

 

 

 

fen_to_yuan

S

S

字符表达的分转换为元

字符表达的分

字符表达的元

one_cap

SI

S

取得金额其中一位的大写

字符表达的元

大写表达

one_digit

SI

S

取得金额其中一位的小写

字符表达的元

小写表达

money_cap

S

S

取得金额的大写

字符表达的元

大写表达

 

 

 

 

 

 

num_dec_cut

SI

S

数字四舍五入

,小数位数

结果字符串

 

 

 

 

 

 

fmt_date

SS

S

格式化日期

标准日期yyyymmddhhmiss,格式化串

格式化后的串

fmt_time

SS

S

格式化时刻

标准时刻hhmiss,格式化串

格式化后的串

get_cur_date

 

S

取当天日期

日期yyyymmdd

get_cur_fmt_date

S

S

取格式化的当天日期

格式化串

格式化后的当天日期

get_cur_time

 

S

取当前时刻

时刻hhmiss

get_cur_fmt_time

S

S

取格式化的当前时刻

格式化串

格式化后的当前时刻

get_cur_month

S

S

取当天月

yyyymm

get_cur_year

S

S

取当天年

yyyy

get_month_days

S

I

取指定月份的天数

月份yyyymm

天数

get_year_days

S

I

取指定年份的天数

年份yyyy

天数

date_to_second

S

I

日期转换为秒数

标准日期yyyymmddhhmiss

秒数

time_to_second

S

I

时刻转换为秒数

标准时刻hhmiss

秒数

get_last_month

S

S

取上一月

标准月yyyymm

上一月

get_last_year

S

S

取上一年

标准年yyyy

上一年

get_next_date

S

S

取下一天

标准日期yyyymmdd

下一天

get_last_date

S

S

取上一天

标准日期yyyymmdd

上一天

get_month_between

SS

I

2个日期的月份差

开始日期,结束日期

月数

get_day_between

SS

I

2个日期的天数差

开始日期,结束日期

天数

get_week_id

S

I

取日期对应的星期

标准日期yyyymmdd

星期1-7

is_date_valid

S

I

盘点一个日期是否合法

标准日期yyyymmdd

合法1,非法0

std_inp_date

S

S

从一个输入的串中取出日期

输入串

标准日期yyyymmdd

std_inp_time

S

S

从一个输入的串中取出时刻

输入串

标准时刻hhmiss

 

 

 

 

 

 

strlen

S

I

计算字符串的长度

字符串

长度

strcmp

SS

I

比较2个字符串大小

1,2

0相等,1大于,-1小于

strncmp

SSI

I

比较2个字符串前几个字符的大小

1,2,比较长度

0相等,1大于,-1小于

str_get_sub

SII

S

返回部分子串

1,开始位置(首位为0),长度

结果字符串

str_add_as_num

SS

S

2个字符串转为数字相加返回结果字符串

1,2

结果字符串

str_sub_as_num

SS

S

2个字符串转为数字相减返回结果字符串

1,2

结果字符串

str_std_num

SI

S

字符串数字补齐小数位数

,小数位数

结果字符串

str_cut

SI

S

字符串截断

,最大长度

结果字符串

to_int

S

I

字符串转整数

结果数

to_float

S

F

字符串转浮点数

结果数

fmt_float

FS

S

浮点数转格式字符串

数值,格式

结果串

fmt_int

IS

S

整数转格式字符串

数值,格式

结果串

mod

II

I

2个整数取余

数值1,数值2

结果

 

 

 

 

 

 

 

 

 

4       打印脚本的事件

 

4.1   相关参数

下面的参数可以在打印控制脚本中加以引用:

 

       本页记录数 cp_row_num

本页记录数 cp_row_num

    总页数 page_count

    当前页码 page_id

    当前记录号 record_id

记录总数 record_count

    总页数 page_count

    当前页码 page_id

    打印份号 print_copy_id

    当前记录号 record_id

记录总数 record_count

 

    本页小计 cp_xxxx 后面的xxxx为字段名

    打印预览的时候可看到打印时传入的其它参数清单(包括一些合计大写)。

 

4.2   函数清单

4.2.1   main

该函数在打印预览的时候调用。

 

4.2.2   func_gopage

该函数在预览指定页的时候调用。

 

4.2.3   func_gorow

该函数在定位一行的时候调用。

 

4.2.4   before_draw_obj()

该函数在打印某个对象前调用,可在函数里通过to_draw_obj知道接下来要打印哪个对象。

系统预设值 pp_x(横向偏移),pp_y(纵向偏移),pp_w(宽度),pp_h(高度),pp_font_size参数,可以修改以上5 个参数来控制打印的位置和大小。

 

 

4.3   例子

4.3.1   如何进行大写金额的套打

 

12345.67,打印出来的结果是:壹万贰仟叁佰肆拾伍元陆角柒分....可不可以把中间的万仟佰拾元角分去掉?

 

利用one_cap函数可以实现这个功能。

 

v = 123.45

one_cap(v,1)  则返回五

one_cap(v,2)  则返回四

one_cap(v,3)  则返回三

 

 

 

 

 

5       应用函数

 

5.1   人力资源系统

函数名

参数格式

返回类型

函数功能

参数意义

返回值

get_emp_pict

 

S

S

获取员工对应的图片文件

员工标识

图片文件名

get_emp_info

SS

S

获得员工指定信息

员工编号,列名

列信息

get_emp_desc

SS

S

获得员工指定描述信息

员工编号,描述信息类型

描述信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.2   进销存系统

 

函数名

参数格式

返回类型

函数功能

参数意义

返回值

get_res_pict

 

S

S

获取产品对应的图片文件

产品标识

图片文件名

get_res_info

SS

S

获得产品指定信息

产品编号,列名

列信息

get_res_desc

SS

S

获得产品指定描述信息

产品编号,描述信息类型

描述信息

get_res_factor_num

SS

S

获得产品折算数量

产品编号,标准数量

折算数量

 

 

 

 

 

 

get_eba_info

SS

S

获得客户指定信息

客户编号,列名

列信息

 

 

 

 

 

 

get_sup_info

SS

S

获得供应商指定信息

供应商编号,列名

列信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6       物资单据的事件

 

6.1   函数清单

6.1.1   create_voucher

该函数在新建单据的时候调用。

 

6.1.2   func_show

该函数在显示单据的时候调用。

 

6.1.3   init_row

该函数在增加一行物资的时候调用。

 

6.1.4   cell_change

该函数在单元格里面的内容被修改了的时候调用,利用change_col变量可知道被修改的是哪个项目。

 

6.1.5   obj_change

该函数在某些单据表头输入控件的内容被修改了的时候调用,利用change_obj变量可知道被修改的是哪个输入控件。

 

6.1.6   func_before_print

该函数在打印前调用,可以用can_print参数来决定本次打印是否允许。

相关参数:print_process_times 标识这是第几次打印。

 

6.1.7   adjust_row

该函数可以被单据操作菜单下的《运行脚本adjust_row函数》功能触发,针对每条记录调用一次。主要用于需要的时候进行批量修改数据。

 

6.2   例:如何限定打印只打印一次

func_before_print()里面加以判断控制。

 

int func_before_print()

{

  can_print=1;

  if(print_process_times>1)

    can_print=0;

  //show_v_para();

  return 1;

};