如何给分录的多选基础资料赋值原创
金蝶云社区-Kenny_zhang
Kenny_zhang
0人赞赏了该文章 195次浏览 未经作者许可,禁止转载编辑于2024年05月08日 14:13:11

1.生成分录多选基础资料的值

/**
 * 生成分录的多选基础资料值集合
 * @param mainEntity 主单据实体
 * @param entryPropName 分录的多选基础资料属性名
 * @param objs 多选基础资料属性值
 * @return
 */
public static DynamicObjectCollection generateEntryMultiPropValue(DynamicObject mainEntity, String entryPropName, DynamicObject... objs) {
    MainEntityType entityType = EntityMetadataCache.getDataEntityType(mainEntity.getDataEntityType().getName());
    // 注意:关键在于使用findProperty才能找到分录的属性,如果是表头的多选基础资料属性只需要使用getProperty即可获取到
    DynamicCollectionProperty currencyProp = (DynamicCollectionProperty) entityType.findProperty(entryPropName);

    DynamicObjectCollection collection = new DynamicObjectCollection(multiProp.getDynamicCollectionItemPropertyType(), entity);
        for (DynamicObject obj : objs) {
            DynamicObject newObj = new DynamicObject(multiProp.getDynamicCollectionItemPropertyType());
            newObj.set("fbasedataid", obj);
            newObj.set("fbasedataid_id", obj.getPkValue());
            collection.add(newObj);
        }
        return collection;
}

2.给分录多选基础资料属性赋值

DynamicObjectCollection collection = generateEntryMultiPropValue(mainEntity, entryPropName, objs);
entryDynamicObject.set(entryPropName,  collection);




赞 0