销售易CRM高级开发实战:NEX2.0深度技巧、API集成与智能体应用

本文整理自销售易官方技术文档,聚焦NEX2.0高级扩展技巧、OpenAPI深度应用、审批流智能化及AI集成,适合CRM架构师、高级开发工程师及企业数字化专家阅读。


一、NEX2.0高级开发:从熟练到精通

1. 表单与详情页深度控制

Q:NEX2.0如何批量设置字段为只读/必填/隐藏?

使用 updateItemsAttributes 方法批量修改:

let entityFormMaster = props.getComponent('entityFormMaster');

entityFormMaster.updateItemsAttributes([
    {
        scope: { itemApiKey: 'customItem10__c' },
        visible: true,           // 是否可见
        required: false,         // 是否必填
        disabled: false,         // 是否禁用
        placeholder: "请输入",    // 占位文本
        disabledAfterTime: '2025-07-25',   // 禁用某时间之后
        disabledBeforeTime: '2025-06-03',  // 禁用某时间之前
        options: [               // 单选/多选字段的选项
            { label: "二季度", value: 2 },
            { label: "四季度", value: 4 }
        ]
    }
]);

Q:如何动态隐藏详情页新建按钮中的业务类型?

let detailButton = e.cmp.getComponent('detailButton', { 
    buttonApiKey: 'createCustomEntity16__c_customItem1__c' 
});

detailButton.setAttributes({
    label: '新建记录',           // 修改按钮标签
    visible: true,              // 控制按钮可见性
    disabledBusinessTypes: ["defaultBusiType"]  // 禁用特定业务类型
});

Q:详情页是否支持隐藏Tab?

支持。NEX2.0提供了完整的Tab控制能力,可根据业务场景动态显示/隐藏。

Q:如何根据主表字段动态控制子表显示/隐藏?

// 使用 disabledOn 表达式实现
disabledOn: "$mainForm.customItem25__c == 0"

Q:子表的条件只读能否根据主表字段设置?

版本 支持情况
2.0表单 ✅ 支持根据主表字段设置条件只读
1.0表单 ❌ 不支持

2. 数据操作与事件处理

Q:编辑明细数量后,未点击空白区域不自动计算,保存后总价未计算?

根因:字段onchange事件在未失去焦点时数据未完成计算,点击保存时计算结果未保存。

解决方案:增加 immediateUpdate 属性强制即时更新。

Q:Web端如何使用addRows批量新增子表数据?

let entityFormDetail = props.getComponent('entityFormDetail', {
    objectApiKey: 'customEntity222__c',
    busiTypeApiKey: 'defaultBusiType'
});

entityFormDetail.addRows([mockChildData]);

⚠️ 限制:批量新建场景不支持引用字段带出

Q:afterRender中如何获取明细数据?

let entityFormDetail = props.getComponent('entityFormDetail', {
    objectApiKey: 'customEntity10__c',
    busiTypeApiKey: 'defaultBusiType'
});

// 获取所有明细数据
entityFormDetail.getAllData();

// 获取表单数据(含其他业务类型)
entityFormDetail.getFormData();

Q:H5端主表单如何清空某个明细下指定业务类型的所有数据?

// 调用Tabs上的removeData方法
// 参数1:子明细的objectApiKey
// 参数2:需要清空的业务类型apiKey
tabsComponent.removeData('customEntity__c', 'defaultBusiType');

3. 常见限制与不支持功能

功能需求 支持情况 替代方案
动态控制子表列表显示/隐藏 ❌ 不支持 使用disabledOn控制子表内字段
批量删除按钮隐藏 ❌ 不支持扩展 后台配置权限控制
评论按钮隐藏 ❌ 不支持 无替代方案
多值字段扩展 ❌ 不支持 使用关联对象替代
购物车NEX2.0 ❌ 不支持 继续使用NEX1.0
beforeSave中更新表单数据 ❌ 不支持 提前到onchange或校验规则中处理

