选单.常见问题.选单报错 OrmLocaleValue 转换到 Int64 失败

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

选单.常见问题.选单报错  OrmLocaleValue 转换到 Int64 失败

【常见问题】选单报错 OrmLocaleValue 转换到 Int64 失败 ![image.webp](/download/0100097ea7291a9c471caa8aedda7b157e5a.webp) 原因:选单时会对数据包做基础资料引用加载,会检测整个单据数据包,用到基础资料的部分都会取缓存;当基础资料数据包异常时就会出现这个问题,异常的原因通常为 基础资料数据包和引用字段不匹配导致 【问题演示和修正的代码处理逻辑】 ```csharp using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; namespace DynamicFormPlugIn.Test { [Kingdee.BOS.Util.HotUpdate] public class TestFormPlugIn_DrawError : AbstractBillPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { if (string.Equals(e.BarItemKey, "tb_SelectBaseError", StringComparison.OrdinalIgnoreCase)) { ResetBaseDataError(); } else if(string.Equals(e.BarItemKey, "tb_SelectBaseTrue", StringComparison.OrdinalIgnoreCase)) { ResetBaseDataTrue(); } } public string fieldKey = "F_BHR_Base_qtr"; public object pkId = 135705; /// <summary> /// 异常的基础资料数据包赋值 /// </summary> public void ResetBaseDataError() { var billDataObj = this.Model.DataObject; var field = this.View.BillBusinessInfo.GetField(fieldKey) as Kingdee.BOS.Core.Metadata.FieldElement.BaseDataField; View.Model.SetValue(fieldKey, null); //获取全量元数据的数据包 var baseDataFormMeta = Kingdee.BOS.ServiceHelper.MetaDataServiceHelper.Load(this.Context, "BD_Stock") as Kingdee.BOS.Core.Metadata.FormMetadata; var baseDataObj = GetBaseData(pkId, baseDataFormMeta.BusinessInfo.GetDynamicObjectType()); //使用全量的基础资料数据包给基础资料赋值 View.Model.SetValue(fieldKey, baseDataObj); View.UpdateView(fieldKey); } /// <summary> /// 正确的基础资料数据包赋值 /// </summary> public void ResetBaseDataTrue() { var billDataObj = this.Model.DataObject; var field = this.View.BillBusinessInfo.GetField(fieldKey) as Kingdee.BOS.Core.Metadata.FieldElement.BaseDataField; View.Model.SetValue(fieldKey, null); //获取字段匹配的引用片段数据包 var baseDataObj = GetBaseData(pkId, field.RefFormDynamicObjectType); //使用全量的基础资料数据包给基础资料赋值 View.Model.SetValue(fieldKey, baseDataObj); View.UpdateView(fieldKey); } public Kingdee.BOS.Orm.DataEntity.DynamicObject GetBaseData(object pkId, Kingdee.BOS.Orm.Metadata.DataEntity.DynamicObjectType objType) { var baseDataObj = Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.LoadSingle(this.Context, pkId, objType); return baseDataObj; } } } ``` ![20240201 1919.webp](/download/0100e5ab151c96864a6d805efb72628ac8f8.webp)

选单.常见问题.选单报错 OrmLocaleValue 转换到 Int64 失败

【常见问题】选单报错 OrmLocaleValue 转换到 Int64 失败![image.webp](/download/0100097ea7291a9c471caa8aedda7b157e5a.webp)原因:...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息