DEP 如何向一张自建单据中通过脚本写入数据
/**说一下整体思路:
**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),还没有去尝试。大家如果有其他方法可以在下面交流。
DEP 如何向一张自建单据中通过脚本写入数据
本文2024-09-16 21:58:11发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-45089.html