k3 Bos开发百问百答

K/3 BOS开发百问百答

(版本:V1.1)

K3产品市场部

一、基础资料篇

【摘要】bos基础资料的显示问题

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

问题描述:我们的bos做出来的基础资料为什么不能做成象核算项目一样,点中上级组就能显示相面所有基础资料,而不是现在点到最后一个上级组才能显示明细。

解答

这是新需求,以后版本会解决。

【摘要】单据自定义无法看到bos定义的基础资料

版本:K310.2SP2

问题描述:在单据自定义中增加自定义字段时,需要选择用bos定义的基础资料该如何设置。我在单据自定义的高级页签上选择基础资料下拉框中无法看到bos定义的基础资料;我跟踪Sql,在ICChatBillTitle 中有自定义字段属性的相关设置,如FTableName、FLookUpClassID等字段。我把记录改成BOS基础资料对应的信息,但是无法生效。请高手指点。

解答

在10.2里工业单据自定义工具不能使用BOS单据的基础资料,建议使用核算项目来定义基础资料,即可在工业单据中使用,也可在BOS单据中使用。

【摘要】在调出基础资料序时簿时,过滤出我需要的基础资料

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

问题描述:能否对BOS基础资料做过滤,即:在调出基础资料序时簿时,过滤出我需要的基础资料。

解答

1、在ICClasstypeentry的FFilter字段增加过虑条件;

2、在ICClassTableInfo的FFilter中填写条件。

下例能完成只显示“01”组的物料,FFilter的值应是“x2.FNumber like '01.%'”

SELECT  t1.FItemID  FROM t_Item t1  with(index (uk_Item2)) LEFT JOIN t_ICItem x2 ON t1.FItemID = x2.FItemID WHERE FItemClassID = 4 AND t1.FDetail=1  AND (x2.FNumber like '01.%') AND t1.FDeleteD=0  ORDER BY t1.FNumber

【摘要】bos定义的基础资料能否做到按名称而不是按代码进行自动匹配

版本:K310.2SP2+SP1

问题描述:是否可以在相关的基础资料的对象中增加通过名字查询功能。目前的基础资料(部门,人员,物料等)是通过F7查询或者输入代码,但是实际业务中很多情况是输入名字,很多客户已经要求使用名字查询,特别是涉及职员、部门等基础资料,不知道BOS能不能先行一步,改掉k/3的这个习惯?即直接在那个文本框中输入名称,然后自动匹配,就像在文本框中输入代码一样,能够自动找到相应的基础资料。

解答

  1. 具体功能计划10.3实现。
  2. 另外,现在BOS支持汉字的模糊查询,按F8(F9)即可。

二、业务单据篇

【摘要】是否支持多插件和数据授权

版本:K310.1

问题描述:客户使用应付款管理系统,需要将合同资料、其他应付单、收款单等单据按部门进行数据授权,是否需要申请源代码,如果使用BOS插件能否解决数据授权问题,另外Bos是否支持多插件,谢谢!

解答

1、10.1下不支持多插件;

2、由于不支持多插件,必须要申请插件的源代码。

【摘要】K3BOS单据(新)中的数量字段怎样才能控制到两个小数

版本:K310.2SP1+SP2+10.3

问题描述:最近在用K3BOS作一个项目,用K3BOS设计的单据中的数量字段小数位默认是10位,请问怎样才能控制到两个小数?是用插件来控制的吗?

解答

通过以下方式增加字段时:物料->计量单位->数量,数量将按照物料定义的精度来处理,否则缺省按照十位处理,如果需要定义字段为某个固定的精度,可以使用小数字段,通过该字段的小数位属性来控制。

【摘要】单据上显示各级审核人和审核日期

版本:K310.2SP2

问题描述:多级审核栏目客户不希望分成第二个Label,而是想在单据上有每级审核人和日期显示。

解答

如果用系统的多级审核流程就会有多级审核的业签。可以在单据上增加多几个审核人、审核日期,在单据插件的AfterMultiCheck 事件中反写单据上的审核人、审核日期。

【摘要】多层的BOS单据,能否将人员权限按层划分

版本:K310.2SP1后各版本

问题描述:某直销单据分为采购和销售两个页,采购内勤组的成员只能看到采购页而不能看到销售页,而销售内勤组的成员只能看到销售页而不能看到采购页?。

解答

Bos单据不能按层进行授权,可以通过数据授权和字段授权的方式变通实现此类需求。

【摘要】自动启动审核 和自动选单

版本:K310.2SP1

问题描述:客户希望在打开一个新单据的同时,自动弹出选单的界面,显示要选择的单据。.因为客户使用的10.2 SP1 所以希望在 单据保存后,自动启动审核。希望总部提供 在插件中调用“选单”和“启动审核”的BOS的内部处理事件。

【解答】

1、   自动启动审核:

在AfterSave事件中使用以下代码

Dim bStatus As Boolean

bStatus = m_BillInterface.MultiCheckMgr.MultiCheckBill(m_BillInterface.Data("FID"))

2、   选单调用:

BOS单据

m_BillInterface.BillCtl.DoSelBill lClassTypeID '(原单的ClassTypeID) 工业单据

m_BillInterface.BillCtl.DoSelOldBill lClassTypeID '(原单的ClassTypeID)

【摘要】触发值更新事件

版本:K310.2SP1+0704

问题描述:我在BOS的表体字段数量中设置了值更新事件。在插键中自定义一个菜单,点击菜单后,更改表体中数量的值,但没有触发字段数量所设置的值更新事件。更改表体中数量是用m_BillInterface.SetFieldValue "FAuxQty", 500, 1方法更新的。同时发现更新数量,合计值没有被改变。请问:用什么方法更新表体数据能触发字段中设置的值更新事件,及其它值加载事件?同时可以更新合计值?

【解答】

目前在插件中没有处理事件的方法,可用插件更新合计值。

【摘要】只能删除和修改本人制作的单据。

版本:K310.2SP1

问题描述:如果实现只能删除和修改本人制作的单据?

【解答】

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

Dim lBillerID As Long

Dim strSQL As String

 Select Case BOSTool.ToolName

 Case "mnuEditDelete", "mnuEditModify"

       strSQL = "Select FBiller(当前单据制单人) From t_Sales(当前单据主表名) Where FID(当前单据主键子段)=" & m_ListInterface.GetCurrentSelRowInfo("FID")

        lBillerID = m_ListInterface.K3Lib.GetData(strSQL)(0)

        If m_ListInterface.K3Lib.User.UserID <> lBillerID Then

             MsgBox "只能删除和修改本人的单据", vbExclamation, "提示"

              Cancel = True

       End If

Case Else

End Select

End Sub

【摘要】插件发送消息打开单据

版本:K310.2SP1

问题描述:能否在插件里用sendmessage方法发送消息来打开相应的单据?

解答

sendmessage发送的消息不能打开对应的单据。

【摘要】获取Bos单据单据体已录信息的条数

版本:K310.2SP1

问题描述:我在写插件时,想得到单据体的已录信息的条数,用什么语句得到呢?

解答

单据体的已录的条数用下面的方法可得到。

m_BillInterface.Data("Page2").UBound

注意:最后一条可能是空记录,要判断(if 分录关键子段或必填字段<>"" then .....)。

【摘要】插件中获取单据上控件的位置、尺寸信息

版本:K310.2SP1

问题描述:请问在BOS插件开发中,可否用代码获取BOS单据上某个控件的位置、尺寸信息?以及能否用代码动态修改它们的位置?

解答

在K/3BOS插件中获取控件的位置的方法:

m_BillInterface.BillHeads(1).BOSFields("FDate").FieldTop,其中“FDate”是控件的名称,也可以用它来改变控件的位置。

【摘要】关联自定义核算项目

版本:K310.2SP2

问题描述:请问在新建的BOS单或原有的BOS单上如何关联自定义的核算项目基础资料?

解答

修改ICClassTableInfo中FLookupClassID,FSRCFieldName,FSRCTableName,FDSPFieldName,FFNDFieldName。

【摘要】是否允许插件自定义查询条件?

版本:K310.2SP2

