K3 BOS 实施开发应用指南 - 图文

更新时间:2023-09-25 15:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

K/3 BOS插件开发手册

K/3 BOS

插件开发手册

(版本:V12.0)

金蝶软件(中国)有限公司K/3事业部K/3 BOS开发部

目录

用户场景 .......................................................................................................................................... 3 需求 ............................................................................................................................................................. 3 总体需求 ................................................................................................................................................. 3 需求分解 ................................................................................................................................................. 4 详细需求 ................................................................................................................................................. 5 单据信息 ............................................................................................................................................ 5 单据流程 ............................................................................................................................................ 7 多级审核 ............................................................................................................................................ 8 凭证功能 ............................................................................................................................................ 8 设计和实现.................................................................................................................................................. 8 单据数据结构设计 ................................................................................................................................. 9 单据头 ................................................................................................................................................ 9 单据体 .............................................................................................................................................. 12 字段的过滤条件 ................................................................................................................................... 15 BOS IDE中设置过滤条件 .............................................................................................................. 15 通过SQL更新字段的过滤条件 ..................................................................................................... 17 Action设置 ........................................................................................................................................... 18 自动生成Action............................................................................................................................... 18 手动添加Action............................................................................................................................... 21 单据流程 ............................................................................................................................................... 23 【销售订单】下推生成【产品入库通知单】 ............................................................................... 23 练习一下 .......................................................................................................................................... 27 多级审核 ............................................................................................................................................... 29 多级审核设置 .................................................................................................................................. 29 凭证功能 ............................................................................................................................................... 31 设置凭证数据来源 .......................................................................................................................... 31 操作管理 .......................................................................................................................................... 32 插件开发 ............................................................................................................................................... 35 部署 ........................................................................................................................................................... 36 发布到主控台 ....................................................................................................................................... 36 制作部署文件 ....................................................................................................................................... 38

K/3 BOS插件开发手册

用户场景

需求

总体需求

客户个性化需求:在【产品入库单】之前增加一个【产品入库通知】的流程,该流程要求能从【应收合同】或【销售订单】关联生成,并最终能在【产品入库单】反映其来源合同和订单,该流程有多级审核和凭证需求。

第 3 页

K/3 BOS插件开发手册

需求分解

1. 通过BOS IDE单据新增界面新增【产品入库通知单】。

2. 通过Action定义常用单位、常用单位数量、基本单位数量、单价、金额、汇总金

额等一系列单据动作。

3. 通过[多级审核]流程完成单据审核操作。

4. 通过序时簿菜单[凭证]完成凭证生成和察看功能。

5. 通过[单据流程转换]完成【应收合同】→【产品入库通知单】、【销售订单】→【产

品入库通知单】、【产品入库通知单】→【产品入库单】的业务流程转换定义。 6. 通过发布向导完成发布功能。

第 4 页

K/3 BOS插件开发手册

详细需求

单据信息

单据应该记录产品,产品价值,客户等基本信息,具体如下: 单据头应该记录的信息包括: 字段名 【单据编号】 【单据日期】 【审核人】 【制单人】 【币别】 【汇率】 【客户】 【部门】 【职员】 【总额】 【本位币总额】 【源单类型】 【源单编号】 【备注】 单据在运行时,单据头的信息大致如下图所示:

字段描述 单据的唯一标识,每张单据都必须有单据编号字段,必录字段 单据录入时的日期,精确到天即可,必录字段 最终审核单据的用户名称,任何状态下均不可修改 单据的制单员的名称,任何状态下均不可修改 单据结算时使用的币别,必录字段 指定币别与本位币的汇率,币别改变时,自动填入新币别的默认汇率值,同时自动换算已经录入的金额与本位币金额之间的关系,将新得到的总额和本位币总额填充到表头对应字段。 本批入库产品的客户,必录字段 负责本次业务的部门,必录字段 负责本次业务的业务员,在录入时根据【部门】字段,仅显示指定部门的职员供选择,必录字段 本次入库产品的总价值,单据体各分录的产品金额之和 本次入库产品按本位币换算后的总价值,依据公式为:【本位币总额】 = 【总额】 * 【汇率】 用于选指定选单的类型,可以是销售订单和应收合同 指定选单的单据编号 记录附加信息

第 5 页

K/3 BOS插件开发手册

单据体应该记录的信息包括:

字段名 【物料】 【物料名称】 【计量单位】 字段描述 产品的代码,必录字段 产品的名称,从【物料】字段携带出来 产品的计量单位,从【物料】字段的“单位”属性携带出来,【物料】改变时,将【物料】的“单位”属性填充到本字段 产品的目标仓库,从【物料】字段的“默认仓库”属性携带出【收货仓库】 来,【物料】改变时,将【物料】的“默认仓库”属性填充到本字段 产品的目标仓位,从【物料】字段的“默认仓位”属性携带出来,【物料】改变时,将【物料】的“默认仓位”属性填充到本字段 产品的批次,可手工录入,也可F7选择,F7选择时根据【物料】,【收货仓库】,【仓位】三个字段进行过滤 产品的数量,其精度根据【物料】的“数量精度”属性设定 其值改变时,根据【计量单位】的“换算率”来修改对应的【基本单位数量】字段,公式为:【基本单位数量】 = 【数量】 * 【计量单位.换算率】 其值改变时,自动计算并填充【金额】字段,依据公式为: 【金额】 = 【单价】 * 【数量】 【基本单位数量】 关联基本单位数量 产品的基本单位数量,与【数量】字段之间存在换算关系,详情请参考【数量】字段的字段描述,本字段在任何情况下均不可修改 已经下推生成产品入库单的基本单位数量。本字段用于关联关系中的扣减,任何状态下均锁定。 产品的单价,其精度根据【物料】的“单价精度”属性设定 其值改变时,根据【计量单位】的“换算率”来修改对应的【基本单位单价】字段,公式为:【基本单位单价】 = 【单价】 * 【计量单位.换算率】 其值改变时,自动计算并填充【金额】字段,依据公式为: 【金额】 = 【单价】 * 【数量】 【基本单位单价】 产品的基本单位数量,与【单价】字段之间存在换算关系,详情请参考【单价】字段的字段描述,本字段在任何情况下均不可修改 产品的金额,本字段的值改变时,需要将各分录的金额值合计填充到单据头【总额】字段 另外,当本字段的值改变时,需要重算【单价】字段,依据的第 6 页

【仓位】 【批次】 【数量】 【单价】 【金额】 K/3 BOS插件开发手册

公式是:【单价】 = 【金额】 / 【数量】 【本位币金额】 产品金额换算成本位币后的总价值。 单据流程

根据客户的要求,【产品入库通知单】可以由【销售订单】和【应收合同】下推生成,同时可以在录入【产品入库通知单】时,通过选取已有的【销售订单】和【应收合同】来快速录单。。

客户还要求【产品入库通知单】可以方便的下推生成【产品入库单】。:

单据流程:销售订单 ? 产品入库通知单 功能简述:

通过【销售订单】下推生成【产品入库通知单】,下推单据可以一次推完,也可以分多次下推,但是要保证下推的【产品入库通知单】上的“基本单位数量”不能超过源【销售订单】上的“基本单位数量”。同时,每下推一次,要在源单的“关联基本单位数量”字段进行扣减。在下推生成的【产品入库通知单】上,以下字段允许修改:“部门”,“职员”,“备注”,“物料”,“计量单位”,“数量”,“单价”。同时,在销售订单上,如果选择的分录中“部门”,“业务员”,“币别”,“购货单位”四个字段必须一致,否则,不允许下推。 在录入【产品入库通知单】时,可以在单据头的“源单编号”字段根据“源单类型”进行选单,选单时,产品入库通知单的界面上已经录入了以一下字段中的一个或多个值,选单时,将依据录入的数据作为对应销售订单上的过滤条件。这些字段包括:“币别”,“部门”,“职员”,“客户”四个字段。

【销售订单】和【产品入库通知单】的单据关联关系中,字段对应关系如下表所示:

下推到产品入库通知单时的字段 单据头.币别 单据头.部门 单据头.职员 单据头.客户 单据头.备注 单据体1.物料 单据体1.计量单位 单据体1.数量 单据体1.基本单位数量 单据体1.单价 单据体1.合同分录内码 单据体1.订单号

销售订单上的字段 单据头.币别 单据头.部门 单据头.业务员 单据头.购货单位 单据头.摘要 单据体1.产品代码 单据体1.单位 单据体1.数量 单据体1.基本单位数量 单据体1.单价 单据体1.合同分录 单据体1.编号 单据流程:合同应收 ? 产品入库通知单

功能简述:通过应收合同直接下推生成产品入库通知单,下推单据可以一次推完,也可以分多次下推,但是要保证下推的产品入库通知单上的基本单位数量不能超过源销售订单上的基本单位数量。同时,每下推一次,要在源单的关联基本单位数量字段进行扣减。字段下推时

第 7 页

K/3 BOS插件开发手册

