金蝶K3 BOS插件开发手册

合集下载

金蝶二次开发 K3插件开发 指导手册(初稿)(优选.)

金蝶二次开发 K3插件开发 指导手册(初稿)(优选.)

金蝶 K/3 BOS V10.1插件开发指导手册金蝶软件(中国)有限公司2004.9目录打个小广告:金蝶二次开发技术交流QQ群①群 30121062 已满②群 28307002 未满③群待定大家共同学习共同进步1开发基础 (3)1.1插件开发概念 (3)1.2插件开发配置 (3)2开发指南 (4)2.1创建一个金蝶K/3 BOS 插件 (4)2.1.1创建一个金蝶K/3 BOS 客户端事件插件 (4)2.1.2创建一个金蝶K/3 BOS 中间层事件插件 (9)2.2自定义金蝶K/3 BOS 标准菜单、工具栏 (11)2.3添加新的菜单、工具栏 (12)2.4添加新的事件、方法 (12)2.5访问中间层和数据库 (12)2.6保存数据 (12)3参考 (13)3.1客户端插件事件、方法、属性 (13)3.2中间层插件事件 (13)3.3判断业务对象引用存储过程 (13)3.4金蝶K/3 BOS数据库结构 (13)4示例 (13)4.1XXX (13)1开发基础1.1插件开发概念金蝶K/3运行平台为金蝶K/3 BOS开发的业务单据提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持金蝶K/3 BOS架构的开放性,还为客户化开发提供了插件编程机制:通过金蝶K/3 BOS业务单据和序时簿事件代理组件,把业务单据处理的关键事件接口抛出,客户可以接收这个事件代理组件,并对组件的抛出事件编程,从而实现个性化的事件处理方法,对金蝶K/3 BOS运行平台进行有效的扩充和扩展。

需要注意的是:a) 当前版本的金蝶K/3 BOS支持的插件,仅应用在金蝶K/3的GUI版本,不支持WEB版本;b) 当前版本的金蝶K/3 BOS支持采用Microsoft Visual Basic 编写的插件,采用的类型推荐为ActiveX DLL 类型;c) 当前版本的金蝶K/3 BOS支持的插件分为客户端事件插件、中间层事件插件;在本手册中,我们所有关于金蝶K/3 BOS插件的定义、描述、示例等,都符合上述3点特征。

金蝶K3 V12.3 BOS 客户化开发工具包用户手册

金蝶K3 V12.3 BOS 客户化开发工具包用户手册
8. 呼叫中心
通过客户呼叫中心服务(Call Center),提供全面、周到的服务,快速解答客户应 用问题。
9. 个性化服务
针对企业个性化的需求,我们提供"量身定制"服务,使用一切资源,包括和合作 伙伴一道为您提供全面的应用解决方案。
10. 便利服务
金蝶不仅是解决方案的提供者,也是相关附属产品的提供者。我们提供的便利服 务不仅省去您选择的苦恼,还有利于保证相关产品和系统的兼容性和一致性。
5. 现场支持服务
我们的资深专业人员面对面地和您沟通,在运行现场对问题进行研究分析,使问 题迅速得到解决。
6. CRM 服务
借助客户关系管理系统(金蝶 EAS-CRM)我们建立了客户综合信息管理库,能够 快速地解决客户的问题并保留历史记录,以便提供长期、持续、高效的服务。
7. CSP 服务支持
金蝶公司融合多年客户服务经验与国外先进的管理思想,提炼出客户常用的和最 需要的服务为一体的 CSP 服务。它是以金蝶公司先进的科技手段和专业化的服务队伍 为依托,在业界领先推出的项目完整、功能全面的系统性服务产品。
-2-
金蝶 K/3 产品设计思想
金蝶K/3 以企业基础管理为核心设计思想,对覆盖产品(服务)价值链的业务的流 程进行全面的计划、组织、协调,及对业务的有效处理和有效控制的管理。针对战略 企业管理的特点,强调对企业基础数据、基本业务流程、内部控制、知识管理、员工 行为规范等管理,通过丰富的工具与方法有机整合并提供贯穿战略企业管理全过程所 需的决策信息,实时监控战略执行过程中的问题,帮助企业创造持续增长的核心竞争 力。
11. 合作联盟服务
我们和其它 IT 领域先导型的企业进行战略合作,为您提供企业管理咨询、系统集 成、相关知识培训等全方位的服务。在此,您不仅能得到金蝶的服务资源,也能以优 惠的条件享受金蝶合作伙伴的资源。

K3BOS培训—插件

K3BOS培训—插件