问题描述:需要在序事簿查询过程,根据人员角色不同,自动将所能看到的数据进行过滤,请问此类问题怎么实现,BOS序事簿是否允许插件自定义查询条件?

解答

可以通过在序事簿插件的show中直接修改ListFilterString属性的值来自定义查询条件.

示例如下:

With m_listinterface

     If len(.listfilterstring)>0 then

       .listfilterstring=.listfilterstring & “ and FDeptID=984”

     Else

       .listfilterstring=” FDeptID=984”

     End if

End with

【摘要】填充分录行?

版本:K310.2SP2

问题描述:一张单据有几百条分录, 每条分录数据都是通过插件填入的.但是如果使用 setFieldValue 方法一个字段一个字段填的话, 速度非常慢. 是不是有更好的方法填充行数据?

解答

可以试试用insertnewrowandfill方法插入一新行。

示例如下:

'批量插入行数据

 Dim i As Long

 For i = 1 To 10

     m_BillInterface.InsertNewRowAndFill 2, i, "FBase", "01.001", "FPrice", "100.001", "FAmount", "50000"

 Next

 需要注意的是查找类型的字段只要给出编码即可,基础资料属性(如物料名称等)不需要赋值。

【摘要】在Bos单据按F7查询供应商信息,按F9查询采购价格管理信息。

版本:K310.2SP1+PT0704

问题描述:在新增采购申请单时,在分录中的供应商按F7能选择供应商信息,按F9能选到采购价格管理信息,我现在想在新单中也添加一个供应商,也实现上述功能.该什么实现?

解答

使用MenuBarClick事件实现F7

1、   BeginEdit事件

If  dct("FKey") = "要处理字段FKey“ Then

m_BillInterface.MenuBar.BOSTools("mnuDataLookUp").Enabled = True

End If

2、   MenuBarClick

If  BOSTool.ToolName = "mnuDataLookUp" Then

m_BillInterface.GetActiveField dct, col, row

If  dct("FKey") = "FBillNo_BS" Then

m_BillInterface.BillCtl.DoSelBill 200000104 '(原单的ClassTypeID)

End If

End If

3、   采购价格管理的调用接口,结合上述所说使用:

Dim obj As Object

Set obj = CreateObject("k3Suplly.SupplyFace")

With  obj

       .CallByBill = True

       .SelICItemID = '当前物料行内码

       .CategoryBySupply = false

       .SelSupID = '供应商内码

       .PriceType = 1

       .Show 1

End With

Set obj = Nothing

【摘要】有没有可以取到单据编号的组件呢?

版本:K310.2SP2

问题描述:客户要导入一张组装单,组装单是一张BOS单据。有没有一个专门得到单据编号的组件呢?有的话,接口是什么?

解答

Set obj = CreateObject("K3MClass.ClassInfo")

GetThisBillNo = obj.GetBillNo(sDsn, ClassID, sKey, bGetDeleteNo, bSave)

接口描述:

'/*描述:得到一种业务类型的编号

'/*参数:

'/*@ bGetDeleteNo 是否获取空号,这种单据设置了删除的空号被保存才有效,已经无效,只是保持兼容调用接口

'/*@ bSave 是否需要修改新的最大单据号

'/*@ ClassID 类型

'/*@ sDsn 连接串信息

'/*@ sKey 需要处理的关键字。

【摘要】是否可以直接在数据库表中直接修改Bos单据中的字段类型?

版本:K310.2SP1+Sp2+10.3

问题描述:现在在Bos单据中加入一备注字段,并保存了数据,可否将备注字段改为文本字段,保证数据不丢失?

解答

可以修改表Icclasstableinfo的FCtlType字段,示例如下。

update icclasstableinfo set fcaption_chs='文本1',fcaption_cht='文本1',fcaption_En='Text1',FKey='FText1',FFieldName='FText1',FCtlType=1 where fid=8438

update icclasstype set fid=fid ----单据的时间梭

注意在后面更新icclasstableinfo表来修改单据,一定要更新一下icclasstype,否则前面的更新在Bos设计环境反映不出来更新。

【摘要】锁定单据字段

版本:K310.2SP1+Sp2+10.3

问题描述:如何在插件中锁定单据字段。

解答

可以用lockcell方法锁定,如锁定单据头币别: Set dcttemp = m_BillInterface.GetFieldInfoByKey("FCurrencyID ", "", 0) If Not dcttemp Is Nothing Then m_BillInterface.BillCtl.LockCell dcttemp, -1, True

第二个参数为分录行号,当为-1时锁定所有行。

注意:设计状态没有设计为"锁定"的字段,才可以在运行状态锁定或解锁。

【摘要】删除符合条件的单据

版本:K310.2SP1+Sp2+10.3

问题描述:符合一定条件的单据不允许删除。是否有删除前的事件可以调用,或者其他方法?

解答

可以在中间层插件的Beforedel事件中写代码实现。

【摘要】动态过滤基础资料

版本:K310.2SP1+Sp2+10.3

问题描述:用K/3 BOS新建的单据上的添加基础资料时,能否给定某中过滤条件?比如:我选择某个物料资料,我要求只显示指定的某个部门的物料资料,其它的物料不显示,不清楚这种情况能否实现,还是可以通过其它方法来实现该功能。

解答

     可以在单据的Change事件中写如下代码来实现动态过滤条件。

 If dct(“FKey”)=”FDeptID” then

m_BillInterface.DataSrv.TableInfo(m_BillInterface.TableInfo("Map")("FItemID"))("FFilter") = " x2.FNumber =’”  &  m_BillInterface.getfieldvalue(“FDeptID” ) & “’”

 End if

注意:上面的代码不支持调试,如果调试,发现赋值为空,没有将过滤条件赋值成功,但编译后运行没有问题。

【摘要】金额小写转化为大写。

版本:K310.2SP2

问题描述:K3Bos有没有将金额转化为大写的功能。

解答

K/3 BOS现在还没有集成金额小写转化为大写的功能。

【摘要】单据保存出错

版本:K310.2SP2

问题描述:新增BOS单据,单据的表设为poRequest,  单据体的表设为 poRequestEntry,然后保存,出现如下提示错误信息:”索引’IX_PoRequest_FBillNo’依赖于列’FBillNo’”,请问这是怎么回事?能删除此索引吗?

解答

这是10.2的一个设计不合理的地方,10.3没有这个问题了。可以先删除,设计成功后加上就好了。

【摘要】表体当中的当前记录号,不能在套打中打印。

版本:K310.2SP1+PT0704

问题描述:表体当中的当前记录号,不能在套打中打印。

解答

当前行号打印的补丁PT003411已经解决。

【摘要】标准序时簿过滤条件对话框(和K3老单据一样)

版本:K310.2SP1

问题描述:请问BOS单据的序时簿过滤条件对话框中是否可以像标准K3单据那样,有默认的“本期”,“红蓝字”等过滤条件?

解答

可以在数据库里写执行如下代码实现:(下面例子是添加审核的过滤条件)

Update icclasstableinfo set flock=-1,fconditionext=1000000 where fclasstypeid=300000000 and fkey='Fchecker'

说明:fconditionext=1000000对应的内容为ICClassCondition表中FID=1000000内容,察看该条记录的FDataSource_CHS简体中文信息为:”全部;None~已审核;isnull(@Field,0)>0~未审核;isnull(@Field,0)<=0”。

全部:对应得解析条件为None,说明该过滤条件不起作用

已审核:对应得isnull(@Field,0)>0,通过判断Fchecker字段的值是否大于0,来判断其是否审核;

未审核:对应得isnull(@Field,0)<=0,通过判断Fchecker字段的值是否小于等于0,来判断其未审核。

P.S:如果现有的扩展过滤条件不满足条件需要增加,请不要紧接着系统定义的Fid开始扩展,以免被系统升级时清除,可像单据类型一样从200000000开始。

【摘要】K3Bos英文版Bos单据表体行号为中文如何解决

版本:K310.2SP1

问题描述:我们现在在进行英文界面BOS单据的开发,添加的表体上有“行号”两个汉字,不知道是否可以隐藏或者用英文单词进行替换?

解答

产品的Bug,后续版本会处理。

