仓位同步赋值原创
金蝶云社区-null
null
21人赞赏了该文章 245次浏览 未经作者许可,禁止转载编辑于2023年08月16日 08:18:57

      如何把一个仓位字段的值同步到另外一个仓位字段,比如从调出仓位同步到调入仓位。直接配置计算公式,调入仓位 = 调出仓位是不行的。仓位基于弹性域实现,其对应数据包为复杂对象,且能够通过重新选择维度的方式改变属性,直接赋值会导致调出仓位和调入仓位字段指向同一个数据对象,在修改调入仓位的时候调出仓位也一起发生变化。

      此问题需要开发单据插件实现,重写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);

        }


赞 21