BillHeads\BillHead\BillEntrys\ BillEntry\BOSFields\BOSFiel d—单据、单据头、单据体、单据
字段操作
提纲
• • • •
插件开发概述 插件开发基础 使用数据包开发插件 其它
插件开发向导 • VB Addin • 快速构建
– 客户端单据插件 – 客户端序时簿插件 – 中间层插件
– 方法 1
• 先使用 ToolPicture 属性指定一个图标的路径 • 再调用 SetPicture([Index As Long], [MaskColor As Long]) 方 法
– Index 代表了 » 0-Normal, 1-Pressed, 2-Mouse Hover, 3-Disabled
PublicNotCreatable
– 也可直接使用,如:
lUserID = BillEventObject.K3Lib. User.ID
K3Lib 重点
– Function LoadKDString(strGBText As String, [ResourceFile As String]) As String
K/3 BOS进阶培训—插件开发
常州金蝶软件
提纲
• • • •
插件开发概述 插件开发基础 使用数据包开发插件 其它
作用
• 插件的作用
– 实现单据、序时簿、基础资料序时簿中特殊的业务流 程处理 – 中间层数据改变时的特殊处理规则 – 个性化的菜单、外观定制;增加自定义的菜单并响应 其操作 – 对审核、消息流程的自定义控制
– …….
• 完成无法通过 K/3 BOS 标准功能实现 的个性化需求
开发环境 • 插件开发环境

金蝶K3 BOS插件开发手册

金蝶K3 BOS插件开发手册