【摘要】如何再次添加新插件?

版本:K310.2及以后版本

问题描述:我想在投料变更单的菜单上加入一个菜单项,需要插入一个插件,但投料变更单上已经有一个插件了,我想了解一下怎样才可以再插入一个插件呢?

解答

点插件管理中的按钮,可以通过浏览来选择自定义插件,并选择多个插件对象,BOS允许多个插件同时存在。

【摘要】下拉框里不能录入半角逗号

版本:K310.2SP1

问题描述:在BOS单据中添加了一个下拉框控件,使用手工录入值列表,如果录入的值中包含半角“,”,则点击确定的时候,会报错“无效的过程调用或参数”,请问如何才能录入逗号且不会报错?谢谢

解答

产品的Bug,和输入法有关。

【摘要】单据分录数达到3000条,单据保存会不会出错?

版本:K310.2SP2

问题描述:因为业务需要,可能一张单据的分录数达到2000-3000条,这样的BOS开发的单据,保存时是否有问题?参考:10.0的设备管理中,录入50-60条分录,保存时就会有问题出现。

解答

你提到那个问题是10.0的bug,目前K3BOS单据最大行数设定是2000行。如确实有需求可放开相应限制。但单据体字段过多,性能会受到一些影响,建议最好不要超过这个限制。

【摘要】Bos单据是否支持上传下载功能?

版本:K310.2SP2

问题描述:BOS开发的单据是否支持K3分销系统的上传下载功能?

解答

Bos单据不支持k3分销系统的上传下载功能。

【摘要】文本字段录入完毕回车不跳转

版本:K310.2SP1+SP2

问题描述:在Bos单据的表体中加入一备注字段,后再加入一文本字段,发现备注字段敲回车不跳转,后面的文本字段输入完毕回车也不跳转。

解答

备注型字段因为支持回车的录入,所以不支持回车跳转。经测试发现,文本字段放在备注字段后面,则文本字段录入敲回车,也清空和备注字段的现象一样,这可能是sp1和sp2的Bug,可以将备注字段放在行的第后一列,则就没有问题。

【摘要】选单数据显示?

版本:K310.2SP1

问题描述:单据界面有多个层,选单完成后,所有层的数据都被显示出,只有手工切换层才能刷新?

解答

这应该是个bug,详细描述操作(最好提供帐套)后,提条程序错误的提单把。你试试补丁PT002046,这个问题sp2已经解决了的。

【摘要】不能实现记录选择。

版本:K310.2SP1+PT0704

问题描述:新做的BOS单据(配置单)在与源单(销售订单)进行选单的时候,出现在销售定单中选择某一条记录或者某几条记录的时候,会将销售订单所有的记录都选过来,不能实现记录选择。

解答

应该是你沟选了[选单时关联整单]选项导致的,不选上就按分录返回。

【摘要】如何删除空行。

版本:K310.2SP2

问题描述:客户在输入信息回车后,系统光标会自动跳到下一行,即新增一行保存时,系统提示“XXX”字段不运行为空。需要手工删除一行,比较麻烦。我想通过插件,在点击保存时,判断:如果有空行,就删除该行;但不知道删除单据体一行的插件语句如何调用?

解答

可以不写代码,设置该单据体的[关键字段],保存前将清除最后一行空白行。

【摘要】没有找到符合条件的记录。

版本:K310.2SP2

问题描述:我在采购请购单与采购订单建立一中间的流转单,发现中间单无法正常的下推到采购订单,出现如下错误,"没有找到符合条件的记录".

解答

这是sp2的一个Bug,请下载补丁PT003011。

【摘要】BOS套打

版本:K310.2SP2

问题描述:在表头所有项目打印出后,为防止更改,在每个项目后加入&quot;#&quot;,且该&quot;#&quot;,尾随打印内容体现,目前在套打模板中定义后,&quot;#&quot;显示按固定位置,如果该项值很少的话,项目值和&quot;#&quot;之间有很大距离,无法实现管理要求,这个问题怎么解决??

解答

特殊需求,已制作补丁包PT003682。

【摘要】数量精度和单价精度

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

问题描述:在单据体中加上“数量”字段,用decimal的后面的小数点位太多位了;用integer的“数量”,怎么不可以指定到“单位”上去,请问大家有什么好办法吗;

解答

数量和单价的精度是跟着物料的[数量精度]和[价格精度]走的,如果客户只存在整数物料精度,可以通过[基础资料]-[公共资料]-[核算项目管理]-[004-物料修改]设置物料精度的缺省值为0。

【摘要】计算公式如何定义?

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

问题描述:在BOS单据设计的时候,进行单据体内单元格计算时,如设数量、单价、金额,正常应该在“金额”栏设置公式等于“数量”乘于“单价”,但这样设“金额”栏无法计算。

解答

如果要实现在修改数量列和单价列更新金额,须在“数量”列和“单价”列的[值更新事件]分别增加一条计算公式:金额=数量*单价。

【摘要】批次过滤

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

问题描述:关于批次号分别按输入的物料、仓库、仓位的过滤批次的范例代码。

解答

环境说明:

物料:字段名称FItemID

仓库:字段名称FDCStockID

仓位:字段名称FDCSPID

批次号:字段名称FBatchNo

1、 录入仓库后,依据仓库的仓库组过滤仓位。

update ICClasstableinfo set FFilter='FSPGroupID = (SELECT FSPGroupID FROM t_Stock WHERE FItemID = GetFldValue(FDCStockID,1))' where FKey='FDCSPID' and FClassTypeID=300000000

2、 根据输入的物料、仓库、仓位过滤过率批次号时。

update ICClassTableinfo set FFilter='(FItemID=GetFldValue(FItemID,1) and FStockID=GetFldValue(FDCStockID,1) and FStockplaceID=GetFldValue(FDCSPID,1))' where FKey='FBatchNo' and FClassTypeID=300000000

3、 更新BOS单据缓存

UPdate ICClasstype set fid=fid

【摘要】应收应付系统合同是否能超额执行

版本:K310.1

问题描述:应收应付系统合同是否能超额执行?

解答

10.1应收应付的合同的反写由应收应付自行控制,且并为提供相应参数控制。10.2应收应付合同该由BOS实现,且提供了[合同是否允许超额执行]的系统参数选项。

【摘要】基础资料录入代码时不马上显示相关的列表

版本:K310.2SP2+K310.3

问题描述:BOS单据引用基础资料时,能否有设置,使在录入代码时不马上显示相关的列表,而是在回车之后才判断是否存在代码,因为客户的某个基础资料太大了,输入一个字母要等N长时间才能够反映。

解答

可以在单据录入界面选项中选择禁止下拉列表自动显示。

【摘要】在插件中以新增、修改和查看方式打开另一单据

版本:K/3BOS所有版本

问题描述:在插件中以新增、修改和查看方式打开另一单据

解答

'********************************************

'功能:显示BOS单据,显示的方式为新增、修改和浏览

'参数:lClassTypeID—显示BOS单据的ID

'

'********************************************

Private Sub ShowBill(ByVal lClassTypeID As Long)

 Dim oDataSrv As Object

 Dim oBill As Object

 On Error GoTo err_ctr

Set oDataSrv = m_BillInterface.K3Lib.CreateK/3Object("K3ClassTpl.DataSrv")

oDataSrv.ClassTypeID = lClassTypeID

Set oBill = CreateObject("K3SingleClassBill.ClassInfoManager")

With oBill

   .DataSrv = oDataSrv

   .ISNetControl = True

   .ISCheckRight = True

   .Show

   '**********************

   'Show 参数类型

   '第一个参数 Optional ByVal lID As Long = 0 ;描述修改或查看的单据ID

   '第二个参数 Optional ByVal bShowGroup As Boolean = False ;如是基础资料时,是否显示分组

   '第三个参数 Optional ByVal BillStatus As Long = Enu_BillStatus_New ;显示方式 0—查看;1—新增;2—修改

   '第四个参数 Optional ByVal dctData As KFO.Dictionary '单据初始值

   '**********************

 End With

 Set oDataSrv = Nothing

 Set oBill = Nothing

Exit Sub

err_ctr:

Set oDataSrv = Nothing

 Set oBill = Nothing

End Sub

【摘要】显示BOS序时簿并返回选中的值

版本:K/3BOS所有版本

问题描述:请问在插件中怎样显示BOS序时簿并返回选中的值?

解答

'********************************************

'功能:显示BOS序时簿并返回选中的值

'参数:lClassTypeID—显示BOS单据的ID

'

'********************************************

Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object

Dim oDataSrv As Object

Dim objLookup As Object

On Error GoTo err_ctr

Set oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")

oDataSrv.ClassTypeID = lClassTypeID

If oDataSrv.showfilter Then

   Set objLookup = CreateObject("K3ClassLookUp.BillLookUp")

   objLookup.ClassTypeID = lClassTypeID

   Set objLookup.DataSrv = oDataSrv

  objLookup.Lookup

   Set ShowListByReturn = objLookup.VectReturn

End If

Set oDataSrv = Nothing

Set objLookup = Nothing

Exit Function

err_ctr:

Set oDataSrv = Nothing

Set objLookup = Nothing

End Function

【摘要】将当前单据转化为另一单据,并无界面保存数据

版本:K/3BOS所有版本

问题描述:将当前单据转化为另一单据,并无界面保存数据

解答

'********************************************

'功能:将当前单据转化为另一单据,并无界面保存数据

'参数:lClassTypeID—显示BOS单据的ID

'********************************************

Private Sub NoUISaveBill(ByVal lClassTypeID As Long)

Dim oDataSrv As Object

Dim oTableInfo As Object

Dim oBill As Object

Dim oData As Object

Dim oSrv As Object

Dim oPage2 As Object

Dim i As Long

On Error GoTo err_ctr

Set oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")

oDataSrv.ClassTypeID = lClassTypeID

Set oTableInfo = oDataSrv.TableInfo

Set oData = oDataSrv.GetEmptyBill

For i = 1 To m_BillInterface.Data("Page2").UBound - 1

    Set oPage2 = oData("Page2")(1).CloneAll

   oData("Page2").Add oPage2                  '添加到 dcData

    oData("Page2")(i + 1)("_-0001_FIndex2")("FFLD") = i + 1 '更改分录号

Next

For i = 1 To m_BillInterface.Data("Page2").UBound

    oData("Page2")(i)(oTableInfo("map")("FItemID"))("FFLD") = m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FFLD)

    oData("Page2")(i)(oTableInfo("map")("FItemID"))("FFND") = m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FFND)

    oData("Page2")(i)(oTableInfo("map")("FItemID"))("FDSP") = m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FDSP)

Next

    Set oSrv = CreateObject("K3MClass.BillUpdate")

   i = oSrv.Save(MMTS.PropsString, oDataSrv.ClassType, oDataSrv.ClassTypeEntry, oDataSrv.TableInfo, oData, oDataSrv.dctLink)

Set oDataSrv = Nothing

Set oBill = Nothing

Exit Sub

err_ctr:

    MsgBox Err.Description

Set oDataSrv = Nothing

Set oBill = Nothing

End Sub

【备注】

1、K/3 BOS保存方法Save的参数描述:

'Public Function Save(ByVal sDsn As String, _

'                     ByVal dctClassType As KFO.Dictionary, _

'                     ByVal vctClassTypeEntry As KFO.Vector, _

'                     ByVal dctTableinfo As KFO.Dictionary, _

'                     ByRef dctData As KFO.Dictionary, _

'                     ByVal dctLinks As KFO.Dictionary) As Long

'/********************************************************************/

'/*描述:单据保存

'/*参数:

'/*@ dctClassType KFO.Dictionary  单据整体信息模板

'/*@ dctData KFO.Dictionary 单据数据包

'/*@ dctLink KFO.Dictionary 选单关系模板,无选单为Nothing

'/*@ dctTableInfo KFO.Dictionary 单据字段模板信息

'/*@ sDsn String  K/3标准数据库连接串

'/*@ vctClassTypeEntry KFO.Vector 单据体模板信息

'/*备注:

'/********************************************************************/

2、使用此方法时插件要添加MMTS。

【摘要】隐藏选单时序时簿不需的菜单和工具栏

版本:K/3BOS所有版本

问题描述:隐藏选单时序时簿不需的菜单和工具栏

解答

在MenuBarInitialize事件中使用m_ListInterface.List.ShowMode判断(查看和选单)1—查看;2—选单。

语法:If m_ListInterface.List.ShowMode = 1 Then ……end.

例:在选单时隐藏“编辑”菜单和工具栏

 If m_ListInterface.List.ShowMode = 2 Then

Dim oTool   As K/3ClassEvents.BOSTool

    Dim oBand   As K/3ClassEvents.BOSBand

    '*************** 开始设置 BOS 原有菜单 ***************

    '获得 mnuEdit 菜单对象,并设置属性

    Set oBand = oMenuBar.BOSBands("menu")

    Set oTool = oBand.BOSTools("mnuEdit")

    With oTool

         .Visible = False

         .Enabled = False

    End With

End if

【摘要】在单据体中让下一条分录自动携带上一条分录的数据

版本:K/3 BOS所有版本

问题描述:如何在单据体中让下一条分录自动携带上一条分录的数据(只是部分字段)?

【解答】

示例代码:

'物料录入后,第二行的值自动默认第一行的值

If dct("FKey") = "FItemID" And row > 1 Then

    m_BillInterface.SetFieldValue "FBase_TH", m_BillInterface.GetFieldValue("FBase_TH", row - 1, Enu_ValueType_FFND), row '提货地点

end if

【摘要】在Bos插件中如何处理隐身的二次登录

版本:K310.2SP1

问题描述:在自定义的BOS单据上,通过插件作生成凭证的功能,但是在调用凭证的组件时,需要一个二次登录后才能使用相应的模块。请问:如何处理隐身的二次登录,或者其他的变通处理。

解答

1、     凭证组件的调用是不需要二次登录的,可能你是在VB调试状态下运行,编译后就没事了。

2、     请参考下面代码

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

Dim glvch As Object                         '中间层凭证对象

Dim mvch As KFO.Dictionary                  '待保存凭证头

Dim mvchentry As KFO.Vector                 '待保存凭证分录集

Dim entry As KFO.Dictionary                 '待保存凭证分录

Dim mvchdetail As KFO.Vector                '核算项目明细集

Dim detail As KFO.Dictionary                '核算项目明细

Dim i, iCount As Long

Dim vValue      As Variant

'TODO: 请在此处添加代码响应事件 MenuBarClick

Select Case BOSTool.ToolName

    Case "生成凭证"

       vValue = m_BillInterface.GetFieldValue("FUser1")