的对应关系如下表所示: 应收合同上的字段 单据头.币别 单据头.部门 单据头.业务员 单据头.核算项目 产品明细.产品代码 产品明细.计量单位 产品明细.数量 产品明细.基本数量 产品明细.含税单价 单据头.合同号 单据流程:产品入库通知单 ? 产品入库单 功能描述: 单据体1.物料 单据体1.计量单位 单据体1.数量 单据体1.数量 单据体1.单价 单据体1.批次 单据体1.基本单位数量 单据体1.基本单位数量 单据体1.单价 单据体1.收货仓库 单据体1.仓位

多级审核

下推到产品入库通知单时的字段 单据头.币别 单据头.部门 单据头.职员 单据头.客户 单据体1.物料 单据体1.计量单位 单据体1.数量 单据体1.基本单位数量 单据体1.单价 单据体1.合同号 单据体1.物料编码 单据体1.单位 单据体1.应收数量 单据体1.实收数量 单据体1.单价 单据体1.批号 单据体1.基本单位应收数量 单据体1.基本单位实收数量 单据体1.计划单价 单据体1.收货仓库 单据体1.仓位 客户要求新增加的【产品入库通知单】具有一级审核功能。 单据在业务审核后允许变更。

可以按多级审核状态对单据进行过滤。

凭证功能

可以生成相关凭证,在单据和序时薄上均有用户接口。 可以按记账状态对单据进行过滤。

设计和实现

在BOS IDE中,打开“供应链”模块的“仓存管理”子系统,新建单据,选择“新建业务单据”,指定业务对象代码为200000000(业务对象代码默认从200000000开始,本书讲解时以200000000为例)。

第 8 页

K/3 BOS插件开发手册 单据数据结构设计

经分析【产品入库通知单】单据结构如下:

单据头

字段名 【单据编号】 字段关键属性设置 类型:常规字段库.单据编号 字段名:FBillNo 类型:常规字段库.日期 简体中文标题:单据日期 【单据日期】 字段名:FDate 必录:是 类型:常规字段库.用户 【审核人】 简体中文标题:审核人 字段名:FChecker 类型:常规字段库.制单人 【制单人】 字段名:FBiller 类型:常用字段库.币别 【币别】 字段名:FCurrencyID 必录:是 类型:常规字段库.小数 【汇率】 简体中文标题:汇率 字段名:FExchangeRate 类型:核算项目字段库.客户 【客户】 字段名:FCustID 必录:是 类型:核算项目字段库.部门 【部门】 字段名:FDeptID 必录:是 类型:核算项目字段库.职员 【职员】 字段名:FEmpID 必录:是 第 9 页

K/3 BOS插件开发手册

类型:常规字段库.金额 简体中文标题:总额 【总额】 字段名:FTotalAmount 关联币别字段:【币别】 类型:常规字段库.金额 简体中文标题:本位币总额 【本位币总额】 字段名:FStdTotalAmount 关联币别字段:本位币(默认) 【源单类型】 【源单编号】 【备注】 字段名:FNotes 类型:常规字段库.凭证字号 【凭证字号】 字段名:FVoucherID 单据头的字段分两个页签存放,分别命名为:基本信息和备注信息。按上表中的说明,向单据中添加字段(字段中除备注在“备注信息”页签上以外,其它字段都在“基本信息”页签上)。

注意:单据编号字段默认在单据上,而不是在页签上,设计器里又不能更改其容器,需要先保存单据模板并关闭单据设计器,用SQL直接更新BOS元数据,SQL语句如下: update ICClassTableInfo set FContainer = 'FTab,0' where fclasstypeid = 200000000 and fkey = 'FBillNo' update ICClassType set FID = FID 类型:常规字段库.源单类型(选单) 类型:常规字段库.源单编号(选单) 类型:常规字段库.备注 这时再打开单据模板,发现单据编号已经在“基本信息”页签了。

注意:ICClassTableInfo表中的FContainer字段表示字段的容器,FTab则是页签的FKey值,0则表示第一个页签。

设计好的单据头如下图所示:

第 10 页

K/3 BOS插件开发手册

第 11 页

K/3 BOS插件开发手册

单据体

字段名 字段关键属性设置 类型:核算项目字段库.物料 【物料】 字段名:FItemID 基础资料相关属性:代码 类型:常规字段库.基础资料属性 【物料名称】 来源字段:物料 携带字段:名称 类型:常用字段库.计量单位 字段名:FUnitID 【计量单位】 关联计量单位组:物料.计量单位 必录:是 类型:核算项目字段库.仓库 简体中文标题:收货仓库 【收货仓库】 字段名:FDCStockID 必录:是 类型:常用字段库.仓位 【仓位】 字段名:FDCSPID 必录:是 类型:常规字段库.批次 字段名:FBatchNo 【批次】 批次控制类别:必须为已有批次 关联物料字段:【物料】 必录:是 类型:常规字段库.数量 字段名:FQty 【数量】 缺省值:0 关联计量单位:【计量单位】 合计:是 【基本单位数量】 类型:常规字段库.基本单位数量 字段名:FQty_Base 第 12 页