K/3 BOS插件开发手册K/3 BOS插件开发手册(版本:V12.1)金蝶软件(中国)有限公司BOS系统部K/3 BOS系统部目录概述 (1)COM (1)K3ClassEvents的对象模型 (1)使用说明 (1)K3ClassEvents的对象 (2)ListEvents对象参考 (3)DataSrv 属性 (3)EnableListFillRowEvents 属性 (4)K3Lib 属性 (5)List 属性 (6)ListEntrySort 属性 (6)ListFilterString 属性 (7)ListHeadSort 属性 (7)MenuBar 属性 (7)MultiCheckMgr 属性 (8)RsId 属性 (8)ShowMode 属性 (9)ShowMsg 属性 (9)DeleteBill 函数 (9)GetDataFldByKey 函数 (10)GetDataFld 函数 (11)GetCurrentSelRowInfo 函数 (12)GetSelectedBillInfo 函数 (13)LoadSelectedBill 函数 (14)RefreshList函数 (15)SenderMessage 函数 (15)UpdateNormalFld 函数 (16)UpdateNormalFldByKey 函数 (17)RefreshMenu 函数 (17)AfterBatchMultiCheck事件 (18)AfterBusinessCheck 事件 (18)AfterBusinessCheckEx 事件 (18)AfterCopyBillCreateData 事件 (19)AfterDeleteBill 事件 (19)AfterMergeCopyBill事件 (20)AfterMultiCheck 事件 (20)AfterMultiCheckEx 事件 (21)AfterSelList 事件 (21)AfterUnBusinessCheck 事件 (21)AfterUnBusinessCheckEx 事件 (22)AfterUnMultiCheck 事件 (22)BeforeMultiCheck 事件 (23)BeforeMultiCheckEx 事件 (24)BeforePrintBill 事件 (24)BeforeSenderMessage 事件 (25)BeforRefreshToolBar 事件 (25)BusinessCheck 事件 (26)BusinessCheckEx 事件 (26)FinishMultiCheck 事件 (26)FinishMultiCheckEx 事件 (27)ListFillRow 事件 (28)ListRowSelected 事件 (29)MenuBarClick 事件 (30)MenuBarInitialize 事件 (30)MultiCheck 事件 (30)MultiCheckEx 事件 (31)PrintSuccessful事件 (32)StartMultiCheck 事件 (32)StartMultiCheckEx 事件 (33)UnBusinessCheck 事件 (33)UnBusinessCheckEx 事件 (34)UnMultiCheck 事件 (34)UnMultiCheckEx 事件 (35)ReMultiCheck 事件 (35)ReMultiCheckEx 事件 (36)ReUnMultiCheck 事件 (36)ReUnMultiCheckEx 事件 (37)BaseClassEvent对象参考 (38)BrowseCtl 属性 (38)DataSrv 属性 (38)EnableListFillRowEvents 属性 (38)InsertNewRowAndFillOption属性 (40)K3Lib 属性 (41)ListActiveBar 属性 (41)ListEntrySort 属性 (41)ListFilterString 属性 (42)ListHeadSort 属性 (42)MenuBar 属性 (42)RsClassGroup 属性 (43)RsId 属性 (43)GetActiveCtl 函数 (43)GetSelectedClassID 函数 (44)GetSelectedClassType 函数 (45)GetSelectedItemID 函数 (45)IsSearchState 函数 (47)PitchItemByID 函数 (48)SelectClassGroupByID 函数 (48)SenderMessage 函数 (49)SetStatus函数 (50)RefreshClassGroups 方法 (50)RefreshListByClassGroupID 方法 (51)RefreshSelectedClassGroup 方法 (51)RefreshSelectedClassGroupList 方法 (52)AfterGetData 事件 (52)BeforePrintBill 事件 (53)BeforeSenderMessage 事件 (53)ClassGroupSelected 事件 (54)DeleteBillSucessful事件 (55)ListFillRow 事件 (55)ListRowSelected 事件 (57)MenuBarClick 事件 (57)MenuBarInitialize 事件 (58)RefreshList 事件 (58)BillEvent对象参考 (59)AccessoryTypeID 属性 (59)BillCtl 属性 (59)BillEntrys 属性 (59)BillHeads 属性 (60)BillHeight 属性 (60)BillName 属性 (60)BillStatus 属性 (61)BillWidth 属性 (61)CancelPrintControl属性 (62)ClassType 属性 (62)ClassTypeEntry 属性 (62)ClassTypeKey 属性 (63)Data 属性 (63)DataSrv 属性 (63)EntryPrimaryKey 属性 (64)FID 属性 (64)InsertNewRowAndFillOption属性 (65)IsDoAction 属性 (65)IsDoActionData 属性 (65)K3Lib 属性 (66)LayerCount 属性 (66)LayerNames属性 (66)MenuBar 属性 (67)ObjectID 属性 (68)ObjectType 属性 (68)OriginalFieldValue属性 (68)PrimaryKey 属性 (69)ReSaveSuccess 属性 (69)rsBillID 属性 (69)ShowType 属性 (70)TableInfo 属性 (70)TableName 属性 (70)TaskID 属性 (71)ShowMsg 属性 (71)BatchToDoActions函数 (71)DeleteEntryData 函数 (72)GetActiveCtl 函数 (73)GetActiveField 函数 (74)GetCommonControl函数 (74)GetDataFld 函数 (75)GetDataFldbyKey 函数 (76)GetFieldInfoByKey 函数 (77)GetDynamicCtlByKey函数 (78)GetFieldValue 函数 (78)GetToolIndex 函数 (79)GetVariable函数 (80)InsertNewRowAndFill 函数 (81)IsChange 函数 (82)IsFileNeedFilter 函数 (82)LockBill 函数 (83)RefreshBill 函数 (83)SenderMessage 函数 (84)SetDecimal 函数 (84)SetFieldSumValue函数 (85)SetFieldValue 函数 (85)SetSumDecimal 函数 (87)SetText 函数 (87)SetTypeFloatMax 函数 (88)SetTypeFloatMin 函数 (88)ShowHideField 函数 (89)ShowHideGrid 函数 (90)Sum 函数 (90)UpdateLookFld 函数 (91)UpdateNormalFld 函数 (91)DoAction 方法 (92)IsDoActionByKey 方法 (92)RemoveRow 方法 (93)SaveBill 方法 (94)SetActiveTab方法 (94)SetBillFormCaption 方法 (95)SetCaption 方法 (95)SetGridMaxRows方法 (96)SetStatus 方法 (96)SetActiveCell 方法 (97)SetBillWindowState方法 (97)SetRowsPerRequest方法 (98)SetStateStampPicture方法 (98)SetStatusBarInfo方法 (99)SetVariable函数 (99)SizeBillControl方法 (100)AddNewRow 事件 (100)AfterBusinessCheck 事件 (101)AfterBusinessCheckEx 事件 (101)AfterCopyBill 事件 (101)AfterDeleteRow 事件 (102)AfterDoAction 事件 (102)AfterFillRow 事件 (103)AfterFirstNewBill 事件 (103)AfterInputBillSetSumData 事件 (104)AfterLoadBill 事件 (104)AfterLoadBillSetSumData 事件 (104)AfterLoadDynamicCtl事件 (105)AfterMergeCopyBill 事件 (105)AfterMultiCheck 事件 (105)AfterMultiCheckEx 事件 (106)AfterNewBill 事件 (106)AfterNewEmptyData 事件 (107)AfterSave 事件 (107)AfterSelBill 事件 (107)AfterSelBillBeforeFillData 事件 (108)AfterStockQuery事件 (108)AfterUnBusinessCheck 事件 (108)AfterUnBusinessCheckEx 事件 (108)AfterUnMultiCheck 事件 (109)AfterUnMultiCheckEx 事件 (109)BeforeDeleteRow事件 (110)BeforeDoAction 事件 (110)BeforeLoadBill 事件 (112)BeforeMultiCheck 事件 (112)BeforePrintBill 事件 (113)BeforeSave 事件 (114)BeforeSelBills 事件 (114)BeforeSelBillShowFilter 事件 (114)BeforeSenderMessage 事件 (115)BeforeSetMutilSelData事件 (116)BeforeSetMutilSelData2事件 (116)BeforeVerify 事件 (117)BeforeWindowExit事件 (117)BeforLoadBillFillData 事件 (117)BeginEdit 事件 (118)BusinessCheck 事件 (118)BusinessCheckEx 事件 (118)Change 事件 (119)CommandClick事件 (119)EntryFieldChanged事件 (120)FinishMultiCheck 事件 (120)FinishMultiCheckEx 事件 (121)GetFocus 事件 (121)HeadCtlClick 事件 (122)LostFocus 事件 (122)MenuBarClick 事件 (122)MenuBarInitialize 事件 (123)MultiCheck 事件 (123)MultiCheckEx 事件 (124)ReMultiCheck 事件 (125)ReMultiCheckEx 事件 (125)ReUnMultiCheck 事件 (125)ReUnMultiCheckEx 事件 (126)SaveBillFailed 事件 (126)SaveBillSuccess事件 (127)SSTabClick事件 (127)StartMultiCheck 事件 (127)StartMultiCheckEx 事件 (128)UnBusinessCheck 事件 (128)UnBusinessCheckEx 事件 (129)UnMultiCheck 事件 (129)UnMultiCheckEx 事件 (130)Verify 事件 (130)K3Lib对象参考 (132)Account 属性 (132)Net 属性 (133)User 属性 (133)CreateK3Object 函数 (137)GetData 函数 (138)GetK3Language 函数 (139)LoadKDString 函数 (140)UpdateData 方法 (142)GetStockQty 函数 (142)LookUpClass函数 (143)LoadBill 方法 (145)LoadList方法 (145)AccountID 属性 (147)AccountName 属性 (147)SetupType 属性 (147)Net对象参考 (149)BeginMutex 函数 (149)CommitMutex 函数 (149)QueryFunc 函数 (150)QuerySubSys 函数 (150)User对象参考 (151)UserID 属性 (151)UserName 属性 (151)MenuBar对象参考 (152)MenuBar 对象结构图 (152)ActiveBand 属性 (153)BOSBands 属性 (153)BOSTools 属性 (154)Refresh 方法 (154)BOSBands对象参考 (155)Count 属性 (155)Item 属性 (155)Add 函数 (155)Remove 方法 (156)RemoveAll 方法 (156)BOSBand对象参考 (157)BandName 属性 (157)BandType 属性 (157)BOSTools 属性 (157)Caption 属性 (157)CurrentTool 属性 (158)DockingArea 属性 (158)DockingOffset 属性 (158)DockLine 属性 (159)Flags 属性 (159)Visible 属性 (159)Refresh 方法 (160)BOSTools对象参考 (161)Count 属性 (161)Item 属性 (161)Add 函数 (161)GetFreeToolID 函数 (162)InsertAfter 方法 (162)InsertBefore 方法 (163)Remove 方法 (163)RemoveAll 方法 (164)BOSTool对象参考 (165)Alignment 属性 (165)BeginGroup属性 (165)Caption 属性 (165)CaptionPosition 属性 (166)Checked 属性 (166)Default 属性 (166)Description 属性 (167)Enabled 属性 (167)ShortcutKey 属性 (167)Style 属性 (170)SubBand 属性 (170)Tag 属性 (170)ToolID 属性 (170)ToolName 属性 (171)ToolPicture 属性 (171)TooltipText 属性 (171)Visible 属性 (171)PasteToolFace 方法 (171)SetPicture 方法 (172)BillHeads\BillHead\BillEntrys\BillEntry\BOSFields\BOSField对象参考 (174)MenuBar 对象结构图 (174)BillHeads对象参考 (175)Count 属性 (175)Item 属性 (176)BillHead对象参考 (177)BOSFields 属性 (177)BillEntrys对象参考 (178)Count 属性 (178)Item 属性 (179)BillEntry对象参考 (180)BOSFields 属性 (180)EntryHeight 属性 (180)EntryLeft 属性 (180)EntryTop 属性 (180)EntryType 属性 (181)EntryWidth 属性 (181)KeyField 属性 (181)Layer 属性 (181)MaxRows 属性 (182)TableName 属性 (182)Visible 属性 (182)AddRow 方法 (182)RemoveRow 方法 (183)BOSFields对象参考 (184)Count 属性 (184)Item 属性 (184)BOSField对象参考 (185)Caption 属性 (185)FieldHeight 属性 (185)FieldLeft 属性 (185)FieldLock 属性 (185)FieldName 属性 (186)FieldTop 属性 (186)FieldWidth 属性 (186)Filter 属性 (186)FKey 属性 (186)FontBold 属性 (187)FontItalic 属性 (187)FontName 属性 (187)FontSize 属性 (187)FrameBorder 属性 (188)FrameBorderColor 属性 (188)LabelColor 属性 (188)LabelWidth 属性 (188)Layer 属性 (188)MustInput 属性 (189)NeedSave 属性 (189)Note 属性 (189)Number 属性 (189)Page 属性 (189)Row 属性 (190)TableName 属性 (190)Text 属性 (190)TextColor 属性 (190)Value 属性 (190)SetFieldSumValue方法 (191).Net (192)基础配置 (192)开发环境 (192)使用说明 (192)引用 (192)插件跟踪 (192)K3ClassEvents的对象模型 (193)K3ClassEvents的对象 (193)ListEvents对象参考 (194)事件声明 (194)AfterCopyBillCreateData 事件 (195)OnBarInitialize事件 (195)AfterShowBill事件 (195)OnBarItemClick事件 (196)ShowBill函数 (196)AspxGetSelectList函数 (197)AddBarItem函数 (197)AddBarItemLink函数 (198)SetBarItemProperty函数 (199)AddBarItemLink函数 (199)RemoveBarItem函数 (200)RemoveBarItemLink函数 (200)BillName 属性 (201)ClassType 属性 (201)ClassTypeEntry 属性 (202)ClassTypeKey 属性 (202)PrimaryKey 属性 (202)EntryPrimaryKey 属性 (203)TableInfo 属性 (203)TableName 属性 (203)BillEvent对象参考 (205)事件声明 (205)OnBarInitialize事件 (206)OnBarItemClick事件 (207)AfterNewBill 事件 (207)BeforLoadBillFillData事件 (207)AfterLoadBill事件 (207)AfterShowBill 事件 (208)AfterConfirm事件 (208)AfterF7Select事件 (208)Change 事件 (209)BeforeSave 事件 (209)AddBarItem函数 (210)AddBarItemLink函数 (211)GetBarItemProperty函数 (211)SetBarItemProperty函数 (212)AddBarItemLink函数 (212)RemoveBarItem函数 (213)RemoveBarItemLink函数 (213)Alter函数 (214)Confirm函数 (214)GetFieldValue函数 (215)GetRequest函数 (216)LockCell函数 (216)LockWebTabItem函数 (217)SaveBill函数 (218)SetFieldValue函数 (218)ShowBill函数 (219)ShowF7Select函数 (220)BillName 属性 (221)ClassType 属性 (221)ClassTypeEntry 属性 (221)ClassTypeKey 属性 (222)PrimaryKey 属性 (222)EntryPrimaryKey 属性 (222)TableInfo 属性 (223)TableName 属性 (223)CurBillID属性 (224)BillHeads对象参考 (225)Count 属性 (225)Item 属性 (225)BillHead对象参考 (226)BOSFields 属性 (226)BillEntrys对象参考 (227)Count 属性 (227)Item 属性 (227)BillEntry对象参考 (228)BOSFields 属性 (228)EntryHeight 属性 (228)EntryIndex 属性 (228)EntryLeft 属性 (228)EntryTop 属性 (228)EntryType 属性 (229)EntryWidth 属性 (229)KeyField 属性 (229)TableName 属性 (230)Visible 属性 (230)BOSFields对象参考 (231)Count 属性 (231)Item 属性 (231)BOSField对象参考 (232)Caption 属性 (232)FieldHeight 属性 (232)FieldLeft 属性 (232)FieldLock 属性 (232)FieldName 属性 (233)FieldTop 属性 (233)FieldWidth 属性 (233)Filter 属性 (233)FKey 属性 (233)FontBold 属性 (234)FontItalic 属性 (234)FontName 属性 (234)FontSize 属性 (234)FrameBorder 属性 (235)FrameBorderColor 属性 (235)LabelColor 属性 (235)LabelWidth 属性 (235)Layer 属性 (235)MustInput 属性 (236)NeedSave 属性 (236)Note 属性 (236)Number 属性 (236)Page 属性 (236)Row 属性 (237)TableName 属性 (237)Text 属性 (237)TextColor 属性 (237)Value 属性 (237)Visible 属性 (238)用户场景 (239)需求 (239)总体需求 (239)需求分解 (240)详细需求 (241)单据信息 (241)单据流程 (243)多级审核 (244)设计和实现 (245)单据数据结构设计 (245)单据头 (245)单据体 (247)字段的过滤条件 (250)BOS IDE中设置过滤条件 (250)通过SQL更新字段的过滤条件 (252)Action设置 (253)自动生成Action (253)手动添加Action (256)单据流程 (258)【销售订单】下推生成【产品入库通知单】 (258)练习一下 (262)多级审核 (264)多级审核设置 (264)凭证功能 (265)设置凭证数据来源 (265)操作管理 (266)插件开发 (269)部署 (270)发布到主控台 (270)制作部署文件 (272)概述为了实现客户个性化的需求和保持K/3 BOS架构的开放性,K/3 BOS提供了插件编程,有效的扩展了K/3 BOS平台,K/3 BOS插件编程是通过K3ClassEvents对象代理实现的。

