K/3 BOS开发百问百答(版本:2007版)
行业产品部
2008年1月
目录
一、业务单据篇_____________________________________________________1【摘要】如何控制BOS单据不允许删除_______________________________________________1【摘要】应收应付套打_____________________________________________________________1【摘要】收款单(BOS老单据)模板修改后,多个用户同时新增单据时出错_______________1【摘要】BOS单据新增功能网络控制问题______________________________________________1【摘要】通过插件对单据体某一列进行锁定或解锁_____________________________________2【摘要】BOS插件调用F7功能_______________________________________________________2【摘要】如何在插件中调出BOS单据的序事簿并且不弹出过滤窗口_______________________3【摘要】用户类型字段赋值_________________________________________________________4【摘要】在插件中刷新序事簿_______________________________________________________5【摘要】如何在BOS单据体中显示红字或蓝字_________________________________________5【摘要】获取当前被审核单据的FID值________________________________________________5【摘要】组件中如何直接调用取得即时库存___________________________________________6【摘要】单据编号不允许重复_______________________________________________________6【摘要】BOS单据生成凭证出错______________________________________________________6【摘要】下推按钮放在单据上,而不是序事簿里_______________________________________6【摘要】用BOS插件支持DDE吗_______________________________________________________7【摘要】BOS插件如何调用存储过程_________________________________________________7【摘要】如何在单据显示前给字段预赋值_____________________________________________8【摘要】无法复制分录_____________________________________________________________8【摘要】如何在10.3和10.4的老单据上添入图形字段,并可套打出来____________________8【摘要】K3 V10.3 BOS能否在change事件中读取到改变前的原值_________________________8【摘要】在插件中实现自动保存_____________________________________________________9【摘要】对所选单据分录如何正行高光显示或改变所选中行的背景色_____________________9【摘要】如何在BOS单据的插件中调用老单据__________________________________________9【摘要】如何在BOS单据(供应链单据)中使用F12查看即时库存________________________13【摘要】BOS单据下推老单据时如何处理辅助属性____________________________________13【摘要】开发一张BOS单据在编辑状态下能否输入一个单据号调出整张单据的信息_________14
【摘要】在生成记录凭证时相同的分录不能合并______________________________________14
【摘要】如何在插件中获取单据体某个字段的值______________________________________14【摘要】K3V10.3是否支持基础资料多选____________________________________________15【摘要】BOS V10.4按单生居凭证,合并生成凭证不见了________________________________15【摘要】如何在插件中调出附件界面________________________________________________15【摘要】如何在插件中执行值更新事件______________________________________________15【摘要】升级至10.4后,进入BOS系统业务单据不能保存_______________________________16二、多级审核篇____________________________________________________17【摘要】关于多级审核指定下级审核人______________________________________________17【摘要】处理多极审核设置跳转条件后有选择性地发送消息____________________________17【摘要】K3 10.3 BOS叙事簿如何实现批审核功能_____________________________________18【摘要】怎样显示驳回信息________________________________________________________18【摘要】BOS单据如何自动启动多级审核____________________________________________18【摘要】远程服务器不存在或不可用________________________________________________19三、单据转换流程篇________________________________________________20【摘要】不能实现记录选择________________________________________________________20
【摘要】如何新增K3工业单据(老单据)之间的单据转换流程?另外如果用BOS可以满足,客户是否需要沟买BOS?___________________________________________________20
【摘要】如何控制已关联的单据不能再下推__________________________________________20【摘要】如何将下推按钮移到序事簿工具栏上________________________________________21【摘要】BOS单据下推老单据时无法处理值更新事件__________________________________21【摘要】删除BOS单据时报错,提示“对象名T1无效”_________________________________21【摘要】生产任务单下推BOS单据,关联关系为钩稽或关联复制时报错__________________21【摘要】新单推老单时如何实现严格控制____________________________________________22【摘要】请设置关联源单内码保存__________________________________________________22四、报表篇_________________________________________________________1【摘要】万能报表中选择数据表的问题_______________________________________________1五、部署发布篇_____________________________________________________2【摘要】应收应付系统中的BOS单据(老单据)修改后如何发布____________________________2【摘要】基础资料自定义属性不能随BOS安装包一起发布_______________________________2
【摘要】无法发布_________________________________________________________________2六、其他篇_________________________________________________________4【摘要】BOS登录问题_____________________________________________________________4
【摘要】K/3账套管理密码丢失的处理方法___________________________________________4【摘要】如何使远程桌面登录到中间层服务器上的K3客户端能够正确登录_________________4【摘要】K3工业单据动态过滤______________________________________________________4【摘要】如何设置BOS开发的模块的帐期______________________________________________5【摘要】关于k3v10.4的一个bug____________________________________________________5【摘要】加密狗使用记录不存在(或无效),请退出重新登录______________________________5【摘要】10.4软加密后,还能不能帮助客户进行二次开发_______________________________6【摘要】账套升级错误_____________________________________________________________6
【摘要】如何在外挂程序中利用VB调用BOS单据及BOS序时薄,BOS单据中的关联关系如何在VB中使用____________________________________________________________________6
【摘要】工业单据插件中如何获得基础资料类型字段的内码_____________________________7
一、业务单据篇
【摘要】如何控制BOS单据不允许删除
版本:所有版本
问题描述:在K3BOS开发的单据序时薄中,如何实现选中的单据不允许删除,只能在外挂系统(二次开发)中删除,未发现单据序时薄的BeforeDeleteBill事
件,只有AfterDeleteBill事件,插件中无法实现上述控制。
解决方法:有两种方法:
1、可以在单据的操作管理中,设置“删除”操作在序时薄所有场景不可见。
2、可在单据序事簿插件的MenuBarClick事件中进行控制。
【摘要】应收应付套打
版本:所有版本
问题描述:在应收应付单据上(比如合同应收)需要加客户联系电话这一字段(客户的属性),如何能打印该字段?
解决方法:因应收应付客户为核算项目类别+核算项目方式支持,目前BOS无法支持该种方式核算项目资料属性的携带和打印,可通过以下方式变通解决:
1、通过BOS设计器给对应单据新增一个客户基础资料,字段名称为Fbase,中文名称
为客户打印,保存单据模板。
2、执行以下SQL
update ICClasstableinfo set faction='SetEquation{FBase}' where fclassty
peid=1000019 and fpage=1 and fkey in ('FCustomer')
update t_rpcontract set fbase=fcustomer
Update icclasstype set fid=fid
3、 然后在套打中通过“客户打印”的属性就可以打印客户的属性了。
【摘要】收款单(BOS老单据)模板修改后,多个用户同时新增单据时出错
版本: K3v10.3SP1
问题描述:BOS修改了应收款系统的“收款单”,但保存后,只能一个用户录入收款单,其他用户进入“收款单录入”时系统提示“出现冲突和错误”.
经跟踪分析后发现,在BOS平台修改“收款单”后,系统会修改“功能互
斥表”,将备份帐套的“功能互斥表”覆盖当前修改“收款单”后的帐套
的“功能互斥表”后,其就正常了,请及时纠正这一BUG
解决方法:该问题已有补丁,请访问mykingdee - 技术支持部 -补丁下载 - 补丁号 PT005884。 【摘要】BOS单据新增功能网络控制问题
版本:K3v10.3、10.3SP1
问题描述:新建一BOS单据,然后给其设置了网络控制。出现的问题:该单据只能有一个人新增,第二个人新增报[当前功能与其他用户冲突无法使用]。
解决方法:对相应帐套执行如下SQL:
delete t_mutex where ffuncid in (select ffuncid from ICClassmutex where foperate
name like '%新增%' and fclasstypeid=200000000)
(FClasstypeid是ICClassType表中的FID)
【摘要】通过插件对单据体某一列进行锁定或解锁
版本:所有版本
问题描述:如何在用户正在使用的单据体内指定某一列进行锁定、解锁或者隐藏或显示?
解决方法:锁定或解锁:
m_billinterface.LockCell(ByVal dct As KFO.Dictionary, _
ByVal Row As Long, ByVal bValue As Boolean)
'/*@ bValue Boolean True 锁定,False 不锁定
'/*@ dct KFO.Dictionary 某字段的模版用GetFieldInfoByKey得到
'/*@ Row Long 行,-1为所有行
隐藏或显示:
m_billinterface.ShowHideField(ByVal dct As KFO.Dictionary, _
ByVal bValue As Boolean)
dct KFO.Dictionary某字段的模版 ,用GetFieldInfoByKey得到
bValue Boolean Ture显示False隐藏
【摘要】BOS插件调用F7功能
版本:K3v10.4
问题描述:如何在BOS插件中调用BOS基础资料的序事簿?
解决方法:调用K3Lib.LookUpClass'
/*描述:F7查找基础资料功能(包括旧核算项目、科目、币别、批号、新平台基础资料等)
'/*参数:
'/*@ dct KFO.Dictionary 查找类型字段模板信息
'/*@ pCurValue Variant 用户当前录入的值
'/*@ bEntryType_MutiRow 是否为多行选择
'/*返回值:oReturnObj
Public Function LookUpClass(ByVal dct As Object, _
ByVal pCurValue As Variant, _
Optional ByVal bMutiSel As Boolean = False, _
Optional ByRef oReturnObj As Object = Nothing) As
String
dct 包含以下内容:
dct("FDSPFieldName") = ""
dct("FFilter")
dct("FFilterGroup")
dct("FFNDFieldName")
dct("FLookUpClassID")
dct("FLookUpType")
dct("Fproperty")
FLookUpType取值说明:
1\基础资料
2\辅助资料
3\BOS基础资料
4\科目
5\币别
6\计量单位
7\用户
8\批次
9\核算项目类别
10\核算项目
13\系统用户
14\仓位管理
17\辅助属性
例:'BOS基础资料
Dim obj As Object
Dim dctBosBase As KFO.Dictionary
Set dctBosBase = New KFO.Dictionary
dctBosBase("FLookupClassID") = 200000001'FClassTypeID
dctBosBase("FLookUpType") = 3' 10:核算项目,2:辅助资,4:科目
' DctBosBase("FType")=辅助资料的TypeID
dctBosBase("Filter") = ""
dctBosBase("FFNDFieldName") = "FName"
m_BillInterface.K3Lib.lookUpClass(dctBosBase, "", , obj)
【摘要】如何在插件中调出BOS单据的序事簿并且不弹出过滤窗口
版本:所有版本
问题描述:如何在插件中调出BOS单据的序事簿并且不弹出过滤窗口?
解决方法:Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object
Dim objLookup As Object
Dim dFilter As KFO.Dictionary
On Error GoTo err_ctr
Set oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")
oDataSrv.ClassTypeID = lClassTypeID
Set objLookup =
m_BillInterface.K3Lib.CreateK3Object("K3ClassLookUp.BillLookUp")
Set dFilter = New KFO.Dictionary
dFilter("HeadSort") = "" '单据头排序条件
dFilter("EntrySort") = "" '单据体排序条件
dFilter("SelectPage") = "1,2," '1为单据头,2为单据体1,3为单据体2,此处表
明选单单据体为[单据头]和[单据体1]
dFilter("FilterString") = "FBillno='000001'"
oDataSrv.Filter = dFilter
objLookup.ClassTypeID = lClassTypeID
Set objLookup.DataSrv = oDataSrv
objLookup.Lookup
Set ShowListByReturn = objLookup.VectReturn
Set dFilter = Nothing
Set oDataSrv = Nothing
Set objLookup = Nothing
Exit Function
err_ctr:
Set dFilter = Nothing
Set oDataSrv = Nothing
Set objLookup = Nothing
End Function
【摘要】用户类型字段赋值
版本:所有版本
问题描述:BOS开发检斤过磅单,内有皮重司磅员和毛重司磅员两个字段,这两个字段都是用户类型的字段,如何给这两个字段赋值?
解决方法:目前BOS中的SetFiledValue无法实现。现变通实现如下:先修改数据包,再更新界面值。
Dim dctData As KFO.Dictionary
Dim dct As KFO.Dictionary
Set dct = m_BillInterface.GetFieldInfoByKey("FUser", "", 0)
Set dctData = m_BillInterface.GetDataFld(dct, 0)
dctData("FDsp") = "Administrator"
dctData("FFND") = "Administrator"
dctData("FFLD") = 16394
dctData("FModify") = 1
m_BillInterface.SetText dct, "Administrator"
【摘要】在插件中刷新序事簿
版本:所有版本
问题描述:如何在BOS单据序事簿插件刷新序事簿?
解决方法:m_ListInterface.List.RefreshList
【摘要】如何在BOS单据体中显示红字或蓝字
版本:K3v10.4
问题描述:如何在BOS单据体中显示红字或蓝字?
解决方法:Public Function ChangeBillColor(ByVal RedOrBlue As Boolean) '改变单据体字体颜色,true 为红字,false 为黑体字
' On Error GoTo HError:
Dim DctInfo As KFO.Dictionary
Set DctInfo = New KFO.Dictionary
Dim i, Count As Long
With m_BillInterface
Count = .BillEntrys.Item(1).BOSFields.Count
If RedOrBlue = True Then
For i = 1 To Count
Set DctInfo
= .GetFieldInfoByKey((.BillEntrys.Item(1).BOSFields.Item(i).FKey), "", 0)
DctInfo("FTextColor") = vbRed
.BillCtl.setentryctlpropery DctInfo, "textcolor"
Set DctInfo = Nothing
Next i
Else
For i = 1 To Count
Set DctInfo
= .GetFieldInfoByKey((.BillEntrys.Item(1).BOSFields.Item(i).FKey), "", 0)
DctInfo("FTextColor") = vbBlack
.BillCtl.setentryctlpropery DctInfo, "textcolor"
Set DctInfo = Nothing
Next i
End If
End With
HError:
Set DctInfo = Nothing
End Function
注明:以上只是显示红、蓝字而已,但并不具备类似于老单据的红、蓝字功能。
【摘要】获取当前被审核单据的FID值
版本:K3v10.4
问题描述:在进行BOS 单据批量审核的时候,在每张单据审核后更新库存之类的动作
可以通过AfterMultiCheck事件(每张单据审核后都后触发该事件)更新库
存,但如何获取当前被审核单据的单据内码(FID)值?
解决方法:已提供补丁PT010687
【摘要】组件中如何直接调用取得即时库存
版本:K3v10.4
问题描述:插件如何实现直接取到即时库存数量(在插件中要控制某单的数量不能超过库存数)。老版本都是直接通过SQL语句查询,在事件里直接设置相关参
数就可以取到了,是否有组件可以直接调用?
解决方法:10.4插件K3lib提供了GetStockqty这个函数可以取数即时库存数;
GetStockQty 函数
库存查询函数。
语法
Object.GetStockQty (lngItemID,lngUnitID)
部分 描述
Object K3Lib 对象的一个实例。
lngItemID long 类型。被查询的物料内码。
lngUnitID long 类型。被查询的计量单位内码。
dctParams KFO.Dictionary 对象。可选参数,初始化传入辅助属性内码(AuxPropID),
传出库存精度(FQtyDecimal)。 返回值:返回被查询物料指定单位的库存值。
【摘要】单据编号不允许重复
版本:K3v10.4
问题描述:采用远程桌面登陆K3客户端,如果两台机器新增的BOS单据与当前单据编号相同时,则有一台机器无法同时保存单据。提示:单据编号不允许重复。解决方法:可以通过系统参数维护供应链整体选项第25条解决。
【摘要】BOS单据生成凭证出错
版本:K3v10.4
问题描述:BOS单据生成凭证,提示 “取得的凭证分录数小于两条”,其他设置都是正常的。
解决方法:是在凭证模板设计里摘要是取单据体里的备注字段,而该单据的单据体里备注字段为空,可以将该备注字段填上。
【摘要】下推按钮放在单据上,而不是序事簿里
版本:K3v10.4
问题描述:BOS 定义的单据做转换流程后,都是在序时薄上有个下推按钮,问:"下推"
的功能是否能放在单据上,在单据上可点击下推。
解决方法:现有功能无法满足该需求,但可在总部相关开发人员指导下进行单独开发,或者到mykingdee需求反馈系统提单,提出需求,以补丁完善该功能。
【摘要】用BOS插件支持DDE吗
版本:K3v10.4
问题描述:用BOS插件支持DDE吗?
程序测试的DDE取数都很正常,但发布到BOS插件以后,就会出现错误.代码
如下:
On Error GoTo err:
txtDDE.LinkMode = 0
txtDDE.LinkTopic = "TRADE|IO"
txtDDE.LinkTimeout = 50
txtDDE.LinkItem = "INPUT"
txtDDE.LinkMode = 1
txtDDE.LinkExecute "@GI;23"
txtDDE.LinkMode = 0
txtDDE.LinkTopic = "TRADE|IO"
txtDDE.LinkTimeout = 50
txtDDE.LinkItem = "OUTPUT"
txtDDE.LinkMode = 1
txtDDE.LinkRequest
strList = txtDDE.Text
strDDE = Split(strList, ",")
strList = strDDE(9)
strList = Mid(strList, 2, Len(strList) - 4) / 1000
Exit Sub
这个控件在单独的VB窗体上,说明一点在EXE文件即可,但编译成DLL以后,
就出问题.
解决方法:编译成DLL出错的话可能是以下错误:
Run-time error '369'
Operation not valid in an ActiveX DLL
出错的代码应该是:txtDDE.LinkMode = 1 这一句上。也就是在建立DDE连接时出了问
题。对DDE分析应该是 “动态数据交换(Dynamic Data Exchange,DDE)一种 进程间 通
信形式。”当你编译成EXE文件时,每次运行是独立的进程,而编译成DLL时,只是由
某个进程用来创建对象用,已经不能算是独立的进程了,所以会出现在ActiveX Dll上
操作不合法的问题。
个人建议解决办法:把要从其他程序获取的数据暂存于文件中,在插件里面读取数据。【摘要】BOS插件如何调用存储过程
版本:所有版本
问题描述:在BOS插件里,如何使用存储过程,现有方法是建立了一个连接,有更好
解决方法:可以通过K3Lib的UpdateData方法执行,详情参考插件开发手册。
【摘要】如何在单据显示前给字段预赋值
版本:所有版本
问题描述:在单据显示之前,是否能预先设置一下其中部分字段的值?
解决方法:在单据插件中通过响应AfterNewEmptyData事件去给某个字段预先设置值,代码示例如下:
m_BillInterface.SetFieldValue "FText1", "test"
注:以上代码给单据头上的FText1文本字段设置值“test”
【摘要】无法复制分录
版本:K3v10.3SP1
问题描述:在一张BOS单据上有多行分录数据,挑选其中一条分录进行行复制("Ctrl+K"), 提示物料已经被禁用无法复制 。用多个账套进行测试得出,
当行复制时对应的分录如果文本型的字段录入为数字, 则会进行
"SELECT FNumber,FName,FDeleted FROM t_Item WHERE FItemID=**"
检测,造成错误提示。
解决方法:此问题是由于单据模版错误造成的。由于文本类型的字段可以取基础资料相关属性,造成其对应的模版里面的数据查找类型可能是不正确的值(如果并没有取基础资料的相关
值)而复制行的时候对于原始的基础资料是否已经禁用作了判断 ,当文本字段为其他
值时该sql不会有结果返回所以不会出错,而当文本字段刚好为某已禁用的基础资料的
内码的时候就会提示该信息。解决办法是修改icclasstableinfo表中该字段的
FLookUpType为0,即可这样就不会进行检查了。
【摘要】如何在10.3和10.4的老单据上添入图形字段,并可套打出来
版本:K3v10.3以上版本
问题描述:现在K3v10.4的BOS单据上可加入图形字段,可如何在10.3和10.4的老单据上添入图形字段,并可套打出来?
解决方法:目前无法在老单据上增加图片字段,老单本身都没有支持图片类型的字段。可以考虑用附件来处理,但是无法直接在单据上显示出来,需要另外的界面单独处理。
【摘要】K3 V10.3 BOS能否在change事件中读取到改变前的原值
版本:K3v10.3以上版本
问题描述:K3 V10.3 BOS能否在change事件中读取到改变前的原值?比如第一个表体(多分录)中某一项标题“数量”,字段“FQty”,从8修改到12,在
change事件中能否读取到这个8?
解决方法:用 GetDataFld或者 GetDataFldbyKey取得对应字段的数据包
返回值的dct里面 的 FOLD即为修改前的值。
如 dct("FOLD")
dct("FFND")
dct("FFLD")
dct("FDSP")
【摘要】在插件中实现自动保存
版本:K3v10.3以上版本
问题描述:新建BOS单据《磅码单》,在单据上加了一个按钮,用于取重量,能否在插件中实现点击此按钮时自动保存该单据。
解决方法:在插件的CommandClick事件中调用m_BillInterface.SaveBill方法保存单据。
【摘要】对所选单据分录如何正行高光显示或改变所选中行的背景色
版本:K3v10.4
问题描述:在输入较多的单据分录时,希望对当前编辑的行进行特殊显示,以和其它分录区别开来,便于录入。效果类似于录入工业单据分录的背景色显示。解决方法:Public Function ChangeBillColor(ByVal lngBackColor As Long, ByVal lngRow As Long) '
' On Error GoTo HError:
Dim DctInfo As KFO.Dictionary
Set DctInfo = New KFO.Dictionary
Dim i, Count As Long
With m_BillInterface
Count = .BillEntrys.Item(1).BOSFields.Count
For i = 1 To Count
Set DctInfo
= .GetFieldInfoByKey((.BillEntrys.Item(1).BOSFields.Item(i).FKey), "", 0)
DctInfo("FLabelColor") = lngBackColor '颜色值
.BillCtl.setentryctlpropery DctInfo, "labelcolor", lngRow '单据体
行
Set DctInfo = Nothing
Next i
End With
HError:
Set DctInfo = Nothing
End Function。
【摘要】如何在BOS单据的插件中调用老单据
版本:K3v10.4
问题描述:bos单据中调用显示一张老单据应该如何实现?
解决方法:加入一模块文件(如mdlShare.bas),模块名是mdlCallIndustryBill,具体内容是: 'Call mdlCallIndustryBill.CallBills(5, 1804, 1, 1)
'//////////单据调用////////////////'
' nTranType : 事务类型
' nInterID : 单据ID
' nShowType : 查看模式 (0:新建; 1:EDIT; 2:View)
' nBillType : 单据调用模式(0:普通; 1:单据调单据)
' StateParm : 其他参数,目前主要为BOM使用
' sNewBillType :
' nSaleMode : 内销 or 外销
Private m_BillInterface As BillEvent
Public Declare Function GetCurrentProcessId _
Lib "kernel32" () As Long
Public UserName As String
Public UserId As Long
Public Function CallBills(ByVal nTranType As Long, _
Optional ByVal nInterID As Long = 0, _
Optional ByVal nShowType As Long = 2, _
Optional ByVal nBillType As Long = 0, _
Optional StateParm As Object, _
Optional ByVal sNewBillType As String = "", _
Optional ByVal nSaleMode As Long = 0) As Boolean Dim objBill As Object
Dim nBillCls As Long '事务类别 (ICTransactiontype.FType)
On Error GoTo lError
'得到单据事务类型的TypeID
If nBillCls = 0 Then nBillCls = GetBillClsID(nTranType)
If nBillCls = 0 Then
MsgBox "单据系统模板错误"
GoTo lError
End If
'-----------------注意:此处参数有改动--------------------'
If nBillType = 0 Then
Set objBill = CreateObject("K3Bills.Bills")
Else
Set objBill = CreateObject("K3BillsEx.Bills")
End If
'-------------------------------------------------------'
Dim dlg As Object
Set dlg = CreateObject("CSystemDlg.Sys")
Dim LocalCnStr As String
Dim sSubID As String
Dim sSubName As String
Dim lModel As Long
Dim lModelDetail As Long
LocalCnStr = dlg.LocalCnn
Set dlg = Nothing
With objBill
.LocalCnn = LocalCnStr
.SystemName = sSubName
.SetOpt UserId, UserName
If Not .SaveVect(1).Lookup("sDsn") Then
.SaveVect(1)("sDsn") = GetConn
End If
If nInterID <> 0 Then
.ListRecordset = SetBillRec(nInterID, nTranType) .ListRSFieldVect = SetBillVect
End If
If Len(sNewBillType) > 0 Then
.NewBillTransType = sNewBillType
Else
.NewBillTransType = VBA.CStr(nTranType)
End If
.Show nBillCls, nShowType
' 'Add By ChenLianli 用于判断是否单据改变了
' bBillValueChaged = .BillValueChanged
End With
' Set objReturn = objBill.BillReturn
Set objBill = Nothing
CallBills = True
Exit Function
lError:
If Err.Number <> 0 Then MsgBox "单据调用出现异常错误。"
CallBills = False
Set objBill = Nothing
End Function
'取工业单据类型ID
Private Function GetBillClsID(ByVal lTranType As Long) As Long
Dim rs As ADODB.Recordset
Dim objTemp As Object
Dim strSql As String
On Error GoTo lError
strSql = "select FType From ICTransactiontype where fid = " & VBA.CStr(lTranType)
Set rs = m_BillInterface.K3Lib.GetData(strSql)
GetBillClsID = rs.Fields("FType").Value
Set rs = Nothing
Set objTemp = Nothing
Exit Function
lError:
Set rs = Nothing
Set objTemp = Nothing
GetBillClsID = 0
End Function
Private Function SetBillVect() As KFO.Vector
Dim tVect As KFO.Vector
Set tVect = New KFO.Vector
Dim tDict As KFO.Dictionary
Set tDict = New KFO.Dictionary
tDict("FColName") = "FInterID"
tDict("FISPrimary") = 1
tVect.Add tDict
Set tDict = New KFO.Dictionary
tDict("FColName") = "FTranType"
tDict("FISPrimary") = 3
tVect.Add tDict
Set tDict = Nothing
Set SetBillVect = tVect
End Function
'取当前数据库连接
Public Function GetConn() As String
Dim lProc As Long
lProc = GetCurrentProcessId()
Set spmMgr = CreateObject("PropsMgr.ShareProps")
If IsObject(spmMgr.GetProperty(lProc, "PropsString")) Then
GetConn = spmMgr.GetProperty(lProc, "PropsString")
Else
GetConn = spmMgr.GetProperty(lProc, "PropsString")
End If
Set spmMgr = Nothing
Exit Function
End Function
'/////////设置选择单据信息//////////////'
Private Function SetBillRec(ByVal aInterID As Long, _
ByVal aTranType As Long) As ADODB.Recordset
Dim tRec As ADODB.Recordset
Set tRec = New ADODB.Recordset
tRec.Fields.Append "FInterID", adInteger
tRec.Fields.Append "FTranType", adInteger
tRec.Open
tRec.AddNew
tRec!Finterid = aInterID
tRec!FTranType = aTranType
tRec.Update
Set SetBillRec = tRec
End Function
Public Property Set BillInterface(ByVal vNewValue As Variant)
Set m_BillInterface = vNewValue
End Property
在BOS单据的插件的show过程里加上以下语句:
https://www.wendangku.net/doc/7a17143695.html,erId = m_https://www.wendangku.net/doc/7a17143695.html,erId
Set mdlCallIndustryBill.BillInterface = m_BillInterface
https://www.wendangku.net/doc/7a17143695.html,erName = m_https://www.wendangku.net/doc/7a17143695.html,erName
在单据工具栏上加一按钮,如测试”mnuTest”,则可在
m_BillInterface_MenuBarClick事件中添加如下代码:
Call mdlCallIndustryBill.CallBills(1, 0, 0, 1) '以新增的方式打开外购入库单
Call mdlCallIndustryBill.CallBills(1, 1788, 1, 1) '以修改方式打开单据内码为
1788的外购入库单
【摘要】如何在BOS单据(供应链单据)中使用F12查看即时库存
版本:K3v10.4
问题描述:如何在BOS单据(供应链单据)中使用F12查看即时库存?
解决方法:可以在物料的值更新事件里定义“单据状态栏显示当前分录即时仓存、安全库存信息”
来变通实现。
【摘要】BOS单据下推老单据时如何处理辅助属性
版本:所有版本
问题描述:BOS单据(供应链单据)下推生成K3老单据时,生成的单据中物料辅助属性为空且不能修改,但可以保存单据,正常新增单据时辅助属性必录。如:
物资审批单(新)下推生成仓库调拨单(老),物资审批单(新)中物料
分录没有“辅助属性”字段,但仓库调拨单(老)中物料分录有“辅助属
性”,且设 为必须录入;此时,下推生成时就会出现上述问题,如何解决?解决方法:在BOS单据的单据体上加上辅助属性,并在单据转换流程的字段关联中将BOS单据的辅助属性字段带到老单据的辅助属性字段。
【摘要】开发一张BOS单据在编辑状态下能否输入一个单据号调出整张单据的信息
版本:K3v10.4
问题描述:使用BOS设计一张过磅单,现有需求:在第一次过磅后单据保存空车重量,车号等信息,在第二次过磅时能否在新增单据的状态下输入车号即能够调
出第一次过磅时保存的单据。
解决方法:可以通过在单据插件的change事件读出需调出的单据的记录集,然后给单据上各字段赋值即可。
【摘要】在生成记录凭证时相同的分录不能合并
版本:K3v10.4
问题描述:根据零售单生成凭证时,一条单据分录对应生成一余凭证分录,即便是相同的分录也不能合并,客户每天都会产生数上万条单据分录,每条分录有
三个数据来源,生成记账凭证就会产生三万条分录,即便客户能容忍如此
庞大而没有多少实际用途凭证,能保证生成凭证不会出错吗?
解决方法:已有相关补丁可供下载,补丁号是PT010561。
【摘要】如何在插件中获取单据体某个字段的值
版本:K3v10.4
问题描述:一张单据界面上有2个单据体,每个单据体都有FAct字段,应如何获得第二个单据体第一行FAct字段的值?
解决方法:假设第一单据体Fact字段的Fkey是Fact,第二个单据体的Fkey是Fact1
有三种方式来获得:
方法一:
Dim obj as bosfield
Dim tmp as double
Set obj=m_billinterface.billentrys(2).bosfields(“fact1”)
Obj.row=1;tmp=obj.value
方法二:
m_billinterface.data(“page3”)(1)(m_billinterface.tableinfo(“map”)(“fact1”))(“ffld”)
方法三:
m_BillInterface.GetFieldValue("fact1", 1, Enu_ValueType_FFLD)
【摘要】K3V10.3是否支持基础资料多选
版本:K3v10.3
问题描述:K3V10.3是否支持基础资料多选?
解决方法:支持核算项目多选,方法是在属性窗口中的功能控制中允许多选打勾即可,但
10.3不支持BOS基础资料多选(注:10.4支持BOS基础资料多选)
【摘要】BOS V10.4按单生居凭证,合并生成凭证不见了
版本:K3v10.4
问题描述:用BOS 定义一张单据后,增加了凭证字号字段,并设置了取数来源,但在操作管理里找不到"按单生成凭证","合并生成凭证" 两个功能了!此前设置
过一次,可以,后来删除了.又重新增加就没有了这两个按钮了!
解决方法:在操作管理中,工具栏上有个引入按钮,单击它调出 引出预定义操作 对话框,分别双击 "按单生成凭证","合并生成凭证",就可以加入操作列表中了。
【摘要】如何在插件中调出附件界面
版本:K3v10.4
问题描述:如何在插件中调出附件界面?
解决方法:请使用一下代码调出附件界面:
Dim obj As Object
Dim lngViewType As Long '1-查看,2-修改
Set obj = CreateObject("EBCAccessoryMgr.cAccessoryMgr")
obj.DisplayIDs lngBillType, lngBillID, ViewType
'lngBillType 为单据类型,比如外销订单为1007100;lngBillID 为单据内码,比如
1002
Set obj = Nothing
注:此段代码不支持调试,编译后直接使用没有问题。
【摘要】如何在插件中执行值更新事件
版本:K3v10.3以上版本
问题描述:在某个BOS字段上定义了值更新事件,现需求:是在插件里给这个字段赋值,是否能在插件中触发该字段的值更新事件?
解决方法:可以在给该字段赋值后,调用以下代码:
Call DoAction “fqty”,1 'fqty为该字段的关键字,1为行号
Private Sub DoAction(ByVal strKey As String, Optional ByVal Row As Long = -1)
Dim dctTemp As KFO.Dictionary, dctTempFld As KFO.Dictionary
Set dctTemp = m_BillInterface.GetFieldInfoByKey(strKey, "", 0)
Set dctTempFld = m_BillInterface.GetDataFld(dctTemp)
m_BillInterface.BillCtl.DoAction dctTemp, dctTempFld, Row
Set dctTemp = Nothing
Set dctTempFld = Nothing
End Sub
【摘要】升级至10.4后,进入BOS系统业务单据不能保存
版本:K3v10.4
问题描述:升级至10.4后,进入BOS系统修改以前建立的业务单据,系统提示单据无法保存,拒绝的权限.新建一个业务单据也是相同的提示。但在10.3中一切都
正常。
解决方法:可打补丁PT007297解决此问题。