K/3 BOS插件开发手册

关联数量字段:【数量】 合计:是 类型:常规字段库.单价 字段名:FPrice 【单价】 缺省值:0 关联计量单位:【计量单位】 类型:常规字段库.基本单位单价 【基本单位单价】 字段名:FPrice_Base 关联单价字段:【单价】 类型:常规字段库.金额 字段名:FAmount 【金额】 关联币别字段:【币别】 合计:是 类型:常规字段库.金额 字段名:FStdAmount 【本位币金额】 关联币别字段:本位币(默认) 合计:是 锁定性:新增,修改,审核后均锁定 类型:常规字段库.源单内码 【源单内码】 字段名:FID_SRC 【源单分录内码】 【源单编号】 字段名:FBillNo_SRC 类型:常规字段库.源单类型 【源单类型】 字段名:FClassID_SRC 类型:常规字段库.文本 【订单号】 字段名:FOrderNo 类型:常规字段库.文本 【合同号】 字段名:FContractNo 【关联基本单位数量】 类型:常规字段库.基本单位数量 字段名:FCommitQty_Base 第 13 页

类型:常规字段库.源单分录内码 字段名:FEntryID_SRC 类型:常规字段库.源单编号 K/3 BOS插件开发手册

按照上表中的描述在BOS设计器中新建单据,并向单据中拖放入相应的字段,做好设置。

设置好的界面如下:

第 14 页

K/3 BOS插件开发手册

字段的过滤条件

设置完字段的基本属性,我们接下来看一下如何实现以下功能:

1. 怎样实现在输入【部门】后再输入【职员】字段时依据【部门】字段的值过滤【职员】

字段?

2. 怎样实现在输入【仓库】后依据【仓库】的“仓位组”来过滤【仓位】? 3. 怎样实现在输入【批次】字段后,依据【物料】,【仓库】,【仓位】作为过滤条件过滤【批

次】字段的值?

答案是通过设置基础资料类型字段的过滤条件来实。

BOS IDE中设置过滤条件

对第一个问题,我们先看一下,如果不设置过滤时,在输入职员时的下拉表显示情况,如下图所示:

实际上,无论此时我们在部门字段输入的是什么部门,或者不输入值,我们在输入职员时显示的下拉列表值值都是一样的,即列出所有的职员。接下来我们在BOS IDE中将【职员】字段的“过滤”属性设置为“FDepartmentID = GetFldValue(FDeptID,1)”(注:不包含双引号)。

此时我们再来看一下运行时的效果,我们先在【部门】字段中,输入与上图一样的值:“财务部”,此时再在【职员】字段按F8,可以看到下拉列表的情况如下图:

可以看到,职员字段可以选择的值只有五项,这五项正是我们财务部下属的职员。

说到这里,我们来简单看一下我们为什么要把职员的过滤条件设置成为“FDepartmentID = GetFldValue(FDeptID,1)”呢?

过滤条件顾名思义我们可以看成是在一段SQL后面附加的过滤条件,此处是职员,那么SQL如果没有过滤条件的情况下,大概应该是这个样子“Select 职员代码,职员名称 from

第 15 页

K/3 BOS插件开发手册

职员表”,那么我们怎样才能选出指定条件的职员呢?大概想一下应该是这样的Where字句“职员表.所属部门 = 指定的部门”,如果你对职员表有一定的了解,那么我们此处很容易写出Where子句为“FDepartmentID = 指定部门的ID”,其中FDepartmentID是部门内码,如果您不了解职员表呢?也没有问题,你可以通过K3字段描述查询工具来看一下职员表,通过如下菜单可以打开“K3字段描述查询工具”,如图:

打开后,按下图指示选择:

选中后,可以看到这样一条记录如下:

可以知道t_emp表中确实是有部门内码字段的,其字段名是“FDepartmentID”。

至此,我们知道了【部门】字段在职员表中对应的字段名为“FDepartmentID”,那么如何获得已输入的部门内码呢?这就是此处我们的GetFldValue(FDeptID,1)函数要做的事情。

第 16 页

K/3 BOS插件开发手册