金蝶 K3 BOS 插件开发指导手册(初稿)

金蝶 K3 BOS 插件开发指导手册(初稿)

金蝶 K/3 BOS V10.1插件开发指导手册金蝶软件(中国)有限公司2004.9目录1开发基础 (3)1.1插件开发概念 (3)1.2插件开发配置 (3)2开发指南 (4)2.1创建一个金蝶K/3 BOS 插件 (4)2.1.1创建一个金蝶K/3 BOS 客户端事件插件 (4)2.1.2创建一个金蝶K/3 BOS 中间层事件插件 (9)2.2自定义金蝶K/3 BOS 标准菜单、工具栏 (11)2.3添加新的菜单、工具栏 (12)2.4添加新的事件、方法 (12)2.5访问中间层和数据库 (12)2.6保存数据 (12)3参考 (13)3.1客户端插件事件、方法、属性 (13)3.2中间层插件事件 (13)3.3判断业务对象引用存储过程 (13)3.4金蝶K/3 BOS数据库结构 (13)4示例 (13)4.1XXX (13)1开发基础1.1插件开发概念金蝶K/3运行平台为金蝶K/3 BOS开发的业务单据提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持金蝶K/3 BOS架构的开放性,还为客户化开发提供了插件编程机制:通过金蝶K/3 BOS业务单据和序时簿事件代理组件,把业务单据处理的关键事件接口抛出,客户可以接收这个事件代理组件,并对组件的抛出事件编程,从而实现个性化的事件处理方法,对金蝶K/3 BOS运行平台进行有效的扩充和扩展。

