#使用技巧# K3Cloud BOS 设计 Python & C# 表单、列表插件查看单据

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

#使用技巧# K3Cloud  BOS 设计 Python & C# 表单、列表插件查看单据

@[TOC](K3Cloud BOS 设计 Python & C# 表单、列表插件查看单据) > > ***强调:*** ==`C#`中使用`this`关键字的,在C#语法中,是可以省略的,但是在 `Python`中,`this`一定要加上!!!== > > > >**知识点:** > 1. 在表单中,查看源单、基础资料、或者其他单据 > 2. 在表单分录中,基础资料显示链接,只有在列表中可以显示链接 > 3. 在表单分录中,文本显示链接实现 [官方文章有说明](https://wenku.my7c.com/article/89775201851601408?productLineId=1&isKnowledge=2) > # 1.场景 > 1. 不喜欢用 【上查】【下查】功能,比较麻烦 > 2. 二开单据中,使用文本存储单据编号、物料编码等 > 3. 在表单分录中,物料无法直接查看内容(只能在列表点开链接、或者编辑时打开链接) > 4. 在列表中,使用文本存储单据编号、物料编码等 # 2.方案 ==方案中,我写的formId不符合开发规则,大家不要学我哈== > 1. 单据头中:文本字段,附近增加按钮,可以点击查看单据或者资料信息 > 2. 单据体中:使用双击事件,查看信息 > 3. 列表界面:设置文本显示链接,点击链接查看表单 ## 1.单据头,增加按钮 打开表单 ![image.webp](/download/0100f5245cb3366d4e09acaedb854e57ef84.webp)![Alt text](./1669281009283.webp) ### C# 实现 ```csharp /// <summary> /// 查看表单 /// </summary> /// <param name="view">this.View</param> /// <param name="form_id">单据唯一标识</param> /// <param name="pkId">单据主键Id值</param> public static void Show_BillFrm(IDynamicFormView view, string form_id, string pkId) { var showParam = new BillShowParameter() { Context = view.Context, FormId = form_id, Status = OperationStatus.VIEW, // VIEW 查看模式 EDIT 编辑模式 PermissionItemId = PermissionConst.View, PKey = pkId, PageId = Guid.NewGuid().ToString(), ParentPageId = view.PageId }; view.ShowForm(showParam); } public override void ButtonClick(ButtonClickEventArgs e) { base.ButtonClick(e); if (e.Key == "F_VBMP_BUTTON")// F_VBMP_BUTTON,按钮标识 { var billNo = this.Model.GetValue("FJFBILLNO"); if (!billNo.IsNullOrEmptyOrWhiteSpace()) { var formId = "k50abce840fe94c8a853cb6787c071d99";// 单据标识,我这写的不标准。。 var requisitionMetadata = (FormMetadata)MetaDataServiceHelper.Load(this.Context, formId); var select_Infos = new List<SelectorItemInfo>(); select_Infos.Add(new SelectorItemInfo("FID"));// var oqFilter = OQLFilter.CreateHeadEntityFilter(string.Format("FBillNo = '{0}'", billNo));// 过滤器,按 sql 语法即可 var objs = BusinessDataServiceHelper.Load(this.Context, requisitionMetadata.BusinessInfo, select_Infos,oqFilter); if (objs != null && objs.Count() > 0) { var pkId = objs[0]["Id"].ToString(); Show_BillFrm(this.View, formId, pkId.ToString()); } } } } ``` ### Python 实现 ```Python def Show_BillFrm(form_id, pkId): showParam = BillShowParameter() # 打开表单 showParam.Context = this.Context showParam.FormId = form_id showParam.Status = OperationStatus.VIEW # VIEW 查看模式 EDIT 编辑模式 showParam.PKey = pkId showParam.PageId = Guid.NewGuid().ToString() showParam.ParentPageId = this.View.PageId this.View.ShowForm(showParam) def ButtonClick(e): if (e.Key == "F_VBMP_BUTTON"): billNo = this.Model.GetValue('FJFBILLNO') if billNo != '': formId = "k50abce840fe94c8a853cb6787c071d99" requisitionMetadata = MetaDataServiceHelper.Load(this.Context, formId) select_Infos = List[SelectorItemInfo]() select_Infos.Add(SelectorItemInfo("FID")) oqFilter = OQLFilter.CreateHeadEntityFilter("FBillNo='{0}'".format(billNo)) objs = BusinessDataServiceHelper.Load(this.Context, requisitionMetadata.BusinessInfo, select_Infos, oqFilter) pkId = objs[0]["Id"].ToString() Show_BillFrm(formId, pkId) ``` ## 2.单据体,明细增加双击 打开表单 > 1. 基础资料,在表单分录中,无法显示链接 ### C# 实现 ```csharp public override void EntityRowDoubleClick(EntityRowClickEventArgs e) { base.EntityRowDoubleClick(e); if (Model.OpenParameter.Status != OperationStatus.EDIT) // 根据单据状态 设置允许双击 { if (e.ColKey == "FMATID") { var formId = "PLM_PDM_1010000000000000000"; var requisitionMetadata = (FormMetadata)MetaDataServiceHelper.Load(this.Context, formId); var pkId = (this.Model.GetValue(e.ColKey, 0) as Kingdee.BOS.Orm.DataEntity.DynamicObject)["Id"];// 获取基础资料Id Show_BillFrm(this.View, formId, pkId.ToString()); } } } ``` ### Python 实现 ``` python def EntityRowDoubleClick(e): if (e.ColKey == "FMATID"): formId = "PLM_PDM_1010000000000000000"; requisitionMetadata = MetaDataServiceHelper.Load(this.Context, formId) mt = this.Model.GetValue(e.ColKey, e.Row) if mt is not None: pkId = mt["Id"] Show_BillFrm(formId, pkId.ToString()) ``` ## 3.列表界面 点击查看表单 ### C# 实现 ```csharp public override void EntryButtonCellClick(EntryButtonCellClickEventArgs e) { base.EntryButtonCellClick(e); if (e.FieldKey == "FJFBILLNO") { var formId = "k50abce840fe94c8a853cb6787c071d99";// 单据唯一标识 var metadata = (FormMetadata)MetaDataServiceHelper.Load(this.Context, formId); var billNo = ListView.SelectedRowsInfo[0].DataRow[e.FieldKey].ToString(); var objs = BusinessDataServiceHelper.Load(this.Context, metadata.BusinessInfo, new List<SelectorItemInfo>(new[] { new SelectorItemInfo("FID") }), OQLFilter.CreateHeadEntityFilter($"FBillNo='{billNo}'")); if (objs == null || objs.Length == 0) { return; } var pkId = objs[0]["Id"].ToString(); Show_BillFrm(this.View, formId, pkId); } } ``` ### Python 实现 ```python def EntryButtonCellClick(e): if (e.FieldKey == "FJFBILLNO"): formId = "k50abce840fe94c8a853cb6787c071d99"; requisitionMetadata = MetaDataServiceHelper.Load(this.Context, formId); billNo = this.ListView.SelectedRowsInfo[0].DataRow[e.FieldKey].ToString(); select_Infos = List[SelectorItemInfo]() select_Infos.Add(SelectorItemInfo("FID")) qq_filter = OQLFilter.CreateHeadEntityFilter("FBillNo='{0}'".format(billNo)) objs = BusinessDataServiceHelper.Load(this.Context, requisitionMetadata.BusinessInfo, select_Infos, qq_filter); pkId = objs[0]["Id"].ToString() Show_BillFrm(formId, pkId) ``` > **本文知识点:** > 根据编号,获取基础资料包、或者单据包, > ==本文方案 是已知编码,根据编码查看单据,如果有FID,就无需根据编码获取数据包,直接使用FID和FormId即可== > ```python > requisitionMetadata = MetaDataServiceHelper.Load(this.Context, formId); > billNo = this.ListView.SelectedRowsInfo[0].DataRow[e.FieldKey].ToString(); > select_Infos = List[SelectorItemInfo]() > select_Infos.Add(SelectorItemInfo("FID")) > qq_filter = OQLFilter.CreateHeadEntityFilter("FBillNo='{0}'".format(billNo)) > objs = BusinessDataServiceHelper.Load(this.Context, requisitionMetadata.BusinessInfo, select_Infos, qq_filter); > ```

Show_BillFrm    大神这个是个类还是个啥,需要引用?


MetaDataServiceHelper 和BusinessDataServiceHelper 这个报错了怎么办


明天研究看,这个  可以用的吗



感谢大神

#使用技巧# K3Cloud BOS 设计 Python & C# 表单、列表插件查看单据

@[TOC](K3Cloud BOS 设计 Python & C# 表单、列表插件查看单据)> > ***强调:*** ==`C#`中使用`this`关键字的,在C#语法中,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息