系统包含了一个脚本引擎,用于增强系统的适应能力,使得使用者在一定程度上能对系统加以定制。
对于学过简单计算机语言的使用者掌握脚本语言并不困难。
了解脚本的应用场合能最大程度地发挥系统的能力,并带来效率的提升。
工资的计算公式定义(人力资源)
打印模板的控制
单据的控制(进销存)
随着系统的扩展,将有更多的环节支持脚本。
解释执行器基本采用C的语法。下面是它的功能定义:
int,float,string,采用 string类型做字符串处理
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))
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
系统定义了一些内置函数,可以直接调用。
int add(int x,int y)
{
return x+y;
};
采用//作为注释
类型标识: S 字符型 I 整数型 F 数值型
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
dbg |
S |
|
显示变量 |
要显示的变量 |
|
msg |
S |
|
显示提示 |
要显示的内容 |
|
warn |
S |
|
显示警告 |
要显示的内容 |
|
confirm |
S |
|
请确认 |
要显示的内容 |
1 确定 0 取消 |
|
|
|
|
|
|
这组函数主要用于在脚本里设定弹出一个输入窗口,让操作员输入一些参数,便于进行后续处理。
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
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')
这组函数主要用于在脚本里设定获取或者修改当前窗口输入控件的内容。
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
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;
};
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
v_mark_sum |
S |
|
标记一个列显示合计数(这个函数主要用于支持单据扩展的列显示合计) |
列标识 |
|
vr_add_res |
SS |
|
增加物资 这个函数仅在物资单据中有效 |
产品编号,数量 |
|
|
|
|
|
|
|
这组函数主要用于访问数据库操作。
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
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 |
无 |
|
|
|
|
|
|
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
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 |
结果 |
|
|
|
|
|
|
下面的参数可以在打印控制脚本中加以引用:
本页记录数 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为字段名
打印预览的时候可看到打印时传入的其它参数清单(包括一些合计大写)。
该函数在打印预览的时候调用。
该函数在预览指定页的时候调用。
该函数在定位一行的时候调用。
该函数在打印某个对象前调用,可在函数里通过to_draw_obj知道接下来要打印哪个对象。
系统预设值 pp_x(横向偏移),pp_y(纵向偏移),pp_w(宽度),pp_h(高度),pp_font_size参数,可以修改以上5 个参数来控制打印的位置和大小。
12345.67元,打印出来的结果是:壹万贰仟叁佰肆拾伍元陆角柒分....可不可以把中间的万仟佰拾元角分去掉?
利用one_cap函数可以实现这个功能。
如v = 123.45
one_cap(v,1) 则返回五
one_cap(v,2) 则返回四
one_cap(v,3) 则返回三
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
get_emp_pict |
S |
S |
获取员工对应的图片文件 |
员工标识 |
图片文件名 |
get_emp_info |
SS |
S |
获得员工指定信息 |
员工编号,列名 |
列信息 |
get_emp_desc |
SS |
S |
获得员工指定描述信息 |
员工编号,描述信息类型 |
描述信息 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
函数名 |
参数格式 |
返回类型 |
函数功能 |
参数意义 |
返回值 |
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 |
获得供应商指定信息 |
供应商编号,列名 |
列信息 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该函数在新建单据的时候调用。
该函数在显示单据的时候调用。
该函数在增加一行物资的时候调用。
该函数在单元格里面的内容被修改了的时候调用,利用change_col变量可知道被修改的是哪个项目。
该函数在某些单据表头输入控件的内容被修改了的时候调用,利用change_obj变量可知道被修改的是哪个输入控件。
该函数在打印前调用,可以用can_print参数来决定本次打印是否允许。
相关参数:print_process_times 标识这是第几次打印。
该函数可以被单据操作菜单下的《运行脚本adjust_row函数》功能触发,针对每条记录调用一次。主要用于需要的时候进行批量修改数据。
在func_before_print()里面加以判断控制。
int
func_before_print()
{
can_print=1;
if(print_process_times>1)
can_print=0;
//show_v_para();
return 1;
};