1、按钮

在线文档地址:https://www.fxiaoke.com/mob/guide/crmdoc/src/8-1-2%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%89%E9%92%AE.html

返回参数有三种返回值,如下:

1、map:用以阻断或继续按钮的执行;

2、String:返回的需要是一个可以访问的网址,点击按钮之后将会跳转至指定的网址;

3、UIAction:跳转至系统自己的某些组件页面

按钮分为两种类型,如下:

UI按钮:1、涉及到页面跳转的时候,使用此按钮,返回参数是String的url网址、或者是UIAction跳转至编辑页面、打印模板等指定组件;

2、批量数据操作时,用此按钮可以获取到数据集合是context.dataList

业务按钮:1、进行前验证、执行动作的补充、执行完成后的提醒等;

2、批量操作时,用此按钮分别获取到每一条数据用context.data

1.1、Map

应用场景:此返参类型在按钮的前验证中触发,用于进行数据的验证、可通过对context.data的字段进行赋值,修改最终的数据。

返参说明:error : 是否出错 errorMessage : 出错后提示的错误信息 block : 提示异常信息后,是否阻塞保存

如下,判断保养时间是否超时并阻断提交

Datedate = 下次保养时间;
log.info("下次保养时间为:"+date);
Date now = Date.now();
boolean flag = now.daysBetween(date) > 60;
if(flag){log.info("下次保养时间超过了60天");return [ "error":true, "errorMessage":"下次保养时间距离当前超过了60天", "block":true ]
}else{log.info("下次保养时间符合要求");//输入正确,继续执行return ["block": false];
}

1.1.1、获取新的页面填充之后的值进行校验

  1. 只能在前验证的位置获取到输入的参数,进行参数校验

2、获取新的表单页面的参数,需要在函数中设置自定义参数,然后在保存函数之后会提示匹配变量,获取表单数据直接通过变量名即可,如下

log.info("填写的退费金额变量:" + refund_param);

1.2、String

应用场景:在【执行动作】当中,进行指定页面路径的跳转。

返参为""或没有返参时,仅执行函数,不会进行页面跳转;有字符串返参时,可以用来进行网页路径的跳转,点击之后会在新的标签页打开指定的路径。

return"https://www.baidu.com/";

1.3、UIAction

应用场景:跳转至纷享销客内的一些组件页面

如下,跳转至详情页

UIAction openDialogAction = OpenDialogAction.build{userData = [:] //传递给自定义组件的数据键值对listtitle = "title"//标题width = 123//宽高maxHeight = 123//最大高度component { //组件的apiNameapiName = "comp_yuio8__c"}
}return openDialogAction

组件文档

https://www.fxiaoke.com/mob/guide/uipaas/dist/#/custom-component/start/what

跳转至相关的组件

Mapdata = context.data;
data.put("field_jB28q__c",  Date.now());
WebAction action = WebAction.builder().type('form').data(data).build()
return action

2、范围选择

当希望通过书写一个字段的值确定关联对象的范围时,在关联字段上定义

注意:关联字段取关联对象的字段时,直接输入字段名即可

String area = context.data.field_n29H8__c;
log.info("所在区域:"+ area);
// def(boolean errorInfo, Map result, String errorMessageInfo) = Fx.object.getOptionInfo("AccountObj","field_Szm71__c")
// log.info("客户的所在区域属性:"+result);
QueryTemplate template1 = QueryTemplate.AND(["field_i582a__c":Operator.EQ(area)])log.info(template1)
return template1;

3、UI事件

当一个输入框失去焦点之后,想要触发某些操作

https://www.fxiaoke.com/mob/guide/crmdoc/src/8-1-6UI%E4%BA%8B%E4%BB%B6.html

如下,在选择了一个日期后,想要自动确定另一个字段的日期

Date productDate = context.data.field_jB28q__c asDate;
log.info(productDate);
int month = (productDate.month + 2) asint;
log.info(month)
Date nextTime = productDate.withMonth(month);
log.info(nextTime);//新建UIEvent事件UIEvent event = UIEvent.build(context) {// Date product = context.data.field_jB28q__c asDate;// log.info(product);editMaster("field_3Ey0i__c": nextTime) }return event

注意事项:

在UIEvent.build(context) {}里面不可以获取到context里面的值

3.1、 弹窗

3.1.1、代码

//红字提醒
Remind remind = Remind.Text("Text");
//弹窗提醒
Remind remind = Remind.Alert("Text");

3.1.2、 样式

4、流程触发

4.1、审批流

定义审批的流程

4.2、业务流

需要手动在对象数据页面发起,里面可以定义审批

4.3、工作流

可以定时自动触发、数据字段更新时触发、数据作废、新建时触发。

