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

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

【摘要】无物料编码时,下推报错

版本:K310.2SP2

问题描述:项目为一个数据接口:接口文件导入生成BOS单据;但接口文件中的物料和k/3中物料不能一一对应;现在考虑在BOS单据中不录入物料,在老单中指定物料,单据保存时把老单中物料反写到BOS单据中。出现的问题:K/3Bos 新增单据下推到老单关联时,关联关系有物料和计量单位字段。但客户有时BOS新单上的物料无法确定,即不录入物料编码,下推报错!

【解答】

你先在BOS单据将物料转换好之后再下推到老单中,无法确定的物料可以使用一种通用的物料来代替,下推到老单后由用户修改。但这种处理不好。

【摘要】合同字段带到付款单

版本:K310.2SP2

问题描述:有个问题请教大家.要求在要把合同中的FRECEIVEAMOUNTFOR,FRECEIVEAMOUNT字段带到付款单中,怎样实现?

【解答】

合同和付款单都是BOS单据,直接进入流程设计里修改,据在应付模块里。

【摘要】下推发货通知单的时候,所有自定义字段中的文本字段在发货通知单都变成了0? 版本:K310.2SP1+Sp2+10.3

问题描述:新做的BOS单据(配置单)下推发货通知单的时候,所有自定义的文本字段在发货通知单都变成了0。

【解答】

这可能是系统的Bug,可以用update ICSelbills set faction='' where faction='0'清除错误的元数据即可解决。

【摘要】下标越界

版本:K310.2Sp2

问题描述:在10.2sp2下BOS做了一张单据下退生成销售报价单出现下标越界错误。

【解答】

这是系统的一个bug,可执行以下脚本来解决:

delete ICTemplate where fid='g01' and ffieldname in ('FSelTranType','FSelBillNo')

INSERT INTO ICTemplate (FID, FCtlIndex, FTabIndex, FCaption, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FLeft, FTop, FWidth, FHeight, FEnable, FPrint, FFontName, FFontSize, FSelBill, FMustInput, FFilter, FRelationID, FAction, FLockA, FROB, FDefaultCtl, FVisForBillType, FVBACtlType, FRelateOutTbl, FSysMustInputItem, FCaption_CHT, FCaption_EN, FInEntryForSPrint, FRMustInput, FIsVisibleForList, FCanEditedAllTime, FAllowCopy, FDefaultValue, FMaxValue, FMinValue, FFormat)

第3页

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