需要注意的是:a) 当前版本的金蝶K/3 BOS支持的插件,仅应用在金蝶K/3的GUI版本,不支持WEB版本;b) 当前版本的金蝶K/3 BOS支持采用Microsoft Visual Basic 编写的插件,采用的类型推荐为ActiveX DLL 类型;c) 当前版本的金蝶K/3 BOS支持的插件分为客户端事件插件、中间层事件插件;在本手册中,我们所有关于金蝶K/3 BOS插件的定义、描述、示例等,都符合上述3点特征。

1.2插件开发配置开发、调试金蝶K/3 BOS插件,需要安装:a) 金蝶K/3 客户端部件b) 金蝶K/3 BOSc) Microsoft Visual Basic(推荐使用v6.0 版本,并且安装SP5)另外,如果要通过插件在K/3 BOS标准单据、序时簿界面上增加菜单、工具条,还需要安装:d) Data Dynamics ActiveBar ActiveX v1.0.6.5同时,我们推荐:a) 采用Microsoft Windows 2000 Server(及以上版本)等Server类操作系统作为开发、调试操作系统;b) 在该操作系统上安装Microsoft SQL Server 2000数据库;c) 在该操作系统上安装金蝶K/3 客户端部件、金蝶K/3 中间层部件、金蝶K/3BOS;这样,我们就可以同时开发、调试金蝶K/3 BOS客户端事件插件和金蝶K/3 BOS中间层插件了。

