分享一个列表查询查看多选基础资料的解决方案
目前K/3 CLoud中对于多选基础资料暂不提供列表查询和显示功能。因此二次开发可以考虑自己来实现,这里给大家一个参考示例,抛砖引玉,希望对大家有所帮助。
1、首先对于需要列表查询多选基础资料的单据,针对多选基础资料字段,增加一个相对应的辅助字段(多语言字段元素)
2、编写相应的插件,以下示例提供python示例和C#示例
C#:
通过上述处理,我们就可以变相的实现多选基础资料的查询了,实际上查询的是辅助字段,而且支持多语言。
1、首先对于需要列表查询多选基础资料的单据,针对多选基础资料字段,增加一个相对应的辅助字段(多语言字段元素)
2、编写相应的插件,以下示例提供python示例和C#示例
python:
import clr clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.DataEntity') from Kingdee.BOS.Util import * from Kingdee.BOS import LocaleValue from Kingdee.BOS.Core.Metadata import * from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.Orm.DataEntity import * from System import * def DataChanged(e): if e.Key.Equals("FMulBase", StringComparison.InvariantCultureIgnoreCase): ##获取多选基础资料数据 dataList = this.Model.GetValue("FMulBase") if dataList is None: return localValue = LocaleValue() for data in dataList: dyobj =data["FMulBase"] value = dyobj["Name"] localValue.Merger(value, ";") ##对辅助字段赋值 this.Model.SetValue("FMulLangText", localValue);
C#:
using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Orm.DataEntity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Util; namespace Kingdee.BOS.Business.PlugIn { [System.ComponentModel.Description("演示多选基础资料查询和列表显示插件")] public class DemoBillEdit:AbstractBillPlugIn { public override void DataChanged(Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e) { if (e.Key.Equals("FMulBase", StringComparison.InvariantCultureIgnoreCase)) { DynamicObjectCollection dataList = this.Model.GetValue("FMulBase") as DynamicObjectCollection; if (dataList.IsNullOrEmpty()) return; LocaleValue localValue = new LocaleValue(); foreach (var data in dataList) { LocaleValue value = (data["FMulBase"] as DynamicObject)["Name"] as LocaleValue; localValue.Merger(value, ";"); } this.Model.SetValue("FMulLangText", localValue); } } } }
通过上述处理,我们就可以变相的实现多选基础资料的查询了,实际上查询的是辅助字段,而且支持多语言。