GetFldValue是我们专门为过滤条件动态取值设计的,其语法为GetFldValue(取值字段的Key值,是否强值要求取值字段输入值)。

我们此处是GetFldValue(FDeptID,1)即表示动态取【部门】字段的值,并且必须要求【部门】字段输入值后,才能够录入【职员】字段。

如果我们不录入【部门】字段,而直接按F7录入【职员】字段,那么此时会给出提示,如下图:

如果此时按F8,则选不出任何职员出来。

如果我们想去掉这个限制,只须将第二个参数改为0即可,即过滤条件改为“FDepartmentID = GetFldValue(FDeptID,0)”这时,如果输入了部门字段,再输入职员字段,则会按部门过滤职员,否则,则列出所有的职员,和没有过滤条件一样。

读者朋友们,可以拿第二个部题作一下练习。

注:第二题的解决方法是在仓位的过滤条件中设置如下条件:

FSPGroupID = (SELECT FSPGroupID FROM t_Stock WHERE FItemID = GetFldValue(FDCStockID,1))

通过SQL更新字段的过滤条件

通过BOS IDE我们设定了职员和仓位字段的过滤条件上,但是对于第三个问题,当我们想按照相同的方法来设定批次字段过滤条件时,我们发现,批次字段没有过滤条件供我们设定。

这种情况下我们要怎么办呢?

答案是使用SQL来修改元数据中ICClassTableInfo表中的FFilter字段。

我们在SQL查询分析器中直接输入以下SQL,并执行即可。 update ICClassTableinfo set FFilter='(FItemID=GetFldValue(FItemID,1) and FStockID=GetFldValue(FDCStockID,1) and FStockplaceID=GetFldValue(FDCSPID,1))' where FKey='FBatchNo' and FClassTypeID=200000000

第 17 页

K/3 BOS插件开发手册

Action设置

本章的各Action的参数意义请参考《BOS用户手册》中第六章:“动作设置”的相关内容。《BOS用户手册》可以直接在BOS IDE中按帮助快捷键F1获取。

自动生成Action

保存设计好的单据后,这时再去查看【币别】和【物料】字段的“加载更新事件”和“值更新事件”,下图分别是【物料】字段的“值更新事件”配置界面:

这些Action都并没有手动配置,是系统在设置对应字段时,自动添加的。现在简单的说一下上图中系统自动添加的Action。

选中TakeBaseData{FBaseProperty}字段,选择修改,可以看到该Action的配置界面如下图所示:

第 18 页

K/3 BOS插件开发手册

该Action是在添加“基础资料属性”字段是系统自动添加的。如下图,

在设置“基础资料属性”的来源字段时,会在来源“基础资料”的值更新事件中自动添加形如TakeBaseData{基础资料属性的Key值}的Action。

第二,三两个Action:LockByItemTrack{FBatchNo}和ClearFieldValue{FBatchNo}则是在

第 19 页

K/3 BOS插件开发手册

添加【批次】字段时添加的。其中【批次】字段是通过“关联物料字段”的属性与【物料】字段建立关联关系的。这两个Action实现的功能如下:

1,LockByItemTrack,如果关联的物料是启用了批次管理的,那么批次字段是解锁状态的,允许用户输入,否则,批次字段是锁定的,不允许用户输入。

2,ClearFieldValue,每次改变物料字段时,清空对应的批次字段的值。

最后一个Action是形如SetDecimal{字段列表},在此处是因为添加【数量】,【基本单位数量】,【单价】,【基本单位单价】这些字段时添加的,那么【数量】,【单价】字段是如何关联的【物料】字段的呢?答案是通过【计量单位】字段作为中介。【数量】和【单价】字段都有一个属性叫作“关联计量单位”,与某一指定的计量单位相关联,而该计量单位又有属性叫作“关联计量单位组”,此属性将计量单位与物料关联起来,这样,【数量】与【单价】字段就通过【计量单位】字段与指定的【物料】字段建立了联系。

SetDecimal的功能是根据物料的数量精度和单价精度来设置指定的【数量】或【单价】字段的精度。SetDecimal还可以根据币别来设定指定的金额字段的精度,这就是我们看到【币别】字段同样被添加了此Action的原因。【金额】字段是通过“关联币别字段”与【币别】字段建立联系的。

第 20 页

K/3 BOS插件开发手册

部署

目前BOS单据的部署主要支持两种方式,分别为:发布到主控台和制作部署文件。

发布到主控台

在BOS IDE的“部署”菜单下有 “发布到主控台”的菜单项,如下图:

点击后,弹出发布界面,如下图:

选择好要发布的单据,以及要发布的目标系统,目标子系统和目标子功能模块后,单击“添加”按钮,将其加入到发布列表,随后点击“发布”按钮,即可轻松完成发布。

第 36 页

K/3 BOS插件开发手册

发布完成后,我们打开主控台,可以看到发布的结果,如下图所示:

第 37 页

K/3 BOS插件开发手册

制作部署文件

如果单据上有插件,那么还可以通过制作布暑文件来发布制作的单据。此时,除了可以发布元数据以外,还可以包含一些客户端插件等,将制作好的布暑包在中间层安装,这样当客户端下次打开时,除了可以看到发布的功能外,还可以自动从中间层下载相应的最新的客户插件。这样做可以避免在每个客户端都安装对应的客户端插件。

制作布暑文件的过程如下:

1,在BOS IDE的编辑菜单上打开发布向导,如下图所示:

2,在对应界面选中要发布的单据,如下:

注意:此处如果有相应的单据流程,需要同时选中。

3,设置要发布的元数据,功能,文件以及发布文件的路径,如下图:

第 38 页

K/3 BOS插件开发手册

4,设置完成后,在对应的位置会看到生成的布暑包。将布暑包在中间层安装即可完成发布。

第 39 页

K/3 BOS插件开发手册

第 40 页

K/3 BOS插件开发手册

手动添加Action

在上一节中,我们看到,系统自动添加了一些Action,这些Action实现了一些简单的功能,如设置字段的精度,携带基础资料属性等,本节继续看一下手动添加Action实现一些功能。

1. 问:如何实现在录入或修改【币别】时【汇率】字段自动调整?【汇率】调整后重新根

据单据体上金额的值来计算【本位币金额】并将新的【本位币金额】重新合计后填充到表头的【本位币总额】字段? 答:

在【币别】字段的“值更新事件”中加入“携带当前字段相关基础资料属性到指定列”的Action(用于将【币别】字段的“汇率”属性携带到【汇率】字段)。

在【币别】字段的“值更新事件”中加入“触发字段值更新事件”的Action。(用于触发【汇率】字段的“值更新事件”)。 在【汇率】字段的“值更新事件”中加入“计算定义公式的值并填写到指定列”的Action。公式为:【本位币金额】=【金额】*【汇率】

在【汇率】字段的“值更新事件”中加入“按公式计算表体字段的值并填写到表头目标字段”的Action。其中计算方式为“合计”,目标字段为“本位币总额”,源字段为“本位币金额”。

2. 如何在【物料】字段录入或修改时,实现如下一系列的功能?

1) 携带【物料】字段的“销售单位”属性到【计量单位】字段 2) 携带【物料】字段的“默认仓库”属性到【收货仓库】字段 3) 携带【物料】字段的“默认仓位”属性到【仓位】字段

答:在【物料】的“值更新事件”中加入“携带当前字段相关基础资料属性到指定列”的Action。

3. 怎样实现【计量单位】变化时,自动换算【数量】和【单价】?

答:在【计量单位】字段的“值更新事件”中加入“计量单位变化后自动换算数量和单价”的Action。

4. 【数量】字段变化后自动计算【金额】字段并填充到表头的【总额】字段?

答:在【数量】字段的“值更新事件”中加入“计算定义公式的值并填写到指定列”的Action。公式为:【金额】 = 【单价】 * 【数量】。 在【数量】字段的“值更新事件”中加入“触发字段值更新事件”的Action(用于触发【金额】字段的值更新事件)。

5. 【单价】字段变化后自动计算【金额】字段并填充到表头的【总额】字段?

答:在【单价】字段的“值更新事件”中加入“计算定义公式的值并填写到指定列”的

Action。公式为:【金额】 = 【单价】 * 【数量】。 在【单价】字段的“值更新事件”中加入“触发字段值更新事件”的Action(用于触发

第 21 页

K/3 BOS插件开发手册

【金额】字段的值更新事件)。

6. 怎样实现【金额】字段改变后倒算【单价】字段,重新计算【本位币金额】的值,汇总

【金额】值到表头字段的【总额】字段,汇总【本位币金额】的值到表头的【本位币总额】?

答:在【金额】的“值更新事件”上分别加入以下Action:

1,“计算定义公式的值并填写到指定列”,公式为:【单价】= 【金额】 / 【数量】 2,“计算定义公式的值并填写到指定列”,公式为:【本位币金额】 = 【金额】 * 【计量单位.换算率】

3,“按公式计算表体字段的值并填写到表头目标字段”,其中“计算公式”为“合计”,“目标字段”为“总额”,“源字段”为“金额”。 4,“按公式计算表体字段的值并填写到表头目标字段”,其中“计算公式”为“合计”,“目标字段”为“本位币总额”,“源字段”为“本位币金额”。