If Not (CStr(vValue) = "" Or CLng(vValue = 0)) Then

          MsgBox "当前合同已经生成凭证!", vbExclamation, "金蝶提示"

          Exit Sub

       End If

       '此处添加处理 生成凭证 菜单对象的 Click 事件

       Set mvch = New KFO.Dictionary

       mvch("FDate") = Now

       mvch("FGroup") = "金华泰项目"

       mvch("FReference") = m_BillInterface.GetFieldValue("FID")

       Set mvchentry = New KFO.Vector

       vValue = m_BillInterface.GetFieldValue("FInteger")              '合同金额

       '创建凭证分录

       Set entry = New KFO.Dictionary

       entry("FExplanation") = m_BillInterface.GetFieldValue("FNote")

       entry("FAccountID") = m_BillInterface.GetFieldValue("FBase")

       entry("FDC") = 1

       entry("FAmount") = vValue

       '数量&单价

       entry("FQuantity") = 0

        entry("FUnitPrice") = 0

        entry("FMeasureUnitID") = 0

        '创建核算项目明细

        Set mvchdetail = New KFO.Vector

        Set detail = New KFO.Dictionary

        detail("FItemClassNumber") = "002"

        detail("FItemNumber") = "02"

        mvchdetail.Add detail

        Set entry("_Details") = mvchdetail

        mvchentry.Add entry

        Set mvch("_Entries") = mvchentry

        Set entry = New KFO.Dictionary

        entry("FExplanation") = m_BillInterface.GetFieldValue("FNote")

        entry("FAccountID") = m_BillInterface.GetFieldValue("FBase1")

        entry("FDC") = 0

        entry("FAmount") = vValue

        '数量&单价

        entry("FQuantity") = 0

        entry("FUnitPrice") = 0

        entry("FMeasureUnitID") = 0

        '创建核算项目明细

        Set mvchdetail = New KFO.Vector

        Set detail = New KFO.Dictionary

        detail("FItemClassNumber") = "002"

        detail("FItemNumber") = "02"

        mvchdetail.Add detail

        Set entry("_Details") = mvchdetail

        mvchentry.Add entry

        Set mvch("_Entries") = mvchentry

        Dim s As String

        s = "ConnectString={Provider=SQLOLEDB.1;User ID=sa;Password=ahyj;Data Source=JAMES;Initial Catalog=xt_3};UserName=administrator;UserID=16394;DBMS Name=Microsoft SQL Server;DBMS Version=2000;SubID=GL;AcctType=gy;Setuptype=Industry;Language=chs;IP=192.168.1.92;MachineName=JAMES;UUID=800A878D-F574-4877-B79C-D88AB721ECA0"

        Set glvch = CreateObject("EBSGLVoucher.VoucherUpdate")

                                 glvch.Create s, mvchs = "Update t_BOS_ht set fUser1=" & m_BillInterface.K3Lib.User.UserID & " where fid=" & m_BillInterface.GetFieldValue("FID")

        m_BillInterface.K3Lib.UpdateData s

        m_BillInterface.RefreshBill

        MsgBox "凭证生成成功!", vbInformation, "金蝶提示"

    Case "变更"

  End Select

End Sub

【摘要】如何在插件中获取当前系统字符连接串?

版本:K310.2及以后版本

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

【解答】

1、  连接串获取方式:(注意不支持调试,调试的话可以用实际连接串代替)

Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessID" () As Long

'获取连接串

Public Function GetPropsString() As String

    Dim lProc As Long

    Dim spmMgr As Object

    lProc = GetCurrentProcessId

    Set spmMgr = CreateObject("PropsMgr.ShareProps")

GetPropsString = spmMgr.GetProperty(lProc, "PropsString")

End Function

2、 需要申请MMTS.bas的源代码,还需要申请ICKDListener的接口。另外,如果需要调试程序,就还需要申请KDMain的源代码。

【摘要】BOS单据插件里取分录的合计值

版本:10.2后所有版本

问题描述:工业单据自定义里面有个GetSumGridText方法取得分录某一列的合计值,现在BOS单据里面需要取某一列的合计,请问有什么方法可以调用。我注意到有个sum方法,但不知道该怎么用?里面带BRow和ERow两个参数,应该是起始行和结束行吧,但分录的行是可以改变的,这两个值怎么取得?

【解答】

Object.Sum (dct As Dictionary, [BRow As Long], [ERow As Long])

参数说明:

dct-字段的模板字典

BRow-合计开始行,可选参数,默认值是1

ERow-合计结束行,可选参数,默认值是最大行

举例(要求税额合计值):

Set dct = m_BillInterface.GetFieldInfoByKey("FTaxFor", "", 0)

dblTaxSum = m_BillInterface.Sum(dct)

【摘要】表体行的高度设置

版本:K310.2SP1+SP2+10.3

问题描述:表单的表体的行高的属性在哪里,我找不到,如果发布后到主控台里去调,表体的标题行会同比例变化,非常不美观。

【解答】

标体的行高目前不能调整。

【摘要】带有辅助属性的字段的值更新事件中调用辅助属性,计算公式运行有误

版本:K310.2SP1+SP2+10.3

问题描述:对于已携带辅助属性的字段再定义值更新事件,如果值更新事件里包含该辅助属性,计算公式无效。也就是值更新事件公式里调用的辅助属性是更新前的。

【解答】

在插件中使用更新后事件。

【摘要】事务处理

版本: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("Page2").Add dctRow.CloneAll

【摘要】BOS单据选单返回时自动在表体添加一行分录

版本:K310.2后所有版本

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

事件测试代码如下:

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

Dim CoDict As KFO.Dictionary

Set CoDict = dcData("Page2")(1).CloneAll //拷贝第一条分录数据 dcData("Page2").Add CoDict //添加到 dcData

dcData("Page2")(dcData("Page2").Count)("_-0001_FIndex2")("FFLD") = dcData("Page2").Count //更改分录号

'Stop

set CoDict=Nothing

End Sub

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

【解答】

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

你的代码有以下问题:

1、取分录号使用dcData("Page2")(dcData("Page2").UBound)("FEntryID");

2、Vect的最大值用UBound,而不是count;

3、字段的key值使用m_BillInterface.TableInfo("map")("FPrice"),'FPrice是字段名。

正确的代码是:

Dim CoDict As KFO.Dictionary

’dcData("Page2")(1)(m_BillInterface.TableInfo("map")("FPrice"))("FFLD") = 1000

Set CoDict = dcData("Page2")(1).CloneAll ''拷贝第一条分录数据

dcData("Page2").Add CoDict '添加到 dcData

dcData("Page2")(dcData("Page2").UBound)("FEntryID") = dcData("Page2").UBound - 1 '更改分录号

'Stop

Set CoDict = Nothing

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

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

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

【解答】

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

【摘要】K3Bos表体如何设置合计

版本:K310.2SP2

问题描述: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 做了五张单据,经测试如果在序时薄 将单据反审核, 再打开单据, 可以修改;如果在序时薄界面, 打开未审核的单据, 审核后, 再进行反审核操作, 单据可以修改;如果在序时薄界面,打开已经审核的单据, 将单据反审核,单据还是不能修改。

解答

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

在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 "Edit"

call m_LstInterface.LoadSelectedBill(IIf(CanEdit(vectSelect(1)("FInterID")), Enu_BillStatusExt_Modify, Enu_BillStatusExt_View))

        case else

   end select

End Sub

获得单据修改状态,BOS将根据设计时状态锁定/解锁相应字段。

【摘要】多级审核跳转

版本:K310.2SP1+PT0704

问题描述:对BOS单据设置多级审核流程,例如共有5级审核,想从3级审核依据某个条件跳转到结束,设置的跳转条件不起作用。跳转条件只在审核级次内起作用(如从3级跳转到5级可以,跳转到结束不行)

解答

请打补丁PT001721解决多级审核跳转问题。

【摘要】多级审核的操作

版本:所有版本

问题描述:Bos单据多级审核增加的“启动多级审核”具体完成什么功能?客户对原有的F4 、Shift+F4操作比较习惯,对现有的“启动多级审核”、“多级审核”和“驳回审核”操作有比较大的意见。问能否统一设置为这种审核操作方式?

解答

这种问题产品是不好改了,只有让客户适应。

【摘要】插件的审核事件

版本:K310.2SP1+PT0704

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

解答

经检查,以查看状态打开单据,进行多级审核,在业务审核级次被审核时,能够触发业务审核事件,另外,昨天发现的业务审核事件在某条件下会多次触发的BUG已经修改,将会随8.31日须完成的功能点一起发放。估计还是因为用户没有针对单据插件进行编码,所以没有捕捉到事件。

【摘要】有关多级审核的问题

版本:K310.2SP1+PT0704

问题描述:

  1. 1.   在对一张单据进行“多级审核流程”配置时,在对每一级审核进行配置时,业务审核级次、业务审核人、业务审核日期都只能是一样的,这就导致在单据序时薄测试时,启动多级审核后,多级审核中只能有其中某一级的审核人和审核日期有数据,其余审核人和审核日期字段都不能在相应级别审核完毕后记录数据。
  2. 2.   在设置多级审核流程后,如果在某一级驳回审核,填写的驳回意见不能看到。
  3. 3.   设置多级审核流程后,在单据运行时,“审核”并没有像原有K/3系统中其它单据审核一样出现在上方菜单下的按钮上,而只能在菜单中启动多级审核。
  4. 4.   在多级审核级别之间进行“流转配置”时,只能在中间级别之间进行跳转,如共有5级审核,想要在某一条件下4级审核完毕后就结束,无法实现,只能在1-5级之间跳转。
  5. 5.   “流转配置”时,只能增加一次流转配置,即级别之间只能进行一次“添加关系”,且添加上的关系不能删除。
  6. 6.   在设置“流转配置”的“跳转条件”时,字段列表中只有单据的单据头字段,而没有单据体字段。
  7. 7.   最不方便使用的是在单据定义时,一旦添加上字段之后便不能删除,否则便会将单据上的所有字段全部删除。新增的单据、多级审核流程、单据转换流程保存后也不能删除。在多级审核流程中进行流转配置时添加上的关系不能删除。
  8. 8.   在进行“单据转换流程”定义时,不能由源单的单据体下推生成目的单的单据头。

