K3 BOS开发百问百答

客户化开发技术资料——K/3 BOS开发百问百答

K/3 BOS开发百问百答

应用集成部 客户化管理部

2005年12月

i

客户化开发技术资料——K/3 BOS开发百问百答

目录

一、插件开发篇 _____________________________________________________ 1

【问题1】在插件中以新增、修改和查看方式打开另一单据 ______________________________ 1 【问题2】我想在投料变更单的菜单上加入一个菜单项,需要插入一个插件,但投料变更单上已

经有一个插件了,我想了解一下怎样才可以再插入一个插件呢? ________________ 2

【问题3】如何通过插件代码动态设置基础资料或业务单据序时薄过滤条件 ________________ 2 【问题4】在插件中调用序时簿并返回选中的数据 ______________________________________ 3 【问题5】在自定义的BOS单据上,通过插件作生成凭证的功能,但是在调用凭证的组件时,

需要一个二次登录后才能使用相应的模块。请问:如何处理隐身的二次登录,或者其他的变通处理。 __________________________________________________________ 3

【问题6】在设计BOS单据的过程中,经常会有关联的下拉列表框操作,如我在客户上选择“建

设银行”,那么在客户相对应的地址的下拉列表框中应动态显示“建设银行所对应的地址”。也就是说客户地址是随着客户的变化而变化的。 _________________________ 6

【问题7】如何可以物料多选? _____________________________________________________ 6 【问题8】在表单分录里需要在第一列中使用F7键或点击菜单调出某一窗体(在插件中自定义

Form,上有Spread表单),在Form中选中数据(多条或一条),返回到源单,请问在插件中用什么事件可以完成?在单据中添加一菜单,用MenuBarClick事件,F7不易实现。返回的数据需用赋值方法填写到表体中。是什么样的需求不能用BOS单据或基础资料完成“Spread表单”? ___________________________________________ 7

【问题9】插件中字定义系统中如何获取当前系统字符连接串?有个项目中,需要作一个年结功

能,进行土地数据结转、在vb中定义了年结功能窗口,要在主控台子系统中调用,怎样或得当前数据库连接信息,亦无法通过k3lib获得,因为我没必要去调用 bos表单或序时簿。另外,一些复杂报表、我也是通过vb中单独实现、这些报表也需要获的连接字符串才能调用? ______________________________________________________ 8

【问题10】关于K3Billtransfer.dll组件无法使用问题 ________________________________ 8 【问题11】BOS单据插件里的取分录的合计值该怎么做? _______________________________ 8 【问题12】隐藏选单时序时簿不要的菜单和工具栏。K/3单据查看和选单使用的是同一个序时簿,

在插件中用MenuBarInitialize添加的菜单和工具栏在选单时也显示出来。 ______ 9

【问题13】标体行高设置和值更新事件 ______________________________________________ 9 【问题14】事务处理 _____________________________________________________________ 10 【问题15】如何在新的BOS单据中通过代码逐行添加分录数据? ________________________ 10 【问题16】在单据体中有没有办法让下一条分录自动携带上一条分录的数据(只是部分字段)。

_______________________________________________________________________ 11

ii

客户化开发技术资料——K/3 BOS开发百问百答

【问题17】否有办法完成单据体中的行点击事件?现在有需要在点击BOS单据中单据体的某一

行时,在另一个表体中显示与该行有关的信息,请问各位有什么好的实现方法,特别是怎么获取点击事件和所点击的行数据信息。 _______________________________ 11

【问题18】多分录序时簿浏览,字段权限。 _________________________________________ 11 【问题19】怎么样可以用代码调出单据的序时薄窗口。 ________________________________ 11 【问题20】K/3 BOS SDK 二次开发组件(k3Billtransfer组件)嵌入K/3系统,数据库端按装后

(update ictransactiontype... 后),再在..../system32/ls_DV.dll,并注册,最后进入K/3,没有效果!是不是K3 V10.2不支持二次组件开发???还是不支持K/3 BOS SDK中的K3billtransfer组件? _______________________________________________ 13

【问题21】如何在单据插件代码中通过条件判断来启动多级审核. _______________________ 13 【问题22】在插件开发中,如何获得当前登陆的用户ID?比如administrator登陆,如何得到

ID?另外,如何得到选中多行单据时的集合?一个表体中,有职员编码和职员名称,想通过输入编码后,直接关联出名称来。名称这个字段用职员类型,还是文本?值更新事件好象不管用。 _____________________________________________________ 13

【问题23】在销售系统中增加了一张BOS开发的单据. 单据上也指定了相应的插件.(插件是依

据BOS 开发向导生成的. 插件的功能只是增加一个自定的菜单项).组件中也引用了: K3ClassEvents.dll,但在单据测试时,却总是提示错误: \单据接口无效\的错误. 请问BOS新开发的单据是不是不能调用自定义的插件? 如果有调用是不是要做其它处理? _______________________________________________________________________ 14