第二节 K3 BOS 详解

第二节  K3 BOS 详解

适应多种语言环境
主要功能
能够定义中文简体、中文繁体、 英语等三种语言操作界面
客户价值
适应国际化企业管理的需要 适应不同人员的语言习惯与操作 方式
P18
版权所有 ©1993-2006 金蝶软件(中国)有限公司
部署与发布
主要功能
把业务功能发布至主控台或生 成安装包
客户价值
可以生成主控台菜单,统一访问 的方式 生成的安装包可以部署到其他账 套,实现开发环境与运行环境的 分离
特殊的文本类型,提供业务对 象的备注说明。
提供复选功能。
提供下拉列表字段支持,下拉 列表的值提供手工指定与SQL查 询获取两种形式。
提供图形的显示。
版权所有 ©1993-2006 金蝶软件(中国)有限公司
业务单据定义-字段类别2
分类
元素类型
基础资料类 基础资料
前置字段

可录入

基础资料属性 基础资料
P13
版权所有 ©1993-2006 金蝶软件(中国)有限公司
多级审核流程、消息定义
主要功能
对业务单据可以提供12级的多 级审核流程,审核消息可以发送 至指定的用户、用户组或默认用 户
客户价值
满足给客户顺序、会签两种多级 审批业务需求,便于客户对业务 进行分级管理和业务监控。 消息驱动多级审核流程,可以简 化审批的工作量并降低操作的复 杂性
前置字段 可录入








