选单.常见问题.选单报错 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)原因:...
点击下载文档
本文2024-09-16 18:11:42发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-20559.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章