DEP 如何向一张自建单据中通过脚本写入数据原创
金蝶云社区-Heaven
Heaven
8人赞赏了该文章 374次浏览 未经作者许可,禁止转载编辑于2023年07月14日 14:26:41
封面

/**说一下整体思路:

**1.自动生成uuid,作为单据数据行的id

**2.通过Info()接口,单据对应的实体BosType,单据对应的PK,生成对应单据的实体(Bostype和PK的获取方法社区有)

**3.通过实体的setId()方法,写入单据行id,调用单据实体对象的addnew()方法,新增一行单据数据

**4.通过sql,更新新增行的其他列

**/

var uuid = com.kingdee.bos.util.BOSUuid.create("071B829A");

var bankIngPK = new com.kingdee.bos.dao.ormapping.ObjectUuidPK(uuid);


//创建值对象

function createNewData(entityPK)

{

    var objectValue = new com.kingdee.eas.ep.CoreBillBaseCustomInfo();

    var entityBosType = "071B829A"; //实体的bosType,可通过[元数据检查]获得

    objectValue.setBOSType(new com.kingdee.bos.util.BOSObjectType(entityBosType));

    //实体的PK,可通过[元数据检查]获得

    objectValue.setPK(new com.kingdee.bos.metadata.MetaDataPK(entityPK));

    return objectValue;

}

var entityPK = "com.kingdee.eas.fi.app.StatementOfAccount";

var object = createNewData(entityPK);

//通过实体PK获取自定义基础资料或单据接口,所需参数为实体pk

var bizInterface = com.kingdee.bos.BOSObjectFactory.

createRemoteCommonBOSObject(

new com.kingdee.bos.metadata.MetaDataPK(entityPK));


var cid = bankIngPK.getKeyValue("id");

object.setId(cid)

bizInterface.addnew(object); //新增



var data_update_sql =  "update 表名  set 字段名1= '"+ 值1+"', 字段名2= '"+ 值2+"' where fid = '"+cid+"' ";

com.kingdee.eas.csinterface.syncdatabase.SQLFacadeFactory.getRemoteInstance().exeSQL(data_update_sql);


补充:info可以获取单据info,还有其他的info对象:

//这个是获取其他info对象的函数,不过我还没有去试这个info对象到底是获取基础资料的还是啥的,等以后遇到了在研究

function createNewData(entityBosType, entityPK)

{

    var objectValue = new com.kingdee.eas.ep.DataBaseCustomInfo(); //这是获取另一个info对象

    objectValue.setBOSType(entityBosType);

    objectValue.setPK(new com.kingdee.bos.metadata.MetaDataPK(entityPK));

    return objectValue;

}

总结:这不是唯一向自建单据中写入数据的方法,我觉得可以通过bizInterface的update或者其他insert的方法也能添加(不使用sql),还没有去尝试。大家如果有其他方法可以在下面交流。

赞 8