解答

1、     答复:每一级审核都已经记录了审核人、审核日期、审核意见,在单据上“多级审核”页可以很清楚的看到。单据序时簿则暂时没有提供查看各级审核人、审核日期、审核意见的功能;这个和多级审核配置中的业务审核人、业务审核日期字段是无关的,业务审核人只在做业务审核的时候才会同时记录,多级审核中有且只有一个级次能作为业务审核级次,所以也只需要一个字段作为业务审核人字段;

2、     答复:已经记录了驳回意见,但暂时没有提供驳回意见的查看。驳回意见会以消息的方式发送出去;

3、     答复:SP2中会进一步简化、优化多级审核,本点在列;

4、     答复:9.30补丁中会增加一种属性,提供给插件判断流程是否已经跳转到结束,让插件有依据进行自动审核等操作,自动结束多级审核流程;

5、     答复:在关闭“启用多级审核”选项并保存后,可以自由添加、删除跳转关系;

6、     答复:暂时没有提供单据体字段;

7、     答复:10.2 SP增加了新功能,单据模版、多级审核配置、单据转换流程、报表等都可以删除;

8、     答复:暂没有提供;

【摘要】合同进行多级审核提示需要Bos加密狗

版本:K310.2

问题描述:在10.2产品中对合同进行多级审核,在消息提示中,打开后提示需要BOS加密狗,但数据量只有一条,难道,10.2产品中自带的审批流设置也需要BOS狗吗?

解答

这个问题应该是Bug,计划在10月底V10.2SP补丁中解决。

四、单据转换流程篇

【摘要】Bos单据与反审核相关的业务流程问题

版本:K310.2SP1

问题描述:工业单据,如销售订单和销售出库单:新增销售订单A并保存和审核==〉新建销售出库单B,选单整单选取订单A,先不保存==〉反审核A,修改后保存审核A==〉保存并审核B。这个流程在Bos单据之间、Bos单据与工业单据之间都能够实现,这样造成了业务流程上的混乱。Bos单据,单据B1与B2为钩稽关系,B1为上级单据:新建并保存和审核一张B1,然后新建B2整单关联B1,然后保存和审核B2,此时B1仍然可以被反审核。这样业务流程也发生了混乱。实际中有这样的需求:某单据的制单人与审核人为同一人,而反审核人为另一人,目前的K/3 10.2无法实现,原来在10.1是可以的。这个需求怎么处理?

解答

目前控制不了,BOS单据引用后任可以反审核,在产品中确实这样的,如需控制使用插件处理。

【摘要】新单推老单不能实现钩稽功能

版本:K310.2SP1

问题描述:我作了个bos单据,只有单据头,没有单据体,现要下推生成外构入库单,在单据关联时, 提示与老单关联必须输入物料和计量单位,我设了单据头的物料和计量单位后,还是提示必须输入物料和计量单位。忽视此问题,在下推到入库单时,物料的单位带不出来,后期也加不上。我想知道,是不是只有单据体关联才不会出错,单据头的物料和计量单位为什么不行。

解答

1、  在sp1的环境下新老单不能实现钩稽功能,其他关联关系功能也不健全。

2、  在SP2的环境虽然提示“老单关联必须输入物料和计量单位”,但选择继续能完成你需要的功能。

【摘要】系统BUG

版本:K310.2SP1+PT0704

问题描述:在K310.2+sp1 补丁的环境下,自己定义了一张新单据和已有的老单建立了钩稽关系,设置了钩稽字段关系,在做单据下推保存后,扣减数量一直为零。并且将关闭标志(数值型)设置为1时,还可以继续下推,请问该怎么处理.

解答

1、   前产品确实存在如上问题,但后续版本(10.3以后版本会解决)。

2、 可以在序事簿插件的AfterSelList事件中编写代码来判断关闭标志是否为1,从而判断是否允许下推。

3、 可以在目标单据的中间层插件的AfterSave事件中编写代码来扣减源单的数量,给扣减数量赋值。

【摘要】未审核的老单据不能下推Bos单据

版本:K310.2SP2+10.3+10.2SP1(所有版本)

问题描述:单据流程系统默认只能选择已审核的单据,现在客户要求能否包括未审核的单据,即老工业单据保存后就可以下推生成自定义的bos单据。

解答

只能选择已经审核的单据下推是在老工业单据序时簿里面控制的,选单时没有此问题,即流程设计并不是默认只能选择已经审核的单据。

【摘要】单据转换流程中能否实现汇总下推?

版本:K310.2SP2+10.3+10.2SP1(所有版本)

问题描述:单据下推如何实现汇总下推,如几张销售出库单下推生成一张bos单据,要求按照源单号、客户进行汇总,即目标单中只要包含每张出库单的合计数量和金额即可。

解答

由于合并下推/选单涉及的逻辑比较复杂(需要在目标单一条分录里面记录多条源单分录的内码,或者单独用另外一个表来记录,且涉及反写数量的问题),现在BOS没有支持,也没有简单的办法可以支持,如果不需要数量扣减关系,即关联关系为复制,不需要上下查,可以使用插件在下推生成单据后来合并。

【摘要】自定义的bos单据无法下推生成销售费用发票。

版本:K310.2SP2+10.3

问题描述:自定义的bos单据无法下推生成销售费用发票,提示下标越界。在定义单据转换流程时提示必须包含物料等内容,而费用发票中是没有物料的,自定义的bos单据中也没有物料,不知道这个转换流程如何定义,有什么办法可以解决。

解答

费用发票由于其特殊性,在k3内部也是特殊处理才完成选单功能的,暂时没有简便的方法来通过流程设计完成选单功能。

【摘要】选单一致

版本:K310.2SP2

问题描述:做一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)

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 & " And FBase3=" & m_BillInterface.GetFieldValue("FBase")

   else

       sFilter=" FBase3=" & m_BillInterface.GetFieldValue("FBase")

    end if

End Sub

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

【摘要】关联复制

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

问题描述:在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中加上“<FAction=,CanMultiSelBill/>”后就能选取多张单据。

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

版本:K310.2SP1+0704

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

【解答】

1、     BOS单据下推到老单没有处理红兰字单据,默认就是蓝字单据,目前下推没有处理红字单据。

2、     BOS单据下推生成老单的时候,使用钩稽就可以把BOS单据的单据号显示在老单上。

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

版本:K310.2SP2+SP1+10.3

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

【解答】

在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表清空。

【摘要】编码规则丢失

版本:K310.2SP1

问题描述:我们从BOS提取出单据的SQL,运行到其他账套后,发现编码规则丢失,必须重新进行编码规则的设置,请问用sql发布的话,如何才能不丢失编码规则。

解答

从BOS导出的模板后请更改脚本中以下语句:

/****** Object:Data 单据编号:ICBillNo Script Date: 2006-01-06 ******/

If  not exists (SELECT * FROM ICBillNo WHERE FBillID=700000)

begin

INSERT   INTO ICBillNo(FBillID,FBillName,FPreLetter,FSufLetter,FCurNo,FBillName_CHT,FBillName_EN,FFormat,FPos,FCanAlterBillNo,FCheckAfterSave,FUseBillCodeRule,FDesc)

VALUES (700000,'采购入库_BOS','','',2,'單據700000_BOS','Doc700000_BOS','00000000',700000,0,0,1,'00000002')

end

其中“FPreLetter”是单据编码的前缀。

【摘要】怎样将旧单改造数据结构的动作打包到Bos安装包中?