有字段参与组合 是




说明
单据的单据体,可以是单分录,也可 以是多分录。
提供单据编号服务,用户可以设置单 据编号规则及自动填补断号等选项。

用C++Builder开发金蝶K3BOS单据插件

用C++Builder开发金蝶K3BOS单据插件

用C++Builder写K/3 单据插件一、BOS 单据插件的开发1、新建一个工程,在“New Items”窗口中选择“ActiveX Library”,然后点击“OK”按钮。

这样系统会生成一个具有类型库的DLL工程,如下图所示:2、先保存工程,然后向工程中引入K3ClassEvents.dll类型库信息,类型库信息没有必要每个工程都重新引入,我们可以把引入类型库信息时生成的_tlb.cpp文件和_ocx.cpp文件保存到一个单独的文件夹中,以后新建工程时直接向工程中添加这些文件即可,在引入类型库信息时一定要选中“Generate Component Wrappers ”选项以生成包装组件,这样我们就不需要单独处理事件槽,本文档就是以这种方法进行插件编写,步骤如下:3、类型库单元文件生成后向工程中添加生成的单元文件,由于在引入K3ClassEvents 类型库时,其依赖的相关类型库信息也会同时引入,因此向工程中添加单元文件时也需添加相关的单元文件,需向工程中添加的单元文件见下图:4、向工程中添加自动化对象类,一般来说每个自动化对象类对应一张BOS单据并响应单据上的事件,添加自动化类的过程如下图所示:5、在接口实现类中定义TBillEvent*类型的私有变量,以用来实例化单据事件对象,示例代码如下:6、向类的实现接口中增加成员函数Show,其参数类型见下图:Show函数是最重要的函数,由VB调用因此Show函数在函数声明中须放在Public部分,在Show函数中主要完成三件工作:实例化单据接口对象,将实例化对象的事件与事件处理函数进行关联,将实例化对象连接到Show函数传递过来的派发接口上,Show函数的示例代码如下图:7、在实现函数类中增加折构函数,以便在单据关闭时调用折构函数删除创建的实例对象,释放内存。

折构函数的示例代码如下:8、事件处理函数的原型可以在”K3ClassEvents_OCX.cpp”中找到,复制过来稍做调整即,相关示例代码如下:9、最后编译工程生成.dll插件,先将插件在Windows注册表中注册然后在BOS集成开发工具的单据中引用即可。

金蝶K3BOS插件开发常见技巧

金蝶K3BOS插件开发常见技巧