二、OpenAPI深度集成

1. 元数据与数据查询

Q:能否通过OpenAPI创建字段?

目前不支持。系统尚未对外开放创建/更新字段的元数据API,字段配置需在后台手动完成。

Q:如何通过belongTo的ID查询所属对象?

解决路径

  1. 调用查询对象列表接口获取租户全部实体
  2. 根据belongId匹配确认所属对象
  3. 获取对应apiKey
GET /rest/data/v2.0/xobjects

Q:如何通过API终止进行中的审批流?

使用审批操作接口,支持:

  • withdraw:撤回
  • reject:拒绝
  • terminate:结束流程(仅流程管理员

文档路径:API中心 → PaaS平台API接口 → 审批流接口 → 审批操作

Q:openCreateForm时文件字段如何传参?

不支持。文件字段和图片字段无法通过接口直接赋值,需先上传获取fileId后再关联。

2. 接口环境与会话

Q:api-tencent对应的环境节点是什么?

销售易API URL规范:

https://api-{pod}.xiaoshouyi.com/{api_path}
环境 pod值 示例
腾讯云 tencent https://api-tencent.xiaoshouyi.com/rest/data/v2.0/...

3. 内部请求与并发

Q:内部请求执行业务逻辑代码有并发上限吗?

目前没有设置并发上限。但建议合理控制,避免瞬时高峰影响系统稳定性。


三、审批流智能化配置

1. 流程设计与异常处理

Q:审批流和工作流同时启用,提交时执行哪个?

启用顺序 结果
先审批流 → 后工作流 可正常提交工作流,两者独立
已有工作流 → 再启用审批流 ❌ 无法再启用审批流
已有工作流实例 → 禁用工作流 ❌ 仍无法提交审批流

核心规则:同一业务类型下,工作流优先级高于审批流

Q:如何设置操作退回到之前的阶段?

  1. 流程基本属性 → “允许推进任意阶段” 设为 True
  2. 每个节点的**“阶段节点属性”**中配置可退回的阶段

Q:全流程图显示空白?

原因:审批流画布中存在循环(后序节点指回前序节点),影响溯源计算。

不支持该配置类型,需重新设计流程避免循环。

2. 网关条件与字段运算

Q:多选字段的"包含/不包含"如何理解?

以A、B、C三个选项为例:

运算符 满足条件 不满足条件
包含A和B [A,B]、[A,B,C] [A]、[B]、[A,C]、[B,C]
不包含A和B [A]、[B]、[A,C]、[B,C] [A,B]、[A,B,C]

注意:是"同时包含/同时不包含"的关系,非"包含任意一个"。

Q:自动流网关条件中,"发生变更"操作符适用于ID字段吗?

不适用。ID字段不支持"发生变更"操作符。

Q:自动流接口调用成功但未执行?

短时间内对同一条数据重复调用超过5次,系统将停止执行。需控制调用频率或增加去重机制。

3. 审批状态与触发事件

Q:approvalStatus对应哪些值?

状态
pending 待提交
in_progress 审批中
rejected 审批拒绝
approved 审批通过
withdrawn 撤回

Q:触发事件每天上限多少?

目前没有限制


四、AI与智能体集成

1. 智能体操作(新功能)

Q:自动流中的"智能体操作"是什么?

将流程设置为"智能体操作"后,可在智能体操作中引用该流程,并通过智能对话触发和执行

应用场景

  • 销售助手:通过自然语言触发报价审批流程
  • 服务助手:对话中自动创建工单并分配
  • 管理助手:语音指令触发数据同步任务

2. 智能搜索与匹配

Q:关键词搜索的排序逻辑是什么?

优先级规则(从高到低):

  1. 主属性名称完全一致 → 排在最前
  2. 主属性名称完整包含关键词(支持拆分匹配)→ 其次
  3. 其他字段包含关键词(支持拆分匹配)→ 最后

细粒度优化因素

  • 关键词在各字段中的出现次数
  • 关键词在字段内容中的占比/匹配度
  • 多字段命中加分

示例:搜索"北京科技"

  • 最优:名称=“北京科技有限公司”
  • 次优:名称=“北京某某科技公司” + 地址含"北京"
  • 一般:仅描述中含"科技"

五、系统运维与版本管理

1. 升级与版本控制

Q:已按升级向导操作过,为何又提示需要升级?

正常现象。当某些对象在新版本中得到支持时,发版后需要对这些对象重新升级。之前版本不支持的对象,新版本支持后会触发再次升级提示。

Q:未升级表单设计器,部署NEX2.0代码会影响其他实体1.0代码吗?

不会。该实体会使用NEX增强版,其他实体继续运行1.0代码,互不干扰。

Q:新建NEX2.0代码未发布,会影响1.0代码发布吗?

不会。未发布的2.0代码不影响1.0代码的正常发布。

2. 定时调度与资源限制

版本 定时调度上限
专业版 0个
企业版 20个
旗舰版 50个

3. 沙盒与多环境

Q:沙盒环境是否支持委托登录?

支持。沙盒环境完整支持委托登录功能,便于测试权限场景。


六、移动端与跨端开发

1. 跨端差异

Q:Web端和移动端是否统一由移动端组件控制?

不是。Web端和移动端目前分别由各自组件独立控制,需分别开发和测试。

Q:Web端预览正常,发布后无法跳转?

排查方向

  1. 查看浏览器控制台报错
  2. 确认是否使用了已禁用的API
  3. 发布后运行时环境与预览环境差异

2. Picker与选择组件

Q:如何使用openPickerList方法?

ctx.ui.openPickerList({
    objectApiKey: "account",           // Picker对象API Key
    selectionMode: "multiple",         // single(单选) | multiple(多选)
    conditions: [                      // 筛选条件
        { apiKey: "industryId", type: 10, value: "2,3" },
        { apiKey: "fState", type: 10, value: "2,5" }
    ],
    orderBy: { field: "createdAt", order: "asc" },  // 排序
    title: "选择客户"                   // Picker页面标题
});

七、异常处理与故障排查

1. 常见异常

Q:异常编码1600000(服务异常)如何处理?

常见于流程审批过程中的未知系统异常。按标准流程提交产品问题反馈,提供:

  • 发生时间
  • 操作步骤
  • 相关数据ID
  • 完整报错截图

Q:代码保存提示"请求可能对网站造成威胁"?

原因:代码中包含 confirm( 等内容,被WAF误判为攻击流量。

解决:联系销售易技术支持处理白名单。

2. 性能与优化

Q:SimpleDateFormat出现偶发性结果异常?

原因SimpleDateFormat非线程安全,多线程环境下复用同一实例导致。

解决方案

  1. 改为方法局部变量,避免共享
  2. 使用线程安全的DateTimeFormatter替代

八、给架构师的5条设计原则

  1. 版本一致性:新项目强制NEX2.0,老项目制定迁移计划,避免混合维护成本
  2. API降级设计:元数据API不支持时,准备后台手工+文档同步的降级方案
  3. 智能体优先:新流程设计考虑智能体触发场景,预留自然语言交互接口
  4. 跨端分离:Web和移动端分别设计,不假设组件行为一致
  5. 搜索优化:关键数据确保主属性命中,提升用户搜索体验

数据来源:销售易官方帮助文档

关于作者:深耕CRM平台开发,专注销售易/纷享销客高级定制及智能化升级。如有架构设计、智能体集成或复杂开发需求,欢迎邮件联系:linfeng@xsycrm.com.cn

邮件标题注明【CRM架构咨询】,24小时内回复。


四篇完结,覆盖销售易CRM全链路技术栈。建议收藏夹按顺序阅读,配合官方文档实践。

#销售易 #CRM架构 #NEX2.0 #智能体 #企业数字化

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