VALUES ('G01',35,15,'选单号:',5,-1,0,0,0,'FSelBillNo',0,0,2250,330,32,1,'宋体

',9,0,0,'','','',1,3,1,31,'Kdtext',1,0,'選單號:','Number of document selection',0,0,1,1,0,'','','',' ') GO

INSERT INTO ICTemplate (FID, FCtlIndex, FTabIndex, FCaption, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FLeft, FTop, FWidth, FHeight, FEnable, FPrint, FFontName, FFontSize, FSelBill, FMustInput, FFilter, FRelationID, FAction, FLockA, FROB, FDefaultCtl, FVisForBillType, FVBACtlType, FRelateOutTbl, FSysMustInputItem, FCaption_CHT, FCaption_EN, FInEntryForSPrint, FRMustInput, FIsVisibleForList, FCanEditedAllTime, FAllowCopy, FDefaultValue, FMaxValue, FMinValue, FFormat)

VALUES ('G01',34,14,'源单类型:',2,-35,0,3,1,'FSelTranType',0,0,2250,330,32,1,'宋体',9,0,0,'FID=84','FSelTranType','RESET,FSelBillNo,FRemark;',1,3,1,31,'Kdtext',0,0,'源單類型:','Src doc type:',0,0,1,1,0,'','','',' ') GO

【摘要】10.2sp1 钩稽后设过滤条件不起作用

版本:K310.2SP1+0704

问题描述:我的环境时10.2sp1+PT0704 ,源单和目标单都是bos单据.设置关系为钩稽 ,过滤条件处打勾后, 选单时选的是所有单据,而不是根据过滤条件过滤后的单据 即 钩稽后设过滤条件不起作用。

【解答】

经测试,的确存在如下问题,可以升级10.2sp2或10.3,或者写如下插件来实现过滤功能

Private Sub m_BillInterface_BeforeSelBills(ByVal lSelBillType As Long, ByVal oDataSrv As Object, ByVal dctLink As Object, sFilter As String, dctParam As Object) if len(sFilter)>0 then

sFilter = sFilter & \ else

sFilter=\ end if

End Sub

其中FBase3是源单表头的部门字段,FBase是目标单表头的部门字段。

【摘要】关联复制

版本:K310.2SP2+10.3+10.2SP1

问题描述:在BOS中的“关联复制”与“复制”有什么区别?在设计中应该怎样运用?

【解答】

关联复制与复制的区别在于,关联复制会在目标单保存单据之间的关联关系,这样选单完成后可以通过上下查查询单据之间的关系,而复制则不会。

第4页

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

【摘要】老单下推新单过滤条件的设定

版本:K310.2SP2+10.3+10.2SP1

问题描述:在10.2 Sp1的BOS选单时,可以设定ICClassLink中的FCondition实现原单过滤,但是升级成10.3后就报错,具体错误不说了,经过测试发现选单后(就是弹出原单选择界面后),会根据ICClassLink.FCondition的值进行了再次判断。这样就会产生一个表别名体系问题:ICClassLink.FCondition中表示的原单叙事簿的别名体系。选单后返回再次检测时使用的是目标单据别名体系。但是这两个别名体系肯定会产生冲突的。请问如何解决。就算我把目标单据的别名体系与原单的别名体系改成一致,这样做是可以的。但是如果多选单就不能使用这个方法!

【解答】

这是老单序时簿在新单和选单返回时解析方案不一致造成的。解决方案如下: 利用老单固定的别名v1表头,u1表体,采用子查询的方式规避。 范例代码如下:

update icclasslink set fcondition =' u1.FItemid in (select fitemid from t_icitem where fnumber like ''01''%)' where fdestclasstypeid=300000000 and fsourclasstypeid=-81

【摘要】在老单单据中选取新单如何选取多张单据

版本:K310.2SP2+SP1

问题描述:新单下推(钩稽)老单时,在新单序时簿里可以选中多张单据下推生成老单,但在老单单据中选取新单是不能选取多张单据,怎样解决?

【解答】

在ICClassLink.FRemark中加上“”后就能选取多张单据。

【摘要】BOS单据下推到外购入库单时无法选择红字单据

版本:K310.2SP1+0704 问题描述:为什么在BOS单据下推到外购入库单时无法选择红字单据,只能是蓝字单据呢?BOS单据下推生成老单的时候,怎样把BOS单据的单据号显示在老单上呢?

【解答】

1、 BOS单据下推到老单没有处理红兰字单据,默认就是蓝字单据,目前下推没有处理红字单据。 2、 BOS单据下推生成老单的时候,使用钩稽就可以把BOS单据的单据号显示在老单上。

【摘要】如何用BOS单据体字段推成目的单据(老单)的单据头字段

版本:K310.2SP2+SP1+10.3

问题描述:开发过程中需要从一张BOS单据下推生成一张K/3老单据,其中要从源单据的一个单据体字段推成目的单据的单据头字段,在你拷贝给我们的文档资料中明确说明不能由单据体推成单据头,所以只能通过插件开发来实现。但是在插件开发中我们发现不能对目的单据即K/3老单据进行定位,所以不知道这个功能能否通过插件开发来实现,如果可以,怎么实现?

第5页

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

【解答】

在BOS单据中增加一个隐藏的字段,单据保存时用插件代码自动把单据体要下推的字段赋值到单据头这个字段中,然后再定义单据头下推到单据头,这样就不用在老单据中定义插件了。

五、报表篇

【摘要】交叉分析报表

版本:K310.2SP1

问题描述:请问BOS定义的单据怎样才能在交叉分析报表设计中看得到?再有怎样才能使用视图做一张虚拟的单据?这样做有很多好处,可以利用现在的视图,做序时簿,也可以用来做交叉分析报表。

【解答】

1、BOS定义的单据在V10.2中可以直接定义交叉分析报表,但在V10.2SP1中不能直接看到,需要打补丁PT001541,V10.2SP2已处理该问题。

2、使用视图做单据可以参考BOS里面的单据:设备档案(1002051)的制作方式,有什么疑问再交流。

【摘要】直接SQL报表

版本:K310.2SP2+10.3+10.2SP1

问题描述:直接SQL报表在SQL Server中运行通过,替换成[关键字]后无法保存。

【解答】

直接SQL报表保存前会通过常量替换[关键字]的方式来进行测试,BOS保存前抛出的错误实际上是SQL Server抛出的错误。通过SQL跟踪器可以很清楚的看到最终错误SQL。

六、部署发布篇

【摘要】发布功能的名称如何更改

版本:K310.2SP1+0704

问题描述:BOS 开发的单据, 功能已经发布到目标账套中. 现发现发布功能(SubSystem 子系统)的名称有误, 请问 发布功能的名称如何更改,才能使得所有客户端的名称同时更正过来? 我有修改过 :t_DataFlowSubSystem 和 t_suerSubSystem 两个表, 但都只能在本机上或当前用户有效.

【解答】

1、 客户端临时目录下的DataFlowTemp目录清空。 2、 将数据表中的t_DataFlowTimeStamp表清空。

第6页