zoho crm有一个deluge操作是在记录删除后触发的,但是记录删除后就查不到了,应该怎么解决

核心原因:

当 Zoho CRM 触发"删除后 (On Delete)"的工作流时,数据库中的那条记录确实已经消失了。因此,任何在 Deluge 脚本中尝试使用 zoho.crm.getRecordById() 去查这条记录的操作都会返回 null 或报错。

解决方案:不要"去查",而是"带着走"。

你必须在配置工作流和函数关联的时候,通过 "编辑参数 (Edit Arguments)" 将你需要的数据直接传给函数,而不是在函数内部去查询。

以下是具体操作步骤:

方法一:利用函数参数映射(适用于主模块字段)

这是最标准的方法。虽然记录被删除了,但在工作流触发的那一毫秒,系统内存中还保留着该记录"临终前"的数据。

  1. 进入设置:工作流规则 -> 选择触发器为"记录删除 (On Delete)"。

  2. 关联函数:在动作中选择你的 Deluge 函数。

  3. 关键步骤 - 编辑参数 (Edit Arguments)

    • 在函数配置弹窗中,点击 "编辑参数"
    • 这是你唯一获取数据的机会。
    • 定义键名(例如 deleted_subject),按 # 键选择该模块的字段(例如 主题)。
    • 把你所有需要用到的字段全部映射一遍。
  4. Deluge 代码写法:
    错误写法 ❌:

    javascript 复制代码
    // 在删除触发中,这绝对查不到数据
    rec = zoho.crm.getRecordById("Quotes", quote_id); 
    name = rec.get("Subject");

    正确写法 ✅:

    (假设你在参数映射里已经把 Subject 映射给了变量 arg_subject

    javascript 复制代码
    // 直接使用映射进来的变量,不需要查库
    info "被删除的记录主题是: " + arg_subject;
    
    // 你可以在这里直接把 arg_subject 发送给外部 API

方法二:应对"子表/相关列表"数据(快照法)

痛点: 方法一只能映射主模块的字段(如金额、名称、所有者)。如果你需要获取 "被删除记录底下的子表数据(如报价单里的产品明细)",方法一是不行的,因为参数映射不支持映射整个子表 List。

这时候就必须结合我们之前讨论过的 "快照 (Snapshot)" 方案:

  1. 前期准备:

    在主模块建一个隐藏的长文本字段(例如 JSON_Backup)。

  2. 保存时备份:

    写一个"创建/编辑"时触发的脚本,每次记录保存时,把子表数据转成 JSON 字符串,存入 JSON_Backup 字段。

  3. 删除时获取:

    在"删除后"的脚本中,使用 方法一 映射 JSON_Backup 这个字段到变量。

  4. 解析:

    代码如下:

    javascript 复制代码
    // 假设 arg_json_backup 是通过参数映射传进来的长文本
    if(arg_json_backup != null && arg_json_backup != "")
    {
        // 还原之前保存的子表数据
        subform_list = arg_json_backup.toList(); 
        
        // 现在你可以遍历这个列表,知道删除了哪些详细产品了
        for each item in subform_list
        {
             // ...
        }
    }

总结

  • 主字段数据 (如 ID、Name、Total):在工作流配置页面通过 参数映射 (Key-Value Mapping) 直接传进去。
  • 复杂数据 (子表、多选列表):必须在删除发生之前(即创建/编辑时),先备份到一个文本字段里,然后删除时读取那个文本字段。
相关推荐
0思必得01 小时前
[Web自动化] 开发者工具性能(Performance)面板
运维·前端·自动化·web自动化·开发者工具
视觉装置在笑7131 小时前
grep 命令基础用法
linux·运维
Lay_鑫辰1 小时前
西门子1200PLC控制禾川X5ER伺服配置AC4模式全流程
运维·人工智能·单片机·嵌入式硬件·自动化
HalvmånEver1 小时前
Linux:进程等待(进程控制三)
linux·运维·服务器
The star"'1 小时前
docker swarm和containerd
运维·docker·容器
云飞云共享云桌面1 小时前
研发部门使用SolidWorks,三维设计云桌面应该怎么选?
运维·服务器·前端·网络·自动化·电脑
干啥都是小小白1 小时前
Linux 驱动
linux·运维·服务器
向山行_wolf1 小时前
ubuntu20.04安装向日葵
linux·运维·服务器
❀͜͡傀儡师1 小时前
Docker部署OneTerm堡垒机
运维·docker·容器·oneterm