套打树形单据体如何所见即所得

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

套打树形单据体如何所见即所得

树形单据体比较特殊,分录行是有父子关系,但是表里面的记录并没有按父子关系插入,套打的时候去取数,就是按表的数据插入的先后进行打印的,所以往往会造成在界面上看到的顺序跟打印出来的树形单据体的顺序不一致。

明显数据的顺序不一致。

那么应该如何处理呢?

通过插件干预套打数据源的方法可以实现效果一致。


public override void OnPrepareNotePrintData(Core.DynamicForm.PlugIn.Args.PreparePrintDataEventArgs e)
        {
            base.OnPrepareNotePrintData(e);
            if (e.DataSourceId.Equals("FDetailEntity"))
            {
                List<DynamicObject> newDataObjs = e.DataObjects.Where(p => Convert.ToString(p["FPARENTROWID"]).TrimEnd().Length == 0).OrderBy(p => p["FDetailEntity_FSeq"]).ToList();
                List<DynamicObject> objList = new List<DynamicObject>();
                Sort(newDataObjs, objList, e.DataObjects);
                e.DataObjects = objList.ToArray();
            }
        }


private void Sort(List<DynamicObject> tempDataObjs, List<DynamicObject> objList, DynamicObject[] orgDataObjects)
        {
            for (int i = 0; i < tempDataObjs.Count(); i++)
            {
                string rowId = tempDataObjs[i]["FROWID"].ToString();
                var tempObjs = orgDataObjects.Where(p => Convert.ToString(p["FPARENTROWID"]) == rowId).OrderBy(p => p["FDetailEntity_FSeq"]).ToList();
                if (!objList.Contains(tempDataObjs[i]))
                    objList.Add(tempDataObjs[i]);
                if (tempObjs.Count > 0)
                {
                    objList.AddRange(tempObjs);
                    Sort(tempObjs, objList, orgDataObjects);
                }
            }
        }


树形单据体的有FPARENTROWID,FROWID和FDetailEntity_FSeq可以进行父子关系的关联和排序。


套打树形单据体如何所见即所得

树形单据体比较特殊,分录行是有父子关系,但是表里面的记录并没有按父子关系插入,套打的时候去取数,就是按表的数据插入的先后进行打印的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息