第 22 页

K/3 BOS插件开发手册

单据流程

【销售订单】下推生成【产品入库通知单】

客户的需求中,要求【销售订单】不能够无限制下推,且已下推的产品数量要在【销售订单】中的“关联基本单位数量”字段有所反映。

BOS 共可设置四类关联关系,他们分别是“复制”,“关联复制”,“钩稽”,“强制钩稽”,此处“复制”和“关联复制”首先可以排除,因为这两种关系中,目标单上的数量不会影响原单的数量,接下来我们可以看一下“钩稽”和“强制钩稽”,虽然这两种关系都可以满足根据目标单的数量对源单上对应数量进行扣减的条件,但是,“强制钩稽”中,我们只能对销售订单进行一次下推,而不是只要满足条件就可以无限制的下推,因此,“强制钩稽”也可以排除,至次,我们可以确定,销售订单下推生成产品入库通知单时,关联关系为“钩稽”。(注:对于这四种关联关系之间的区别,请在BOS IDE中,按F1获取帮助。) 客户需求中还提出,下推生成的【产品入库通知单】的“基本单位数量”不可以超过对应【销售订单】上的“基本单位数量”,并且,已下推的数量在销售订单的“基本单位关联数量”上记录。此处比较奇怪,“基本单位关联数量”,这个字段实际上并不显示在销售订单上,同时,设置钩稽字段时(界面,见下面的图),我们在扣减字段中也无法选到这个字段,这种情况下我们该怎么办呢?

第 23 页

K/3 BOS插件开发手册

这种情况下,我们可以通过直接更新ICClassLinkCommit表的对应记录的FCommitKey来实现。此处我们除了设置控制字段和扣减字段外,还将“主控”和“严格控制”的复选框选中。

另外客户要求“部门”,“职员”,“备注”,“物料”,“计量单位”,“数量”,“单价”这些字段在下推后可以修改,我们只需将其对应字段的“修改”复选框选中即可。

客户还要求“部门”,“业务员”,“币别”,“购货单位”这些字段在选择时,所有选择的分录中,这些对应字段必须一致,我们只需在对应字段的“选单一致”复选框选中即可。 客户还要求在录入【产品入库通知单】时,可以在单据头的“源单编号”字段根据“源单类型”进行选单,选单时,产品入库通知单的界面上已经录入了以下字段中的一个或多个值,选单时,将依据录入的数据作为对应销售订单上的过滤条件。这些字段包括:“币别”,“部门”,“职员”,“客户”四个字段。我们只需在对应字段的“过滤”复选框选中即可。

综上,我们可以得该选单流程的综合信息表,如下:

第 24 页

K/3 BOS插件开发手册

流程名称 关联关系 关联内码存储 钩稽字段 【销售订单】下推生成【产品入库通知单】 钩稽 单据体.源单内码 控制字段:单据体1.基本单位数量 扣减字段:单据体1.基本单位关联数量 主控:是 严格主控:是 源单字段 计算列 修改 选单一致 是 是 是 是 过滤 处理选单值更新事件 是 是 红字为正 仅复制 目标单字段 单据头.币别 单据头.部门 单据头.业务员 单据头.购货单位 单据头.摘要 单据体1.物料 单据体1.单位 单据体1.数量 单据体1.基本单位数量 单据体1.单价 单据体1.合同分录 单据体1.编号 单据头.币别 单据头.部门 单据头.职员 单据头.客户 单据头.备注 单据体1.产品代码 单据体1.计量单位 单据体1.数量 单据体1.基本单位数量 单据体1.单价 单据体1.合同分录内码 单据体1.订单号 是 是 是 是 是 是 是 是 是 是 是

至此,我们已经配置完成了销售订单到产品入库通知单的流程。配置完成后的图片见下页。

第 25 页

K/3 BOS插件开发手册

第 26 页

K/3 BOS插件开发手册

练习一下

