https://www.fxiaoke.com/mob/guide/crmdoc/src/8-4-2object.html
1.context
获取绑定对象的明细数据
返回值类型:Map
context.details
但是明细不止一条,我们应该如何获得所有的明细条数后再进行每个条数遍历
Map map = context.details as Map //这里获取明细为Map类型且为 {XXX=[数据1,数据2,数据3]}
List list = map.QuoteLinesObj as List //这里的map.XXX对应的就是Map里面的key的值
list.each{it->
Map map1 = it as Map
String XXXX=map1.XXXXX as String
}
2.Fx.object
Fx.object:和对象操作有关的API
1.1、创建业务对象-create
def(Boolean error,Map data,String errorMessage) = Fx.object.create("AccountObj",["name":"客户"])
注意事项:预设对象不推荐使用这个API创建,可以使用下面一个创建的API;此函数不会触发新建对象业务逻辑(判断权限、触发审批流工作流等)。
Map create_map=[:]
create_map = [
"字段一":XXX1,//别忘了逗号
"字段二":XXX2,//别忘了逗号
]
def(Boolean error,Map data,String errorMessage) = Fx.object.create("AccountObj",create_map)
1.2.对象创建同时新建从对象:Fx.object.create(<String apiName>,<Map<String,Map> objectData>,<Map details>,
<boolean withBizLogic>)
def(Boolean error,Map data,String errorMessage) = Fx.object.create("object_2fJ1o__c",
["name":"主从同时新建主1"],["object_Ssm46__c":[["name":"张三1"]]],true)
这里面的<String apiName>是主对象的APIname <Map<String,Map> objectData>是主对象的字段和值
<Map details>为[从对象的APIName :[["字段1":"XXX1"],["字段2":"XXX2"]]]
从对象可以传空值也就是没有创建从对象直接传[:]
注意事项:创建的对象必填字段我梦在create的时候可以赋值为null
def(Boolean error,Map data,String errorMessage) = Fx.object.create("object_2fJ1o__c",
["name":"主从同时新建主1","XXX":null],null,true)
1.3、更新业务对象-update
def (Boolean error,Map data,String errorMessage) = Fx.object.update("AccountObj","id123456",
["name":"纷享销客"],true)
//这里的
["name":"纷享销客"]也可以使用create_map格式。 true可写可不写,不写默认为触发工作流
1.6、批量按业务对象Id查询业务对象数据-findByIds
Fx.object.findByIds(<String apiName>,<List objectDataIds>)
这里面注意点
def (Boolean error,List data,String errorMessage) =
Fx.object.findByIds("AccountObj",["e6a338ae8a944cdfb2bae737db1aa12f",
"4cd5a9f902af4f66a34df35a53630237"])
注意:返回的是list类型,而且虽然可以查到所有值,但只能最多显示一百条
1.7、按查询条件查询业务对象-find
- 普通查询:Fx.object.find(<String apiName>,<List<Map> criteria>,<BigDecimal limit>,<BigDecimal skip>)
-
def (Boolean error,QueryResult data,String errorMessage) =
-
Fx.object.find("AccountObj",[["name":"纷享销客"],["create_time": Operator.GT(1602325440000)]],
-
注意:返回的10,0);
QueryResult为[size=X,total=X,dataList=[]]
这里面的total可以大于100,表示所有的,但是返回最多只显示100条数据,所以需要我们做分页 - 分页链接 分页
def(Boolean targetFindError, QueryResult targetFindDatas, String targetFindErrorMessage) = Fx.object.find("LeadsObj", [["field_d3dMC__c": companyCode]], 100, 0); if( targetFindError ){ reBoolean = true; reMap.put("error", reBoolean); reMap.put("errorMessage", "查询统一社会信用代码相同的线索的数量失败!"); return reMap; } Integer totalNum = targetFindDatas.total as Integer log.info("总数量为:"+totalNum) //计算分页页数 Integer page = totalNum/100 as Integer Range range = Ranges.of(0,page)
1.7.2、
-
查询并排序:Fx.object.find(<String apiName>,<List<Map> criteria>,<Map orderBy>,
<BigDecimal limit>,<BigDecimal skip>) 参数说明:
def (Boolean error,QueryResult data,String errorMessage) = Fx.object.find("AccountObj",
["create_time": Operator.GT(1602325440000)]并不仅仅限于时间戳,其他的字段也可以进行判空等操作
[["name":"分享逍客"],["create_time": Operator.GT(1602325440000)]],["name":1],10,0);
注意:
1.8.1、作废业务对象(批量作废没写,在这里补充)
ActionAttribute attribute = ActionAttribute.build{
//跳过审批流(这个参数为true,批量作废是异步的 不管有没有配置审批流)
triggerApprovalFlow = false
//跳过工作流
triggerWorkflow = false
//跳过前后动作函数
skipFunctionAction = true
}
List objectIds = [
"5f461674d1838e0001a43937",
"5f461673d1838e0001a4386d"
]
def ret = Fx.object.bulkRemove("object_oMTq9__c",objectIds,attribute)
if( ret[0] ){
Fx.log.info("批量作废异常原因为:" + ret[2])
}
1.9、更换负责人-changeOwner
- 定义:Fx.object.changeOwner(<String ObjectAPIName>,<String ObjectDataId>,<String OwnerId>)
def (Boolean error,Map data,String errorMessage) =
Fx.object.changeOwner("AccountObj","ed47841898054749a2ec9be9e6e5d728","1001")
注意:这里面的更换负责人字段必须使用changeOwner;但是在创建create的时候可以直接赋值
注意2:"1011"这是字符串,所以有必要把[1011]通过String user_id=list.get(0) as String
1.15、获取单选/多选业务名称/选项名称-getOptionName
Fx.object.getOptionName(<String objectAPIName>,<String filedAPIName>,<String value>)
def (Boolean error,String data,String errorMessage) = Fx.object.getOptionName("AccountObj",
"lock_status","0")//对象API 字段API 对应的string
注意:这里的意思是通过某个多选/单选字段对应的字段名,其下面有好多中文对应的字符串,我们可以获得此字符串
对应的中文名字
Fx.org
Fx.org:和系统用户操作有关的API
1、按用户ID查询用户信息-findUserById
定义:Fx.org.findUserById(String userId)
data返回值类型:Map
例:
def(Boolean error,Map data,String errorMessage) = Fx.org.findUserById("1001")
2、按用户Id列表查询若干用户信息-findByUserIds
定义:Fx.org.findByUserIds(List userIdList)
data返回值类型:Map
例:
def (Boolean error,Map data,String errorMessage) = Fx.org.findByUserIds(["1001","1002"])
Fx.json.parse(s)
log.info(data.content);
log.info("!!!!")
Object mReturnData = data.content as Object;
log.info(mReturnData.class)
String s = mReturnData as String
def res = Fx.json.parse(s)
log.info("@@@@@")
log.info(res)
Map m = res as Map
log.info(m.code)
String sCodeData = m["code"] as String;
String sMessage = m["message"] as String;