【问题24】Bos 开发的单据还能不能调用 k3billtransfer.dll 这个组件? BOS插件中如何取得

连接字符串? (以前 m_Billtransfer.Cnnstring ) 我想把连接字符串做为参数传递给其它语言开发的程序. ____________________________________________________ 14

【问题25】需要通过工具栏上的按钮,实现单据体分录的上移和下移功能,请问BOS插件的如

何实现? _______________________________________________________________ 14

【问题26】新增BOS 单据分录中有数量 及基本单位数量 字段, 基本单位数量关联字段为数量,

但输入完数量后,基本单位数量仍然为空. ___________________________________ 14

【问题27】我在做k3BillTransfer开发时需要取表体中的“批次”列是否可以录入,即该物料

是否批次管理,请问控件fpSpread中,怎么才能知道哪一个单元格可以录入或不能录入?或者可以取到该物料的内码也可以。EnteryCtl都有那些属性啊,我只知道一个fieldname,其他的比如内码等是什么?在单据二次开发参考组件没有描述,在哪有详细的说明? _____________________________________________________________ 15

【问题28】K/3 BOS单据、序时簿和工业单据、序时簿中分别如何获得当前用户的信息?(比如

ID) ___________________________________________________________________ 15

【问题29】通过工业单据插件怎么获得当前K/3的版本号?工业单据插件是否支持所有账套类

型的单据,不区分工业供应链、商业供应链? _______________________________ 15

【问题30】在工业单据的插件中如何得到单据的FInterID? (工业单据) _________________ 15 【问题31】在BOSV10.2中,填充新行数据可以用m_BillInterface.InsertNewRowAndFill方法实

iii

客户化开发技术资料——K/3 BOS开发百问百答

现,但是在BOSV10.1中不知道用什么方法可以向单据体逐行插入数据?如果单据体中有物料、计量单位等查找类型字段,其赋值是否一样? _____________________ 15

【问题32】请问10.2的工业老单(非BOS),作k3BillTransfer插件的时候,是否可以在

BeforHeadLookUp事件中指定基础资料的过滤条件,如:

m_BillTransfer.HeadCtl(CtlIndex).Filter = \。我发现这段代码所指定的过滤条件不起作用。 _______________________________________________________________ 16

【问题33】 我们在使用K/3 BOS+VB6为新港湾开发一个完全个性的项目管理系统,是使用一

套帐的方式实现的,帐套理面将会创建几十或更多的工程项目,这就涉及到基础资料、项目计划、项目施工记录、项目有关单据等诸多信息要跟具体的项目邦定起来,用户一旦选定当前项目后,所有的数据维护、查询及报表都只针对当前项目操作,现在录入时跟项目邦定的问题我已解决,可查询(主要是序时薄,包括基础资料序时薄与业务单据序时薄如何与当前选定项目邦定,即序时薄只显示属于当前选定项目的数据)的问题还没解决,这就是我提出问题的背景,该问题若解决不了,整个使用K/3 BOS进行开发的解决方案将行不通,面临几十万元退款损失的风险,故十分重要。需求如下(举个例): 如用BOS定义了一个名为\项目任务\的基础资料,包含工程项目、任务代码、任务名称等字段,如下所示: 工程项目 任务代码 任务名称

------------------------------- 00000001 01 进场准备 00000001 02 进场 00000002 01 进场准备 00000002 02 进场 ........ .. ........ 写插件时,请问想要达到进入该基础资料序时薄时只显示某一个工程项目的相关基础资料记录该如何编码 (在那个事件入口处理、怎样处理),同样,如果是业务单据序时薄,又该如何设置过滤条件(在那个事 件入口处理,怎样处理),本人看过开发手册,好象没有合适的事件入口,更没有该方面的例子。 _______________________________________________________________ 17

【问题34】怎么找每个字段的索引 _________________________________________________ 17 【问题35】BOS 开发一张新的单据. 在选单返回时, 希望能在表体自动添加一行分录. _____ 18 事件测试代码如下: 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(\也有增加一条, 但返回后,新添加的分录并未带到目标单据上? 请问我还要修改哪些地方? ____________________________ 18

【问题18】BOS单据插件里的BusinessCheck事件有何用途?写在BusinessCheck里面的代码也

不执行,不知道这个事件到底是什么时候触发的。在AfterBusinessCheck事件中写的代码在打了10.2SP1之后就不执行了,我把代码放到BusinessCheck事件中也不执行,不知道什么原因,但AfterUnBusinessCheck中的代码却执行了。我只做了一级审核。AfterBusinessCheck事件和BusinessCheck事件触发时点的问题,以查看状态打开单据进行审核时,这两个事件不触发,只有在修改状态打开单据并进行审核,这两个事件才会被触发。之前没有打SP1的时候是没有这个问题的。因为强制审核人必须要打开单据检查后再进行审核,所以我在该单据的序时簿中把审核菜单去掉了,只能打开单据审核。不知道有没有人遇到这个问题。 _________________________________ 19

iv

联系客服:779662525#qq.com(#替换为@)