仓位同步赋值
如何把一个仓位字段的值同步到另外一个仓位字段,比如从调出仓位同步到调入仓位。直接配置计算公式,调入仓位 = 调出仓位是不行的。仓位基于弹性域实现,其对应数据包为复杂对象,且能够通过重新选择维度的方式改变属性,直接赋值会导致调出仓位和调入仓位字段指向同一个数据对象,在修改调入仓位的时候调出仓位也一起发生变化。
此问题需要开发单据插件实现,重写DataChanged事件,判断如果修改字段是调出仓位,则复制调出仓位数据包,记录对应内码,并用复制后的数据包和仓位内码给调入仓位赋值。
同为弹性域类型的辅助属性字段同步类似
复制数据包并处理赋值代码大致如下:
private void SetFlexValue(RelatedFlexGroupField flexField, Entity entity, DynamicObject value, long valueId, int row)
{
DynamicObject dyRow = this.Model.GetEntityDataObject(entity, row);
if (value == null)
{
this.Model.SetValue(flexField.Key, null, row);
flexField.RefIDDynamicProperty.SetValue(dyRow , 0);
return;
}
DynamicObject cloneFlexObj = (DynamicObject)ObjectUtils.CreateCopy(value);
cloneFlexObj["Id"] = valueId;
this.Model.SetValue(flexField.Key, cloneFlexObj, row);
flexField.RefIDDynamicProperty.SetValue(dyRow , valueId);
this.View.UpdateView(flexField.Key, row);
}
仓位同步赋值
本文2024-09-16 19:01:16发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-25888.html