You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于JavaScript在Dynamics CRM中根据布尔值控制字段显隐

针对Dynamics CRM表单字段控制需求的代码优化建议

你的代码已经搭建了基础逻辑框架,但还需要补充关键分支并修正细节以完整满足需求,以下是具体调整建议:

现有代码的待优化点

  • 未处理cr253_validationcomplete为**No(false)**时隐藏字段的逻辑
  • Date.now()返回毫秒级时间戳,Dynamics CRM日期字段需传入标准Date对象,且要确保是UTC时间格式
  • 注释内容与实际操作字段不符,易造成混淆
  • 变量名未遵循JavaScript小驼峰命名规范

修正后的完整代码

function showValidationOnChange(executionContext) {
    // 获取表单上下文
    const formContext = executionContext.getFormContext();
    // 获取Validation Complete字段值
    const validationComplete = formContext.getAttribute("cr253_validationcomplete").getValue();
    // 获取Validated On字段的控件与属性对象
    const validatedOnControl = formContext.getControl("cr253_validatedon");
    const validatedOnAttribute = formContext.getAttribute("cr253_validatedon");

    if (validationComplete === true) {
        // 显示字段并设置为当前UTC日期
        validatedOnControl.setVisible(true);
        // 转换本地时间为UTC日期对象,适配Dynamics CRM字段要求
        const currentUtcDate = new Date();
        currentUtcDate.setMinutes(currentUtcDate.getMinutes() - currentUtcDate.getTimezoneOffset());
        validatedOnAttribute.setValue(currentUtcDate);
    } else {
        // 隐藏字段
        validatedOnControl.setVisible(false);
        // 可选:清空字段值(根据业务需求决定是否启用)
        // validatedOnAttribute.setValue(null);
    }
}

关键细节说明

  • 区分控件与属性:设置可见性用getControl获取的控件对象,设置字段值用getAttribute获取的属性对象,逻辑更清晰规范
  • UTC日期处理:通过getTimezoneOffset()调整本地时间为UTC时间,避免时区差异导致的日期偏差
  • 补充else分支:确保字段在Validation Complete设为No时自动隐藏,完整覆盖需求场景
  • 可选清空值:如果业务要求取消验证时清除已填写的Validated On值,可取消对应代码的注释

内容的提问来源于stack exchange,提问作者Waq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:00:02