K3 BOS应用开发百问百答(V1.0) 下载本文

K/3 BOS应用开发百问百答

【摘要】事务处理

版本:K310.2SP1+SP2+10.3

问题描述:1、BOS的插件开发中,事务怎样处理啊?又不能直接操作数据库。有什么好方法吗?否则数据可能就乱掉了。2、在事务完整性处理上,目前的BOS插件还有很多需要改进。说个简单例子:BOS是支持多插件的,那么多插件之间如何保证事务完整性呢?同样是审核事件,有2个插件响应了这个事件,如果第一个插件通过了审核,但是第二个插件却不能通过,那么第一个插件处理了的数据又如何回滚?

【解答】

1、 如在插件中编写大量的更新SQL请使用中间层插件,中间层插件能保证事务的完整性。 2、 如果在客户端希望执行SQL时保证事务一致性,建议使用 K3Lib.UpdateData 方法,将希望在同一事务中处理的SQL语句通过它一次性提交,BOS会自动启用事务处理来保证;如果像多个插件中的审核等操作的一致性问题,解决的方法是制定一个中间层的审核前插件来判断处理;这类的问题都可以在中间层的相关事件中处理,来保证一致性。

【摘要】Bos单据插件中能否调用K3Billtransfer.dll组件

版本:K310.2SP1+SP2+10.3

问题描述:Bos 开发的单据还能不能调用 k3billtransfer.dll 这个组件?

【解答】

BOS 开发的单据不能调用 k3billtransfer.dll,只有在工业单据里能调用。

【摘要】基本单位数量在录入完数量后仍然为空

版本:K310.2SP1+SP2+10.3 问题描述:新增BOS 单据分录中有数量 及基本单位数量 字段, 基本单位数量关联字段为数量, 但输入完数量后,基本单位数量仍然为空。

【解答】

保存后基本单位数量就有了。

【摘要】BOSV10.1单据插件中如何向单据体逐行插入数据

版本:K310.1

问题描述:在BOSV10.2中,填充新行数据可以用m_BillInterface.InsertNewRowAndFill方法实现,但是在BOSV10.1中不知道用什么方法可以向单据体逐行插入数据?

【解答】