版本:K310.2SP2

问题描述:在BOS开发过程中,在原来的表中增加了一列如: poRequest 中增加一个列 ColA 在利用K3BOS打包工具进行打包的时候怎么来把增加一列ColA的动作打在安装包内?

解答

旧单改造(以单据类型是否小于200000000判断)的数据结构变更,BOS目前尚未支持,还请手工调整。

范例代码如下:

if not exists (select name from syscolumns where id=(select id from sysobjects where name='poRequest') and name='ColA' )

ALTER TABLE poRequest ADD ColA int not null default(0)

GO

【摘要】中间层上发布插件后,客户端的插件dll文件没有被更新。

版本:K3Bos10.2SP2+10.3

问题描述:我在客户处,对编写的插件单独打包,在客户的中间层上发布,但是客户端的插件dll文件没有被更新。客户是2个中间层服务器,发布是在有BOS运行平台的加密狗的中间层上进行的。发布后,客户端又使用了远程组建注册,仍没有效果。

解答

1、SP2开始安装包只需要在中间层服务器上安装,客户端自动部署。但SP2有一问题,由于打包过程中将文件进行了压缩,解压后文件日期变化,导致可能客户端更新不到最新的组件,这种情况需要手工更新客户端,V10。3版本此问题已解决。

2、元数据、功能部署、插件打在一个包中不会有问题,功能可正确运行。

【摘要】发布的BOS单据如何删除

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

问题描述:已经发布的BOS单据如何从主控台中删除?有没有相应的SQL脚本?因为不删除的话在重新发布时系统老是自动增加新的单据编号,容易引起用户混乱。

解答

目前主控台和K3BOS都未提供相应功能,通过SQL变通实现,请参考如下SQL代码:

delete from t_dataflowDetailFunc where fsubfuncid in (select FSubFuncID from  t_dataflowSubFunc where ffuncname='子功能名称')

delete  t_dataflowSubFunc where ffuncname='子功能名称'

update t_DataFlowTimeStamp set fname=fname

【摘要】Bos单据发布后主控台没有显示

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

问题描述:K3发布时虽然提示发布成功,但主控台仍没有显示

解答

打开子系统分组和子系统明细的属性,检查适应帐套类型是否一致。

【摘要】BOS部署客户端智能升级失败

版本:K310.2SP2+K310.3

问题描述:进入主控台报[BOS部署客户端智能升级失败]

解答

1、重新导入中间层应用程序EBOBOS组件K3MBOSInstall.dll组件;

2、将应用程序EBOBOS的标示-帐户改为交互式用户。

【摘要】打包应用程序是否有类似的InstallShield的脚本参考

版本:所有版本

问题描述:如何打包应用程序?有一个项目需要发布,如何像开K/3发布补丁一样,自动找到金蝶的安装目录,自动注册组件,在中间层连接帐套,执行SQL语句。是否有类似的InstallShield的脚本参考?

解答

请尝试使用BOS里的部署功能(除BOS的插件外,其他客户端和中间层组件也能发布),使用InstallShield比较复杂。《客户化开发知识库v1.0》文档中有使用InstallShield制作安装包的说明。

在最新的BOS V10.2SP中,提供了“一次环境部署,所有客户端自动更新”的功能,即在客户环境中一次部署完毕后,所有客户端登陆中间层时,能自动更新客户端组件,减少了重复安装客户端的工作量。

七、其他

【摘要】关于BOS的加密问题

版本:K310.2SP1+0704

问题描述:现在有个客户的版本是10.2+sp1+704,客户自定义了一个应收合同的多级审核,系统自动放送的消息提示需要BOS加密狗,是不是客户需要购买BOS运行平台?

解答

客户需要购买BOS运行平台才能使用多级审核的功能。客户需要购买BOS运行平台才能使用多级审核的功能。

【摘要】数据权限管理

版本:K310.2SP2

问题描述:怎样才能获得,该用户具有哪些数据查询权限呢?都涉及到哪几张表?Access_BOS200000?这些表和t_user 是关系呢?我通过什么方式的查询能够直接查询到该用户具备的数据权限呢?

解答

尚无明确答复,留待蔡波补充。

【摘要】在使用citrix客户端时,调用出BOS过滤界面后,选择下拉列表后出错

版本:K310.2SP2+10.3+10.2SP1(所有版本)

问题描述:在使用citrix客户端时,调用出BOS过滤界面后,选择下拉列表后出错

解答

citrix客户端版本未打SP3的情况下选择16位色进入会造成如上问题,选择256色或打上citrix Sp3后该问题消除。

【摘要】关于Bod已过期问题的处理。

版本:K310.2SP2+10.3

问题描述:大家在开发过程中,遇到BOS已过期时怎么办?

解答

因BOS10.2加密策略调整,请向总部申请BOS设计运行狗。

【摘要】中间层插件

版本:K310.2SP1

问题描述:我用金蝶BOS的客户端向导生成一个编辑窗口的客户端,然后自己写了一个中间层,没有中金蝶BOS的中间层向导生成。现在在服务器上运行正常,但在客户端上报组件不能创建。请问为什么?

解答

估计你写的中间层组件并不是BOS中间层插件,如果只是一个普通的中间层组件,需要为该组件进行远程组件配置。

如果你的中间层组件并不需要捕获BOS单据中间层事件,请直接使用m_BillInterface.K3Lib.GetData(或UpdateData)执行数据库操作,而不用另外建立中间层组件。

【摘要】BOS插件调用工资系统汇总表

版本:K310.1

问题描述:如果使用K/3BOS的插件功能调用工资管理系统的<工资汇总表>?

【解答】

在BOS插件中用以下代码可以调出"工资汇总表

Dim objSrv as Object

Set objSrv = CreateObject("PAReport.PAVrpt")

call objSrv.PAPayRpt(103)

【摘要】bos插件中如果发生任何错误,在k3界面中不会出现任何提示

版本:K310.2SP1+0704+SP2+10.3(所有版本)

问题描述:现在bos插件中如果发生任何错误,在k3界面中不会出现任何提示,这样一旦插件不正常的话无法看出,是否只能在插件中自己捕获错误信息?

解答

本来就应该在插件中要做错误处理。开发部项目组也是这样处理的。而且有错误处理也是k3开发的编码规范之一。

【摘要】以Administrator主控台设置刷新其他用户主控台设置

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

问题描述:以Administrator主控台设置刷新其他用户主控台设置

解答

10.4基础系统部功能点,目前通过SQL变通实现,请参考如下SQL代码:

delete t_DataFlowTimeStamp where fname not in ('dataflow16394','dataflow')

insert into t_DataFlowTimeStamp(FName) select 'dataflow'+convert(char(5),t1.FUserID) from t_user t1 where t1.fuserid>16394

delete t_UserTopClass where fuserid>16394

insert into t_UserTopClass(FTopClassID,FTopClassName,FTopClassName_EN,FTopClassName_CHT,FIndex,FAcctType,FVisible,FUserid)

select FTopClassID,FTopClassName,FTopClassName_EN,FTopClassName_CHT,FIndex,FAcctType,FVisible,t2.FUserid

from t_UserTopClass t1,(select fuserid from t_user where fuserid>16394) t2 where t1.fuserid=16394

update t_DataFlowTimeStamp set fname=fname

【摘要】系统帮助文件的挂靠

版本:K310.2SP2+10.3

问题描述:如何使用系统帮助文件的挂靠?

解答

update t_DataFlowSubSystem set fhelpfilename='二次开发系统帮助.CHM' where fname='明细子系统名称

【摘要】图纸管理

版本:K310.2SP2+10.3

问题描述:客户的产品是通过图纸来制造的,图纸有些是客户自己提供标准图纸,有些是客户的需求自己根据需求画出来的,报价单很大的部分是根据图纸来的,而且图纸是公司的机密。现在用户需求是图纸需要有严格的权限控制,最好能够放在数据库里面统一管理,有图纸单据有:报价单,销售定单,合同;现在我们的K/3v10.2的附件的权限不好管理不能满足客户的需求。如何提供解决方案?

解答

