04-DHERP客开开发实例

发布时间:2024-10-26 | 杂志分类:其他
免费制作
更多内容

04-DHERP客开开发实例

No.3制作工作流5、表单客开代码1)uf_onload() 目的:待办事宜打开表单时,可以正常展示单据数据代码示例: toolbar.visibleItem(\"toolbar.m14\", false);//流程审批功能隐藏sys_onload();/*****************以下为客开调整区********************/if (!Utility.isSpace(form.parameters.billno)) {//1、通过代办事宜打开,//通过代办事宜打开,目前单据在线billno为空uf_loadBill(\"workflow\");toolbar.visibleItem(\"toolbar.m14\", true);//流程审批功能显示} else {if (form.parameters.action == \"billreview\") {//2、单据再现//。。。 此处可以扩展单据再现打开的代码} else... [收起]
[展开]
04-DHERP客开开发实例
粉丝: {{bookData.followerCount}}
文本内容
第1页

客开应用实例讲解

—2024科情客户技术应用提升培训会

第2页

深耕医药流通行业多年,精通GSP法规条款,让技术深度融合与业务场

景应用,带领团队参与过多个中大型ERP项目建设,全生命周期的完成

项目实施和管理工作,完成过行业内多个最佳业务实践,高标准的达

到与客户的知识交付与输出。

汪松 科情实施服务中心 高级实施顾问

◼ 重点项目经历:

人福湖北医药集团有限公司

湖北九州通中加医药有限公司

马应龙物流医药有限公司

湖北唐人医药有限公司

武汉健民医药集团

武汉启元医药

第3页

目录

C O N T E N T S

01 资料检索方案 02 单据提取方案

03 制作工作流 04 报表和模板

第4页

资料检索方案

第5页

No.1 资料检索方案

业务场景:

在企业管理中,遵循的原则:用最短的时间,完成相应的工作,提高工作效率。比如在:采购订单

中,选择商品、供应商、客户等等时,对相应的数据,进行检索。使用系统检索方案控件,可以有效提

高工作效率。

资料检索方案,包括不同类的检索方案,如商品、供应商、客户、业务员选择等等。

以【采购订单为例】,选择供应商、采购员、选择商品都属于检索方案的使用案

例。

第6页

No.1资料检索方案

以【供应商资料选择】为例。

第7页

No.1资料检索方案

【中文名称】资料检索方案

【功能说明】主要为其它控件设置建立检索

方案,光标在控件上,

进行空格+回车、双击或点击 都会

弹出资料检索方案,

方案

【方案】选用公共的资料检索方案

公共

【标题】资料检索方案的标题名称

【多选】是否允许多选

控件

【包含表格】是否以表格的形式显示

【包含树】是否以结构树的形式显示

公共检索方案、本地资料检索方案的区别:

公共检索方案:只要在方案标题栏中,选择

对应的方案ID就可以,属性自动显示;

本地检索方案:需要自己手动填写所有的属

性。

第8页

No.1资料检索方案

【方案类型】图表样式分为selector、bill和form三种

类型=selector:一般用于检索资料,如选择机构、选择客户、商品等等

类型=bill:一般用于业务上下游的单据提取,如销售开票单提取销售订单等

类型=form:一般用于弹出form,支持更复杂的业务应用,比如销售选商品就用的此种类型

【不复制字段】不拷贝的字段即不落在数据集上的字段

【过滤】是否设置显示过滤条件

【过滤表达式】设置过滤表达式

【记录数】设置分页(-1默认不分页)

【目标数据集】用于存储数据的目标数据集

【隐藏字段】设置要隐藏字段

【自动显示】当只找到一条记录符合时直接将数据落下不再弹出资料检索窗口

第9页

No.1资料检索方案

事件:

【AfterOpen】打开资料检索方案之后触发的事件后事件主要是用于资料选

择完毕后的后继处理,比如关联查询或者返回结果的校验等,可以为空。

【BeforeOpen】打开资料检索方案之前触发的事件,主要是准备sql语句中 →

的一些参数的赋值,没有可以为空。

选择方案之后自动生成,不可编辑

→目标数据集必须选择,否则数据落不下来

第10页

No.1资料检索方案

隐藏字段的设置方法:

1、将检索方案,选择空,隐藏字段的属性标题,不是灰色字体,就可以修改:

第11页

单据提取方案

第12页

No.2 单据提取方案

单据提取操作详解:

工作路径:【工作区】---【购销运营】---【采购管理】-【采购订单】

第13页

No.2单据提取方案

开发配置:

第14页

No.2单据提取方案

在uf_adjBill()函数中:

第15页

No.2单据提取方案

提取方案中一般有3个以上的打开参数(至少2个):

打开参数:用于选择待提取的单据,

主数据集打开参数:为主数据集进行数据赋值,

子数据集打开参数:为明细数据集进行数据赋值,可以有多个子数据集,也可以不写。

第16页

No.2单据提取方案

各种打开参数的数据展示:

各打开参数直接都是通过主键字段进行数据传递查询的,主键字段来自【打开参数】。

第17页

No.2单据提取方案

不赋值字段的设置:

1、在公共函数中选择:

2、公共函数的传参详细介绍:【客开软件,工具菜单栏下的‘维护公共函数’可以查看到】

检索:提取方案得到不赋值字段

第18页

制作工作流

第19页

No.3 制作工作流

什么是工作流?

针对需要多人审核或参与共同完成的业务单据,在系统中工作方式

定义为工作流。例如销售开票流程:

发起人→责任人审批→打印单据→财务审核→库房发货

发起人 责任人审批 打印单据

财务审核

第20页

No.3制作工作流

系统中的工作流:

传统作业:一般采用纸质表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统

计报表功能则不能实现。

系统作业:在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关

资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,提高效率,实现知识管理,提升

公司核心竞争力。

第21页

No.3制作工作流

主要介绍一下,如何把一个表单变成工作流表单的详细步骤。

一个完整的工作流表单,应具备以下几点:

➢ 单据保存成功,可以发起工作流。

➢ 流程审批时,审批人可以看到完整的单据数据。

➢ 单据未执行时,可以进行单据修改。可以保存,可以删除。

➢ 单据修改后,不会生成新的工作流单据。

➢ 保证下游提取的单据是审核完成的。

第22页

No.3制作工作流

1、新建工作流

路径:【系统管理区】-【流程管控】-【流程设计】

新建时,可以手动添加节点,也可以引用已有流程进行修改。

引用时需要注意,每个节点对应的表单方法都需要重新选择一下,防止不同表单的父菜单id不

同。

第23页

No.3制作工作流

在结束节点添加审批完成回写字段。

代码格式如下:

DBUtil.update(\"update PurOrderMt set IsEnd= 'Y' where entid = :_entid and billno

= :billno\",{billno:wfresult.billNo})

第24页

No.3制作工作流

2、工作流实例化

路径:【系统管理区】-【流程管控】-【流程实例】

新建的工作流,需要右键添加后,才可以进行实例化。

审批人,可以根据角色、特定人员、相对人员等多种形式。

第25页

No.3制作工作流

3、创建工作流表单

路径:【系统管理区】 -【系统参数】 -【系统设置】-【功能维护】

调用模式:选择WORKFLOW。

参数一:填写工作流id,可以在流程模板设置中查看。

模块:选择和原表单一样的模块。

第26页

No.3制作工作流

4、功能授权

工作流表单新增后,需要重新添加菜单,并重新授权方可使用。

第27页

No.3制作工作流

5、表单客开代码

1)uf_onload()

目的:待办事宜打开表单时,可以正常展示单据数据

代码示例:

toolbar.visibleItem(\"toolbar.m14\", false);//流程审批功能隐藏

sys_onload();

/*****************以下为客开调整区********************/

if (!Utility.isSpace(form.parameters.billno)) {

//1、通过代办事宜打开,

//通过代办事宜打开,目前单据在线billno为空

uf_loadBill(\"workflow\");

toolbar.visibleItem(\"toolbar.m14\", true);//流程审批功能显示

} else {

if (form.parameters.action == \"billreview\") {

//2、单据再现

//。。。 此处可以扩展单据再现打开的代码

} else {

//3、单据新增

//。。。 此处可以扩展单据新增后的代码,如赋值默认值

}

}

第28页

No.3制作工作流

2)uf_save()

目的:删除已存在的工作流、添加待办事宜摘要

代码示例:

if (form.parameters.isworkflow && form.parameters.billno==null){

/删除现有工作流程

if( ds_ddhz.field('billno').value > 0 ){

if(pf_delWFData( ds_ddhz,\"billno\",false) == false){

return;

}

}

//待办事项摘要

pf_setWFInfo(ds_ddhz.field(\"StaffName\").value

,ds_ddhz.field(\"CurrencyName\").value

,Utility.formatFloat(ds_ddmx.field(\"sumTaxAmount\").value,2), 1, ds_ddhz,

ds_ddhz.field(\"Remark\").value);

}

第29页

No.3制作工作流

6、单据调整

一个完善的工作流,在审批的过程中,可能会退回发起人进行单据修改,此时就需要有单

据调整的功能。

在系统中,一般使用uf_adjBill()作为系统单据调整的方法。

function uf_adjBill(){

verifyDisabled = true;

try{

ds_ddmx.openEmpty();

var IsSelfBill = form.parameters.advance[\"2pf566q014enslqh\"];

var params = {};

params.IsSelfBill = IsSelfBill;//是否提取本人单据

params.isModPass = isModPass; //审核完单据是否允许修改

params.caozy = form.userinfo.staffid;

params.fz = useFzhy;// 是否显示 服装行业(颜色,尺码)

sel_adjBill.bill.variables = params;

sel_adjBill.bill.sub[0].variables = params;

sel_adjBill.bill.main.notcopyfields = pf_getNoCopyFlds(51);

sel_adjBill.open();

}

finally{

ds_ddmx.update();

verifyDisabled = false;

}

}

第30页

No.3制作工作流

7、单据删除

在实际业务中,业务员可能需要对做错的单据进行删除,需要执行一下

步骤:

【单据调整】-【单据删除】。

function uf_delBill(){

if( Utility.isSpace(ds_ddhz.field(\"BillNo\").value)){

return;

}

if (confirm( Utility.getMessage(\"askToDel\") )) {

try{

pf_delWFData(ds_ddhz,\"billno\",true);

alert(Utility.getMessage(\"delete\"));

Bill.add();

}catch(e) {

alert(e.message);

}

}

}

第31页

No.3制作工作流

8、添加服务端代码

//服务于工作流中的任务删除

function delete_bill() {

var sqlList = [];

sqlList[sqlList.length] = \"update PurNotesMt set BillState=1 where

billno='\" + billno +\"'\";

//删除WMS接口数据

sqlList[sqlList.length] = \"update WmsInMt set BillState=1 where

billno=\" + billno +\"\";

DBUtil.batchUpdate(sqlList);

return true;

}

此服务端代码名称不可修改,可使用参数只有当前单据id:billno。

第32页

报表和模板

第33页

No.4报表和模板

在项目实施过程中,客户经常会把一些个性化的

报表移植到系统中。

为了提供提高实施工程师的报表开发能力,以

开发工具,新建一个查询报表,以此演示。

1、新建form表单

路径:【race from studio2.0】-【文件】-

【 新建】

第34页

No.4报表和模板

2、维护表单基本属性

模块id,必须维护,不可更改,可在

moduledoc表中查询

表单显示名称,第一次保存前修改,后期不可

更改

表单名称说明

表单id,表单保存后自动生成。

维护sql语句,在代码中进行调用

表单显示大小、位置

第35页

No.4报表和模板

3、添加数据集、字段

路径:【race from studio2.0】-【编辑】-【工具】-【数据组件】

在查询中,如果是单页明细的,至少使用2个数据集,如果是双页,就需要

3个数据集。如图

第36页

No.4报表和模板

4、添加查询条件

1)添加label控件,用于显示条件名称

2)添加textbox控件,并绑定检索方案,用于显示条件内容。

第37页

No.4报表和模板

5、添加明细控件

添加grid控件,并绑定明细数据集。即可显示数据集的字段、数据。

如果是多页,可以先使用tabcontrol1,再填充grid。

第38页

No.4报表和模板

6、添加js代码

(1)uf_onload() 用于查询报表的初始化显示

function uf_onload(){

var date = DateUtil.getServerDate();

var str = \"\";

str = date;

str = str.substring(0, 8);

str += \"01\";

ds_main.append();

ds_main.setValue(\"StartDate\", str);

ds_main.setValue(\"EndDate\", date);

textbox2.focus();

}

第39页

No.4报表和模板

(2)uf_query() 用于查询数据

function uf_subQry(){

var params = {};

params.StartDate = DsMain.field(\"StartDate\").value;

params.EndDate = DsMain.field(\"EndDate\").value;

params.billstate = DsMain.field(\"BillState\").value;

params.billcode = \"%\" + DsMain.field(\"BillCode\").value;

params.deptid = DsMain.field(\"DeptId\").value;

params.orgid = DsMain.field(\"OrgId\").value;

params.staffid = DsMain.field(\"StaffId\").value;

params.businessid = DsMain.field(\"BusinessId\").value;

params.caozy = DsMain.field(\"caozy\").value;

params.goodsid = DsMain.field(\"GoodsId\").value;

if(index=='N'){//是否单页查询

//全部查询

ds_cgdjhz.open(\"uf_cgdjhz_sql\", \"sql\", params);

ds_djmx.open(\"uf_djmx_sql\", \"sql\", params);

ds_hzhj.open(\"uf_hzhj_sql\", \"sql\", params);

}else{

//显示某页,就查询某页

if(tabcontrol1.getSelectedIndex()=='0'){

ds_hzhj.open(\"uf_hzhj_sql\", \"sql\", params);

ds_cgdjhz.open(\"uf_cgdjhz_sql\", \"sql\", params);

}else if(tabcontrol1.getSelectedIndex()=='1‘){

ds_djmx.open(\"uf_djmx_sql\", \"sql\", params);

}

}

}

if (!uf_check()) return;//起始日期校验

uf_subQry();

var ret;

ret = pf_showWaitBox(uf_subQry);//查询等待提示框

}

第40页

No.4报表和模板

(3)uf_reset()用于查询条件重置

function uf_reset(){

if (confirm(Utility.getMessage(\"reset\")))

{

Bill.add();

}

}

(4)添加功能按钮

第41页

No.4报表和模板

7、添加功能菜单,查询测试

1)新保存的功能,需要在开发工具表单列表处查询出来,右键注册(提示表单注册成功)

2)添加菜单,找到对应的功能,添加到菜单某个位置。保存。

3)功能授权,新建功能需要授权后,才可以使用。

第42页

No.4报表和模板

主页模板,主要服务于企业中高管理层及决策层,对企业经营数据进行汇总呈现,并通过穿透报表的方

式,可以更加直观的透视企业经营过程,ERP管理用数据说话,辅助高层及时完善经营管理方向

第43页

No.4报表和模板

主页配置

3.门户配置

3.1 【管理区】

-【门户管理】 】-

【门户设计】-

【门户功能】首先

检查下是否已经更

新了如右功能。

第44页

No.4报表和模板

主页配置

3.门户配置

3.2 【管理区】-【门户管理】-【门户设计】 -【门户模板

维护】新增模板,如下图所示(也可自己编写模板格式,代码格

式详见附录):

第45页

No.4报表和模板

主页配置

3.门户配置

3.3 【管理区】-【门户管理】-【门户设计】 -【门户桌面】依次建立

多个桌面,服务不同权限管理使用。每一个桌面,对应一个模板。可共用同

一个模板。

第46页

No.4报表和模板

主页配置

3.门户配置

3.4 【管理区】-【门户管理】 -【门户设计】 -【桌面分组】新增

桌面分组,如下图所示: 为了演示方便,把所有桌面都配置到一个分

组了(可按权限分组)

第47页

No.4报表和模板

主页配置

3.门户配置

3.5 【管理区】-【门户管理】-【门户设计】 -【桌面分配】设置每个桌

面的使用权限,如下图所示为企业桌面。

第48页

No.4报表和模板

主页配置

3.门户配置

3.5 在分配桌面同一

服务对象的桌面只能存在

一个,再次创建会提示不

可再分配。同一企业四种

服务对象全部维护时,优

先级:

个人 > 部门 > 机构 > 企

第49页

No.4

<table width=\"100%\" border=\"1\" height=\"100%\">

报表和模板

<tr>

<td width=\"33%\" valign=\"top\">

</td>

<td width=\"33%\" valign=\"top\">

</td>

<td width=\"33%\" valign=\"top\">

</td>

</tr>

<tr>

<td width=\"33%\" valign=\"top\">

</td>

<td width=\"33%\" valign=\"top\">

</td>

<td width=\"33%\" valign=\"top\">

</td>

</tr>

<tr>

<td width=\"100%\" valign=\"top\" colSpan=\"3\">

</td>

</tr>

<tr>

<td width=\"100%\" valign=\"top\" colSpan=\"3\">

</td>

</tr>

<tr>

<td width=\"100%\" valign=\"top\" colSpan=\"3\">

</td>

</tr>

<tr>

<td width=\"100%\" valign=\"top\" colSpan=\"3\">

</td>

</tr>

</table>

百万用户使用云展网进行电子书册制作,只要您有文档,即可一键上传,自动生成链接和二维码(独立电子书),支持分享到微信和网站!
收藏
转发
下载
免费制作
其他案例
更多案例
免费制作
x
{{item.desc}}
下载
{{item.title}}
{{toast}}