Dim obj As Object
Set obj = CreateObject(\ With obj
.CallByBill = True
.SelICItemID = '当前物料行内码 .CategoryBySupply = false .SelSupID = '供应商内码 .PriceType = 1 .Show 1 End With
Set obj = Nothing
【摘要】:如何可以取到单据编号的组件 【版本】:K3v10.2SP2 客户化开发技术资料——K/3 BOS开发百问百答
问题描述: 导入一张组装单, 组装单是一张BOS单据。 得到单据编号的组件是怎样的? 接口是什么?
解决方法: Set obj = CreateObject(\
GetThisBillNo = obj.GetBillNo(sDsn, ClassID, sKey, bGetDeleteNo, bSave) 接口描述:
'/*描述:得到一种业务类型的编号 '/*参数:
'/*@ bGetDeleteNo 是否获取空号,这种单据设置了删除的空号被保存才有效,已经无 效,只是保持兼容调用接口
'/*@ bSave 是否需要修改新的最大单据号 '/*@ ClassID 类型 '/*@ sDsn 连接串信息
'/*@ sKey 需要处理的关键字。
【摘要】:是否可以直接在数据库表中直接修改 Bos 单据中的字段类型 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3
问题描述: 在 Bos 单据中加入一备注字段,并保存了数据,可否将备注字段改为文本 字段,保证数据不丢失
解决方法: 可以修改表Icclasstableinfo的FCtlType字段,示例如下。
update icclasstableinfo set fcapti,fcapti,fcapti,FKey='FText1',FFieldName='FText1',FCtlType=1 where fid=8438
update icclasstype set fid=fid ----单据的时间梭
注意在后面更新 icclasstableinfo 表来修改单据,一定要更新一下 icclasstype,否则 前面的更新在Bos设计环境反映不出来更新。
【摘要】:锁定单据字段 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3
问题描述: 如何在插件中锁定单据字段 客户化开发技术资料——K/3 BOS开发百问百答
解决方法: 可以用lockcell方法锁定,如锁定单据头币别:
Set dcttemp = m_BillInterface.GetFieldInfoByKey(\
If Not dcttemp Is Nothing Then m_BillInterface.BillCtl.LockCell dcttemp, -1, True 第二个参数为分录行号,当为-1时锁定所有行。
注意:设计状态没有设计为\锁定\的字段,才可以在运行状态锁定或解锁。
【摘要】:删除符合条件的单据 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3
问题描述: 符合一定条件的单据不允许删除。是否有删除前的事件可以调用,或者其 他方法
解决方法: 可以在中间层插件的Beforedel事件中写代码实现。
【摘要】:动态过滤基础资料 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3
问题描述: BOS 新建的单据上的添加基础资料时,能否给定某中过滤条件?比如:选择 某个物料资料,要求只显示指定的某个部门的物料资料,其它的物料不显 示,这种情况能否实现。
解决方法: 可以在单据的Change事件中写如下代码来实现动态过滤条件。 If dct(“FKey”)=”FDeptID” then
m_BillInterface.DataSrv.TableInfo(m_BillInterface.TableInfo (\ & m_BillInterface.getfieldvalue(“FDeptID” ) & “’” End if
注意:上面的代码不支持调试,如果调试,发现赋值为空,没有将过滤条件赋值成功,但 编译后运行没有问题。
客户化开发技术资料——K/3 BOS开发百问百答
【摘要】:单据保存出错 【版本】:K3v10.2SP2
问题描述: 新增 BOS 单据,单据的表设为 poRequest,
单据体的表设为 poRequestEntry,然后保存,出现如下提示错误信息: “索 引’IX_PoRequest_FBillNo’依赖于列’FBillNo’”,能删除此索引吗?
解决方法: 这是 10.2 的一个设计不合理的地方,10.3 没有这个问题了。可以先删除,设计成功后 加上就好了。
大力水手 2009-08-01 21:36:29.0 【摘要】:标准序时簿过滤条件对话框(和K3老单据一样) 【版本】:K3v10.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开始。
【摘要】:如何再次添加新插件 【版本】:K3v10.2 及以后版本
问题描述: 在投料变更单的菜单上加入一个菜单项,需要插入一个插件,但投料变更 单上已经有一个插件了,如何才可以再插入一个插件 客户化开发技术资料——K/3BOS开发百问百答
解决方法: 点插件管理中的按钮,可以通过浏览来选择自定义插件,并选择多个插件对象,BOS允
许多个插件同时存在。
【摘要】:单据分录数达到 3000 条,单据保存会不会出错 【版本】:K3v10.2SP2
问题描述: 因为业务需要,可能一张单据的分录数达到 2000-3000 条,这样的 BOS开 发的单据,保存时是否有问题?参考:10.0 的设备管理中,录入 50-60 条分 录,保存时就会有问题出现。
解决方法: 这个问题是 10.0 的 bug,目前 K3BOS 单据最大行数设定是 2000 行。如确实有需求可放
开相应限制。但单据体字段过多,性能会受到一些影响,建议最好不要超过这个限制。
【摘要】:批次过滤 【版本】:K3v10.2SP1&K3v10.2SP2&K3v10.3
问题描述: 关于批次号分别按输入的物料、仓库、仓位的过滤批次的范例代码。 解决方法: 环境说明: 物料:字段名称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 客户化开发技术资料——K/3 BOS开发百问百答
FStockplaceID=GetFldValue(FDCSPID,1))' where FKey='FBatchNo' and FClassTypeID=300000000 3、 更新BOS 单据缓存 UPdate ICClasstype set fid=fid
【摘要】:应收应付系统合同是否能超额执行 【版本】:K3v10.1
问题描述: 应收应付系统合同是否能超额执行。
解决方法: 10.1应收应付的合同的反写由应收应付自行控制,且并为提供相应参数控制。10.2应
收应付合同该由BOS实现,且提供了[合同是否允许超额执行]的系统参数选项。
【摘要】:基础资料录入代码时不马上显示相关的列表 【版本】:K3v10.2SP2+K3v10.3
问题描述: BOS 单据引用基础资料时,能否有设置,使在录入代码时不马上显示相关的 列表,而是在回车之后才判断是否存在代码,因为某个基础资料太大了, 输入一个字母要长时间才能够反映。
解决方法: 可以在单据录入界面选项中选择禁止下拉列表自动显示。 客户化开发技术资料——K/3 BOS开发百问百答
【摘要】:在插件中以新增、修改和查看方式打开另一单据 【版本】: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(\ oDataSrv.ClassTypeID = lClassTypeID
Set oBill = CreateObject(\ 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 所有版本 客户化开发技术资料——K/3 BOS开发百问百答
问题描述: 请问在插件中怎样显示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(\ oDataSrv.ClassTypeID = lClassTypeID If oDataSrv.showfilter Then
Set objLookup = CreateObject(\ objLookup.ClassTypeID = lClassTypeID Set objLookup.DataSrv = oDataSrv objLookup.Lookup
Set ShowListByReturn = objLookup.VectReturn End If
Set oDataSrv = Nothing Set objLookup = Nothing