在上一节中,我们完整的演示了如何配置一个单据流程,本节读者可以拿客户另外的两个需求来练习一下。练习完成后,可以参考一下答案,参考答案如下: 【应收合同】下推生成【产品入库通知单】 流程名称 关联关系 关联内码存储 钩稽字段 【应收合同】下推生成【产品入库通知单】 钩稽 单据体.源单内码 控制字段:单据体1.基本数量 扣减字段:单据体1.基本单位关联数量(在应收合同上新增的数量字段) 主控:是 严格主控:是 源单字段 计算列 修改 选单一致 是 是 是 是 过滤 处理选单值更新事件 是 红字为正 仅复制 目标单字段 单据头.币别 单据头.部门 单据头.职员 单据头.客户 单据体1.物料 单据体1.单位 单据体1.数量 单据体1.基本单位数量 单据体1.单价 单据体1.合同号 单据头.币别 单据头.部门 单据头.业务员 单据头.核算项目 产品明细.产品代码 产品明细.计量单位 产品明细.数量 产品明细.基本数量 产品明细.含税单价 产品明细.合同号 是 是 是 是 是 是 第 27 页

K/3 BOS插件开发手册

【产品入库通知单】下推生成【产品入库单】 流程名称 关联关系 关联内码存储 钩稽字段 【产品入库通知单】下推生成【产品入库单】 钩稽 无 控制字段:基本单位数量 扣减字段:关联基本单位数量 主控:是 源单字段 单据体1.物料 单据体1.计量单位 单据体1.数量 单据体1.数量 单据体1.单价 单据体1.批次 单据体1.基本单位数量 单据体1.基本单位数量 单据体1.单价 单据体1.收货仓库 单据体1.仓位 过滤 目标单字段 单据体1.物料编码 单据体1.单位 单据体1.应收数量 单据体1.实收数量 单据体1.单价 单据体1.批号 单据体1.基本单位应收数量 单据体1.基本单位应收数量 单据体1.计划单价 单据体1.收货仓库 单据体1.仓位

第 28 页

K/3 BOS插件开发手册

多级审核

多级审核设置

新建多级审核,如下:

点“确定”按钮后,出现多级审核的配置界面。

在“用户配置”页签添加拥有审核权限的用户或用户组,将基本信息页签中,将启用流程复选框选中,然后保存该流程,则新建的单据产品入库通知单已经具有了多级审核的能力了。

第 29 页

K/3 BOS插件开发手册

第 30 页

K/3 BOS插件开发手册

凭证功能

设置凭证数据来源

在BOS IDE的编辑菜单项中,点击“凭证数据来源设置”,弹出“凭证数据来源设置”界面,设置后,如下图所示:

第 31 页

K/3 BOS插件开发手册

设置完成后,单击“确定”按钮即完成了凭证数据来源的设置。

操作管理

设置完凭证数据来源后,还需要设定查看凭证和生成凭证的菜单项的可见性,我们才可以在单据或序时薄上看到对应的菜单项。

点击“编辑”菜单下的“操作管理”菜单项,弹出界面如下图所示:

第 32 页

K/3 BOS插件开发手册

分别设置“查看凭证”,“按单生成凭证”,“合并生成凭证”等项的应用场景,如下:

“查看凭证”和“按单生成凭证”在“单据维护”中 修改,浏览,其它下可见,在“单据序时薄”的 “浏览”下可见。“合并生成凭证”仅在“单据序时薄”的“浏览”下可见。

第 33 页

K/3 BOS插件开发手册

点击该按钮,生成“生成凭证选项”界面,如下:

点击“模板设置”按钮,设置单据生成凭证的模板,设置好并保存,

第 34 页

K/3 BOS插件开发手册

插件开发

客户要求【备注】字段无论在任何状态下均可修改,而用BOS作的单据,当单据审核后,所有字段均不可修改,为此,我们需要通过插件开发完成客户的要求。

对于插件开发用到的相关知识,请参考《BOS用户手册》以及本文的前两个章节,此处不再缀述。

本例中,要实现客户的需求,需要解锁【备注】字段,并让“保存”按钮可见,代码如下所示:

Private Sub m_BillInterface_AfterLoadBill() On Error GoTo Catch Dim dct As KFO.Dictionary Dim lBillStatus As Long '备份单据状态 lBillStatus = m_BillInterface.BillStatus '解锁\备注\字段 m_BillInterface.BillCtl.BillStatus = Enu_BillStatusExt_Modify Set dct = m_BillInterface.TableInfo(m_BillInterface.TableInfo(\ m_BillInterface.LockCell dct, -1, False '使\保存\按钮可用 m_BillInterface.SetBarStatus \ m_BillInterface.SetBarStatus \ m_BillInterface.MenuBar.Refresh '恢复单据状态 m_BillInterface.BillCtl.BillStatus = lBillStatus Catch: Set dct = Nothing If Err.Number <> 0 Then MsgBox Err.Description, vbCritical, m_BillInterface.K3Lib.LoadKDString(\金蝶提示\ End If End Sub

第 35 页

本文来源:https://www.bwwdw.com/article/ghnd.html

Top