5、计划任务

类似于工作流,可以定时执行,不过不再监听对象属性的变化。要么手动执行,要么到达时间选择符合要求的数据进行执行。

一般用来批量刷数据,时间最好在晚上执行,只能获取到id集合。

不要在这里赋值累増的变量。

数据是分批次执行的,每20条为一批,这一批中如果过某条执行出现异常了,则这一批的剩余数据将不再执行。

在调试页面选择具体的数据运行脚本,则context.objectIds中的id只有所选择的那条数据

5.1、基础例子

//计划任务中可以先得到数据的id集合,然后根据id集合查询得到具体的数据List ids =  context.objectIds as List
def(boolean errorFind,List dataFind,String errorMessageFind) = Fx.object.findByIds("PaymentPlanObj",ids);
if( errorMessageFind ){log.info("查询数据失败:" + errorMessageFind);
}elseif( dataFind ){dataFind.each{ dataItem ->//得到每一个对象详情Map dataDetail = dataItem as Map}
}else{log.info("未查询到数据");
}

6、促销

暂不做详细讲解

7、自增编号

本身有自增编号字段,当不满足时,可以使用自定义函数定义。

如下,根据对象的产品类型,确定其前缀。

Stringtype = context.data.field_fEz5m__c;
log.info(type);
def (Boolean error,Stringdata,String errorMessage) = Fx.object.getOptionName("object_5CF02__c","field_fEz5m__c",type);
String prefix = "";
if( data =="工业设备" ){prefix = "i-";
}else{prefix = "a-";
}
String now = Date.now() as String;
now  = now.replaceAll("-", "");
log.info(now);
prefix = prefix + now + "-"// prefix = prefix + now.year + now.month + now.day + "-"// log.info(prefix);
IncrementNumber rule = IncrementNumber.builder().counter('object_5CF02__c_name') // 计数器的key,递增的自增编码需要保证key唯一,同理,更换counter可以重计自增编号.condition('DAY')      // 按年、月、日重计 `YEAR`  `MONTH`  `DAY`  `NONE`.postfix('')     // 编码后缀.prefix(prefix)       // 编码前缀.serialNumber(4)         // 自增编码位数.initialValue(1)         // 编号起始值不能小于 0,且默认为 1.steppingNumber(1)       // 步进器默认为1,且不能小于1.buildRule()return  rule

8、自定义控制器

初学时,一般用不到这里

9、导入

9.1、预处理

导入前执行一次,此时失败整个导入都将不能进行,必须在最后返回ValidateResult,代码逻辑内返回的不起作用

获取整个参数列表

log.info("执行设备导入的预处理代码");
List<Map> dataList = context.dataList as Listlog.info("导入的数据如下:"+dataList);
boolean flag = false;
if( dataList.size() > 0 ){flag = true;
}return ValidateResult.builder().success(flag).errorMessage("我是导入前预处理函数!!!!").build()

返回false时,导入将被取消,效果如下

9.2、前验证

每行数据都会触发,失败则当前行数据不能导入。

导入后context.data中单选框的值为id;

关联对象在表格中为主属性,函数取值时为数据id;

可以直接通过data.put()方式修改这个对象的值

log.info("查询【确认收入】检查是否可以创建【回款】");
Map data = context.data as Map;
String accountId = data["field_VulpB__c"] as String;
Date returnDate = data["field_sRf93__c"] asDate;
BigDecimal returnAmount = data["field_xWtSl__c"] as BigDecimal;QueryTemplate template = QueryTemplate.AND(["field_c8L4x__c": Operator.EQ(accountId)],["field_wV3jw__c":Operator.EQ(returnDate)],["field_rtXi1__c":Operator.EQ(returnAmount)]);APIResult ret = Fx.object.findOne("object_8We11__c", //FQLAttribute.builder().columns(["_id", "name"]) //.queryTemplate(template).build(),SelectAttribute.builder().needInvalid(false).build());
if(ret.isError()){log.info(ret.message());
}boolean flag = ret.data;return ValidateResult.builder()
// 返回 false 将终止本次导入.success(flag).errorMessage("没有匹配的确认收入,不能新建").build()

10、自定义组件

用以进行一些定制化页面的开发

https://lexiangla.com/teams/k100014/docs/d829a73a510e11ed9515869c76e28517?company_from=050524eee61811e783175254005b9a60

纷享销客自定义函数命名空间及实例相关推荐

  1. 纷享销客自定义函数:实战100例(全网最全,持续更新...)

    自定义函数是纷享低代码能力的实现方案,是纷享销客PaaS能力的重要组成部分,此文档主要提供纷享自定义函数实用案例,交流.咨询自定义函数.API接口相关问题:wangzhifeng@tongdog.co ...

  2. 纷享销客低代码平台:自定义函数入门

    自定义函数是纷享销客低代码平台的实现方案,是纷享销客PaaS定制开发能力的重要组成部分,通过执行简单的程序脚本更新相关CRM模块或第三方应用程序中的数据,并且可以进行数据校验判断和执行动作,记录与工作 ...

  3. 纷享销客CRM自定义函数:创建自定义对象数据

    // 构造主对象 Map data = ["name": "第一条测试数据","field_3f5kI__c": "12143&q ...

  4. 纷享销客CRM自定义函数:计划任务

    如果您在使用纷享销客CRM中,遇到某个需求实现不了,或者不知道该怎么去实现,欢迎跟我聊聊,一起x想想办法. 计划任务:是系统的常见功能,利用任务计划功能,可以将任何脚本.程序或文档安排在某个最方便的时 ...

  5. 纷享销客对接打通金蝶云星空查询对接接口(自定义)接口与物料新增接口

    接入系统:纷享销客 纷享销客以连接型CRM为特色,连接业务,连接人,连接系统,实现以客户为中心,企业内部和上下游业务的高效协作.纷享销客坚持行业化战略,为高科技.现代企业服务.快消.农牧.大制造等行业 ...

  6. 基于纷享销客开放平台,实现纷享CRM与金蝶云星空系统数据同步

    阅读对象: CRM/ERP系统管理员.数据库管理员.系统实施.财务.数据分析等相关人员,希望实现两个系统之间数据同步的程序员. 适用场景: 纷享销客创建完客户以后,希望客户信息直接同步到金蝶系统客户列 ...

  7. 【观察】纷享销客:中国SaaS CRM市场的“破壁人”

    申耀的科技观察 读懂科技,赢取未来! 电影<斗士>中,有这么一句台词令人印象深刻:"知道路要怎么走,和走上这条路,是有区别的." 确实如此,如果以此形容中国SaaS C ...

  8. 纷享销客事件变更订阅接口到底怎么用?

    纷享事件变更订阅是一种数据事件主调的服务能力,用户可以通过在纷享侧订阅事件的方式,来监听数据的变化,从而能够以一种很轻量级的方式就能达到几乎近实时的数据同步的效果. 在纷享销客开放平台推出这个接口(2 ...

  9. 深度案例 | 纷享销客:用户需求精准洞察下的敏捷开发

    2018 年,企业级服务仍处于高速增长时期. 经过几年的市场洗礼后,企业级服务的市场格局正在逐步明朗.无论是垂直型还是通用型的企业级服务厂商,公司发展核心问题主要围绕客户满意度.产品成熟度.企业健康度 ...

最新文章

  1. php 自动验证 正则表达,使用正则表达式验证登录页面的输入内容
  2. 总结4:input文本输入框自动提示
  3. markdown pad激活
  4. 加工中心宏程序生成器_宏程序G1铣锥度螺纹NPT
  5. Linux下mySql的安装和使用
  6. SuperScan扫描器
  7. 包含h3c、cisco、F5、华为、中兴、juniper等网络设备巡检命令整理,建议点赞收藏
  8. lcd1602c语言编程原理,lcd1602工作原理是什么?
  9. 如何发现网站被劫持被黑DNS被污染
  10. 微信小程序获取当前页面url
  11. 微信小程序字母索引菜单
  12. 【信奥赛一本通】1183:病人排队(详细代码)
  13. nvidia xavier平台无PD控制器USB接口调试
  14. 配置zsh的prompt
  15. Python PIL调整图片大小、尺寸和转换图片格式,removebg改变图片背景、透明化处理
  16. Multimedia Event Extraction From News With a Unified Contrastive Learning Framework论文解读
  17. 乘风破浪的中国数据库 | 凌云时刻
  18. matlab中poly2sym什么意思,[转载]sym2poly   poly2sym
  19. 海到无边天作岸,身登绝顶我为峰
  20. 快手2019秋季校园招聘算法笔试A卷编程题 - 题解

热门文章

  1. 鸿蒙os将用在哪款机型,鸿蒙OS 2.0正式发布,华为手机将会有哪些改变?
  2. cmd命令清理+检查磁盘+修复系统
  3. 导航网站哪个好,推荐一个好用的网址导航网站
  4. jquery美化select,自定义下拉框样式
  5. 2018android渗透,2018-08-10 web渗透(完)
  6. java反射getmethod_Java反射方法
  7. iphone 恒屏和自动旋转
  8. 荣耀手机多久能升级鸿蒙,荣耀30手机4.0后什么时候开始才可以升级鸿蒙?
  9. 日常工作必备 记录一下
  10. python项目_闪送超市中商品模型类的type()探讨