动态创建子单据体行原创
金蝶云社区-别等时光非礼了梦想
别等时光非礼了梦想
27人赞赏了该文章 5260次浏览 未经作者许可,禁止转载编辑于2021年03月10日 11:06:25

因为项目中用到了动态创建子单据行,走了不少弯路,以此记录学习。如有不对欢迎指出,互相学习。

方式一:

/**

 * 创建子单据体数据

 * @param parentRow 父单据体指定行

 * @param parentDyn 父单据体行数据

 */

private void createSubEntity(int parentRow, DynamicObject parentDyn) {      

     //获取子单据体要显示的数据  

      DynamicObject[] subEntityList = getSubEntityList(parentDyn);

    //获取父单据体当前行数据

    DynamicObject rsp_entryentity = this.getModel().getEntryRowEntity("rsp_entryentity", parentRow);

    //获取父单据体数据包中子单据体集合

    DynamicObjectCollection rsp_subentryentity =              rsp_entryentity.getDynamicObjectCollection("rsp_subentryentity");


    for (int i = 0; i < subEntityList.length; i++) {

        DynamicObject resPoool = subEntityList[i];// 获取要赋值的数据

        DynamicObject dynamicObject = rsp_subentryentity.addNew();//子单据体新增一行

         //放弃下面这种方式,因为基础资料属性显示不正常,目前没有找到解决方式

        //dynamicObject.set("rsp_person",resPoool.getDynamicObject("rsp_supperson"));

        //采用setValue()赋值方式

        this.getModel().setValue("rsp_person", resPoool.getDynamicObject("rsp_supperson"), rsp_subentryentity.size()-1,parentRow);

    }

    this.getView().updateView("rsp_subentryentity");//更新子单据体View

}

前发现这种方式存在的问题:

当子单据体中有默认值时,不能自动带出,原因:通过后台创建数据方式,不会触发前端缺省值


方式二:

/**

     * 创建子单据体数据

     * @param parentRow 父单据体指定行

     * @param parentDyn 父单据体行数据

     */

    private void createSubEntity(int parentRow, DynamicObject parentDyn) {

        //获取子单据体要显示的数据

        DynamicObject[] subEntityList = getSubEntityList(parentDyn);


        IEntryOperate entryOperate = this.getModel();

        entryOperate.setEntryCurrentRowIndex("rsp_entryentity", parentRow);// 指定父单据体行号 (必须)


        for (int i = 0; i < subEntityList.length; i++) {

            int subRow = entryOperate.createNewEntryRow("rsp_subentryentity");//子单据体创建新一行数据

            DynamicObject resPoool = subEntityList[i];// 获取要赋值的数据

            //赋值

            this.getModel().setValue("rsp_person", resPoool.getDynamicObject("rsp_supperson"), subRow,parentRow);

        }

        this.getView().updateView("rsp_subentryentity");//更新子单据体View

    }


赞 27