1、如何在工具栏上添加多级审核的按钮?在m_BillInterface_MenuBarInitialize 事件里添加如下代码即可.Set oTool = m_BillInterface.MenuBar.BOST001s("mnuEditMultiCheck")With oTool.Caption =" 多级审核".ToolTipText =" 多级审核".Description =" 多级审核".BeginGroup = False.ToolPicture = App.Path + "\Checker.bmp".SetPicture 0, vbButtonFaceEnd WithSet oBand = oMenuBar.BOSBands("BandToolBar")oBand.BOSTools.InsertBefore "mnuFilePrint", oTool ' 将菜单对象插入指定工具栏2、如何在显示一张Bos单据的同时给它赋值?要想在显示Bos单据的同时给它赋值,关键是在显示前要购建m_Billinterface 的data包,这样在显示这张同据的时候,程序会解析data包,并将里面的值赋到单据界面上来.Dim dctData As kfo.DictionaryDim datasrv as objectDim oTableinfo as objectSet DataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv") DataSrv.ClassTypeID = lClassTypeID 'lClassTypeID 需要弹出单据的IDSet oTableInfo = DataSrv.TableInfoSet dctData = DataSrv.GetEmptyBill ' 然后将当前单据数据包中需要的数据填充到dctdata的对应字段’在以上语句执行后,dctdata( "page2")里只有一行表结构(即表体只有一行)'赋表头的值dctData("Page1")(oTableinfo("map")("FText"))("FFLD") = m_BillInterface.GetFieldValue("FText")dctData("Page1")(oTableinfo("map")("FDeptID"))("FFLD") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FFLD)dctData("Page1")(oTableinfo("map")("FDeptID"))("FFND") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FFND)dctData("Page1")(oTableinfo("map")("FDeptID"))("FDSP") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FDSP)'赋表体的值Dim oPage2 As ObjectFor i = 1 To m_BillInterface.Data("Page2").UBound - 1Set oPage2 = dctData("Page2")(1).CloneAlldctData("Page2").Add oPage2 '添力口至U dcDatadctData("Page2")(i + 1)(oTableinfo("map")("FIndex2"))("FFLD") = i + 1更改分录号NextFor i = 1 To m_BillInterface.Data("Page2").UBound' 物料FItemIDdctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FFLD")m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FFLD) dctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FDSP")m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FDSP) dctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FFND")m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FFND)' 物料名称fbasepropertydctData("page2")(i)(oTableinfo("map")("fbaseproperty"))("FFLD")m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")("fbaseproperty"))("FDSP")m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")("fbaseproperty"))("FFND")m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FFND)' 计量单位FUnitIDdctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFLD")m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFLD) dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FDSP")m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FDSP) dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFND")m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFND)' 数量FQtydctData("Page2")(i)(oTableinfo("map")("FQty"))("FFLD") m_BillInterface.GetFieldValue("fqty", i, Enu_ValueType_FFLD)NextSet obj = CreateObject("K3SingleClassBill.ClassInfoManager")With obj.datasrv = datasrv.ISCheckRight = True .Show , , , dctData End With3、如何在插件中实现选单的功能?调用Bos单据m_BillInterface.BillCtl.DoSelBill lClassTypeID'( 原单的ClassTypeID)调用工业单据m_BillInterface.BillCtl.DoSe101dBill lClassTypeID '( 原单的ClassTypeID)4、在插件中以新增、修改和查看方式翻开另一单据,********************************************’功能:显示B0环据,显示的方式为新增、修改和浏览'参数:lClassTypeID 一显示B0环据的ID ' '********************************************Private Sub ShowBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oBill As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK/30bject("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeIDSet oBill = CreateObject("K3SingleClassBill.ClassInfoManager") With oBill.DataSrv = oDataSrv.ISNetControl = True.I SCheckRight = 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 WithSet oDataSrv = NothingSet oBill = NothingExit Sub err_ctr:Set oDataSrv = Nothing Set oBill = NothingEnd Sub5、显示BOS序时簿并返回选中的值,********************************************’功能:显示BO时时簿并返回选中的值'参数:lClassTypeID 一显示BO环据的ID ' '********************************************Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object Dim objLookup As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")oDataSrv.ClassTypeID = lClassTypeID If oDataSrv.showfilter ThenSet objLookup = CreateObject("K3ClassLookUp.BillLookUp") objLookup.ClassTypeID = lClassTypeID Set objLookup.DataSrv = oDataSrvobjLookup.LookupSet ShowListByReturn = objLookup.VectReturnEnd IfSet oDataSrv = NothingSet objLookup = NothingExit Function err_ctr:Set oDataSrv = NothingSet objLookup = NothingEnd Function6、如何在序事簿中得到选中行的记录集值?Dim vectSelect as kfo.vectorDim rs as adodb.recordsetSet vectSelect=m_Listinterface. GetSelectedBillInfoSet rs=m_Listinterface.datasrv. GetBillDetail(vectSelect(1)("FID"))7、将当前单据转化为另一单据,并无界面保存数据,********************************************’功能:将当前单据转化为另一单据,并无界面保存数据'参数:lClassTypeID 一显示BO环据的ID'********************************************Private Sub NoUISaveBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oTableInfo As ObjectDim oBill As ObjectDim oData As ObjectDim oSrv As ObjectDim oPage2 As ObjectDim i As LongOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")oDataSrv.ClassTypeID = lClassTypeIDSet oTableInfo = oDataSrv.TableInfoSet oData = oDataSrv.GetEmptyBillFor i = 1 To m_BillInterface.Data("Page2").UBound - 1Set oPage2 = oData("Page2")(1).CloneAlloData("Page2").Add oPage2 ' 添加到dcDataoData("Page2")(i + 1)("_-0001_FIndex2")("FFLD") = i + 1 ' 更改分录号NextFor i = 1 To m_BillInterface.Data("Page2").UBoundoData("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)NextSet oSrv = CreateObject("K3MClass.BillUpdate")i = oSrv.Save(MMTS.PropsString, oDataSrv.ClassType, oDataSrv.ClassTypeEntry,oDataSrv.TableInfo, oData, oDataSrv.dctLink)Set oDataSrv = NothingSet oBill = NothingExit Suberrctr:MsgBox Err.DescriptionSet oDataSrv = NothingSet oBill = NothingEnd 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、使用此方法时插件要添加MMTS8、如何在插件中获取当前系统字符连接串?一、连接串获取方式:(注意不支持调试,调试的话可以用实际连接串代替)Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessID"() As Long ’获取连接串Public Function GetPropsString() As StringDim lProc As LongDim spmMgr As ObjectIProc = GetCurrentProcessIdSet spmMgr = CreateObject("PropsMgr.ShareProps")GetPropsString = spmMgr.GetProperty(lProc, "PropsString")End Function.、需要申请MMTS.bas的源彳弋码,还需要申请ICKDListener的接口.另外,如果需要调试程序,就还需要申请KDMain的源代码.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档