将10.1的KFO.DLL换成10.2 KFO.DLL,是兼容的。 m_BillInterface.Data(\

【摘要】BOS单据选单返回时自动在表体添加一行分录 版本:K310.2后所有版本

第20页

K/3 BOS应用开发百问百答

问题描述:BOS 开发一张新的单据. 在选单返回时, 希望能在表体自动添加一行分录。 事件测试代码如下:

Private Sub m_BillInterface_AfterSelBillBeforeFillData(ByVal dcData As KFO.IDictionary, ByVal dctLink As KFO.IDictionary)

Dim CoDict As KFO.Dictionary

Set CoDict = dcData(\拷贝第一条分录数据 dcData(\添加到 dcData

dcData(\= dcData(\更改分录号 'Stop

set CoDict=Nothing End Sub

我用 watch 查看 DcData 的值. DcData(\也有增加一条, 但返回后,新添加的分录并未带到目标单据上? 请问我还要修改哪些地方?

【解答】

此方法在调试状态下是不能把值传过去的,编译之后就可以了。 你的代码有以下问题:

1、取分录号使用dcData(\; 2、Vect的最大值用UBound,而不是count;

3、字段的key值使用m_BillInterface.TableInfo(\是字段名。 正确的代码是:

Dim CoDict As KFO.Dictionary

’dcData(\Set CoDict = dcData(\拷贝第一条分录数据 dcData(\添加到 dcData

dcData(\更改分录号 'Stop

Set CoDict = Nothing

【摘要】只有工具条及菜单栏的浏览数据窗口

版本:K310.2SP2及以后版本

问题描述:能否在新版BOS中提供一个没有数据,只有工具条及菜单栏的浏览数据窗口,供做插件集成操作窗口用,现在只能用单据窗口实现,打开时还出现过滤窗口,很别扭。

【解答】

BOS中有一个自定义序事簿联查接口,可以指定单据类型和过滤条件联查所有新老单序事簿,不用弹出过滤条件。

【摘要】K3Bos表体如何设置合计 版本:K310.2SP2

第21页

K/3 BOS应用开发百问百答

问题描述:K3Bos表体如何设置合计

【解答】

目前不能在界面上设置合计,(系统对数量和金额默认合计),如需对其他字段设置合计,需更改ICClassTableInfo.FSum的值为1。

【摘要】收款单的套打设置里面怎么取到通过Bos自定义的字段

版本:K310.2SP1+SP2+10.3

问题描述:如何设置通过BOS定义的字段的套打?目前在收款单通过BOS自定义了一个字段,那么在收款的套打设置里面怎么取到这个字段呢?

【解答】

在单据中添加一个字段保存后,打开这个套打文件中可以自已添加一个字段,在设置对象属性时可以指定到单据中的这个字段。

【摘要】如何隐藏Bos单据中的层

版本:K310.2SP1+SP2+10.3

问题描述:对BOS单据中的层处理。如何做到显示或隐藏单据中某一层?

【解答】

以层为单位的动态显示隐藏现在没有提供方法;

可以在插件中一个一个字段的隐藏,从字段的FLAYER属性可判断其所属的层。

三、多级审核篇

【摘要】批量审核

版本:K310.2SP1 问题描述:K/3 BOS 单据是否支持批量审核? 如果不支持, 自己可否编写此方面的插件? 能否给过一段示例代码? 序时薄接口对象现在没有审核事件可供调用, 那所有的审核代码都得在插件中自己写嘛?

【解答】

K/3 BOS 单据不支持批量审核,目前还没有这方面的插件,先自己编写吧。序时薄中MultiCheckMgr是审核对象,其中包含了审核的各种方法,但编写代码比较难。

【摘要】设置为一级审核的Bos单据反审核后不能修改

版本:K310.2SP1

问题描述:BOS 开发的新单据. 启用了多极审核,且只设置了一级审核; \修改无需反审到最后一级\的选项也选中了. 在实际作业中,单据反审核后仍然不能修改? 这是什么原因? 用BOS 做了五张单据,经测试如果在序时薄 将单据反审核, 再打开单据, 可以修改;如果在序时薄界面, 打开未审核的单据, 审核后, 再进行反审核操作, 单据可以修改;如果在

第22页

K/3 BOS应用开发百问百答

序时薄界面,打开已经审核的单据, 将单据反审核,单据还是不能修改。

【解答】

在序时薄界面,只能通过“查看”方式打开已经审核的单据,即使单据反审核了,任在“查看”状态下,单据是不能修改的。

在K310.3中已解决此问题。

【摘要】能否使administrator对任何人审核的BOS单据进行反审核

版本:K310.2SP2

问题描述:只有一级审核的BOS单据,其他用户审核的,有否这样的设置,能够让administrator对其进行反审核。目前由于administrator既不是审核人又不是下级审核人,没有这样的权限。

【解答】

不能,除非管理员也是审核成员。

【摘要】实现多级审批同时需要更改审批的数量与单价

版本:K/310.2SP2及以上版本

问题描述:在BOS中可否实现多级审批同时需要更改审批的数量与单价的需求?

【解答】

10.2SP2以后的版本有“修改单据无需反审核到最末一级”的选项,但它能修改单据中所有的内容,再通过字段授权的方式控制单价和数量的权限。

【摘要】BOS字段多级审核后可以修改 版本:K310.2SP1

问题描述:BOS字段多级审核后可以修改

【解答】

BOS10.2增加多级审核的功能,所以IDE设计时也增加了[审核后锁定]的状态,如果是BOS新增的单据启用多级审核后且该流程勾选了[修改无须反审核到最后一级]选项,在审核流程未完成之前,用户都可以修改未勾选[审核后锁定]的字段的内容。但单据流程审核结束后修改按钮灰显,用户只能通过查看按钮进入,因此时整单状态为查看,用户不能修改该张单据任何内容。如审核流程后仍有字段需要维护,可以通过在序时簿增加一个按钮,然后在插件代码中增加如下代码:

Private Sub m_LstInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean)

Select case Bostool.name

case \

call

case else

m_LstInterface.LoadSelectedBill(IIf(CanEdit(vectSelect(1)(\

Enu_BillStatusExt_Modify, Enu_BillStatusExt_View))

第23页