1、     这样的话可以对图纸管理进行开发(如果对方有PDM系统就不需要),图纸存放可以用局域网FTP或数据库存储解决,后者比较容易进行权限控制,自己设定权限控制,下载、浏览、更新、删除,都能进行控制;而且关于图纸管理也比较容易解决,如图纸的版本控制。

2、     K/3 BOS解决不了。

【摘要】外贸报价单

版本:K310.2SP1+SP2+10.3

问题描述:客户需要开发一张外贸报价单,里面涉及到物料对应表的内容,对应代码具体能实现的功能跟现有的报价单的一致,现在不知道怎么样能够具体的实现这样的功能,因为BOS的基础资料里面没有物料对应表,可以新增BOS基础资料和物料对应表共用一个表名,但是怎么可以做到跟原有的报价单在物料对应这一块的一摸一样的功能。

解答

不可能具有原来一模一样的功能,“BOS新增基础资料、映射到原有的数据表或视图”方式只能提供数据映射功能,保证能通过F7选择原有的数据。但由于原有数据的业务逻辑上的不可控,因此在实际操作过程中建议对这种基础资料隐藏增加、删除、修改等功能,来保证系统的稳定性。

在这里的物料对应表没有基于BOS开发,因此不能在外贸报价单上直接引用物料对应表,可以通过映射物料对应表的物理表方式满足客户需求。

具体操作:

1、新增一个BOS基础资料,把主表映射到表ICItemMapping。表ICItemMapping里面已经有数据。

2、把BOS基础资料里代码字段映射到FMapNumber字段,名称字段映射到FMapName,保存。

3、BOS单据序时薄测试的时候并不能把表ICItemMapping里面已有字段的内容显示出来,序时薄为空。

【摘要】如何在单据中做一个可以选择,又可以随意录入的字段?

版本:K310.2SP1+SP2+10.3

问题描述:如何在单据中做一个可以选择,又可以随意录入的字段?客户要在单据上加入一个“送货地点”,送货地点有一部分是固定的,还有一部分是只用一次,所以客户需要当是固定送货地点时的就进行选择,对于选不到的就直接在单据上打字(也就是不录入BOS基础资料中)。

解答

在单据上增加一个文本类型的字段(送货地点),通过插件在菜单上增加一菜单项(选择送货地点),并在插件中实现如下功能:

1、判断客户的送货地点类别,

2、如果是固定送货点,则菜单项可用,点菜单项选择“送货地点”基础资料,返回值填入字段中(只返回名称即可)

3、如果是一次性送货点,则菜单项不可用,可手工在单据上输入送货地点。

当然上面的还可以更细化,比如固定送货点时,“送货地点”只能选择,不能录入等等。

【摘要】如何将BOS单据的税率携带到下游老单据

版本:K310.2SP1+SP2+10.3

问题描述:如何在把BOS单据的税率携带到下游老单据?BOS新做的单据税率是基础资料属性来做的,但是K/3的老单据的税率不是基础资料属性,所以BOS单据下推生成老单据的时候怎么样携带税率下去呢

解答

可以将BOS的单据税率用小数类型描述,在基础资料值更新事件中,自动将基础资料的税率带到单据税率中,然后就可以关联到K/3来单据中。

【摘要】客户的车间管理的单据与我们K310.2的差异很大,可否用Bos开发

版本:K310.2SP1+SP2+10.3

问题描述:客户的车间管理的单据与我们K310.2的差异很大,无法使用K3的车间来满足客户需求。从派工单,到工序汇报,到最后的计时计件工资,都有差异,比如派工单,K3的表头是客户单据的表体,而K3的表体是客户单据的表头。但单据流是基本一致的。请问这样的开发用BOS是否可行?还是单独写程序比较好?哪个综合起来效果最佳?另外,分录是否可以把字段竖着表示?把行变成列,把列变成行?

解答

K/3 BOS 的单据为主表-明细表的一对多结构,如你的单据可以设计成这种结构即可用BOS实现,如为特殊结构单据,如无法变通,只能自行开发了。“分录是否可以把字段竖着表示”不能行变成列,但如果分录为单条纪录,可以用常用字段库中的字段或自定义字段实现。

【摘要】修改应收应付模板

版本:K310.2

问题描述:有个客户,需要做接口,用到应收应付模块,但有些要求比较特殊,需要修改应收模板。K/3 版本10.2,因为应收应付是BOS做的,所以我想在现有应收模块基础上进行修改,BOS设计界面可以调出来应收款管理,但不能发布。我想问在现有应收款管理上修改,可行么?

解答

应收款管理属于标准模块,暂时没有提供部署发布功能,但可以在客户运行环境中进行修改,环境如下:K/3 V10.2SP1+PT00704。

【摘要】客户在正式上线使用时,需如何购买站点数

版本:所有版本

问题描述:请问用K/3 BOS开发的多种单据后,客户在正式上线使用时,需如何购买站点数?是统一并发的吗?

解答

底价5万元人民币,包括6个站点,每增加一个站点2000元人民币;客户也可以用20万元买断,没有站点限制。是统一并发的,与单据数量无关,只与并发站点相关。

【摘要】在K/3 BOS中能否打印一张复杂的单据

版本:所有版本

问题描述:在K/3 BOS中能否打印一张复杂的单据?需要结合三张单据的内容进行打印。用两个以上的表体。其中一张单据的表头中一部分数据需要和表体的数据合在一起组成一个表体打印。其他部分数据在表头或其他的表体中打印。

解答

K/3 BOS套打只能是每个单据体制作一种套打。一般来讲,各单据体只具有联合关系,不具备内外连接关系。

【摘要】恢复K/3 BOS插件开发向导菜单按钮

版本:所有版本

问题描述:最近我在网上下了一个不知名的程序安装后随即卸了,可VB6运行时报错,我就重新修复安装了一下,但原来的K/3 BOS插件开发向导菜单按钮不见了,这样开发BOS插件很不方便,我想能否注册一下BOS组件就能解决问题?

解答

经过试验证明,以下注册表代码可以使VB中消失了的BOS插件向导重新找回来,或者使用附件中的注册表文件。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\Addins\K3BOSPLUGINSADDIN.Connect]

"FriendlyName"="K/3 BOS PlugIns Maker VB AddIn"

"Description"="K/3 BOS PlugIns Maker VB AddIn"

"LoadBehavior"=dword:00000003

"CommandLineSafe"=dword:00000000 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

优化 iOS 程序性能的 25 个方法

ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存...

763
来自专栏木宛城主

探索MVP(Model-View-Presenter)设计模式在SharePoint平台下的实现

对于SharePoint Developers来说,往往会过多的去关注SharePoint平台和工具,而把设计模式和代码的可测试性放在了一个较低的优先级。这并...

1717
来自专栏陈树义

我是SPI,我让框架更加优雅了!

自从上次小黑进入公司的架构组之后,小黑就承担起整个公司底层框架的开发工作。就在刚刚,小黑又接到一个任务:做一个通用的歌曲信息解析框架。即输入歌曲数据,之后返回该...

521
来自专栏一个会写诗的程序员的博客

h5中performance.timing轻松获取网页各个数据 如dom加载时间 渲染时长 加载完触发时间

在控制台中输入window.performance.timing(html5的属性);

1331
来自专栏Vamei实验室

Python应用03 使用PyQT制作视频播放器

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。

1123
来自专栏Vamei实验室

Python应用03 使用PyQT制作视频播放器

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。

862
来自专栏Spark生态圈

spark任务之Task失败监控

在spark程序中,task有失败重试机制(根据 spark.task.maxFailures 配置,默认是4次),当task执行失败时,并不会直接导致整个应用...

1813
来自专栏北京马哥教育

运维开发:你可能会忽略的 Git 提交规范

如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你。可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目就被糟践了。...

681
来自专栏向治洪

android开发性能分析

1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾。不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结、我一总结的都说到了很多优化注意事项...

2095
来自专栏码神联盟

JAVA架构 | Redis分布式缓存原理分析

1引言 Redis是Remote Dictionary Server(Redis) 的缩写,或许光听名字你就能猜出它大概是做什么的。不错,它是一个由Salvat...

3785

扫码关注云+社区