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

D365 UCI动态添加多选选项集保存时触发验证错误求助

Dynamics 365 UCI多选选项集动态添加选项后保存验证失败问题

问题描述

在Dynamics 365 UCI中,尝试通过addOption()为多选选项集字段abc_multiselect动态构建选项。当联系人查找字段变更时,代码已成功填充选项,但用户选择选项后点击Ribbon保存按钮,系统触发验证错误,提示选项值不在有效范围内。

环境版本

  • Server version: 9.2.22081.00182
  • Client version: 1.4.4647-2208.1

代码示例

初始代码

function polulate(executionContext){
   var formContext = executionContext.getFormContext();
   var multiselect = formContext.getControl("abc_multiselect");
   var high = {value : 895390001, text : "High"};
   multiselect.addOption(high);
}

Update 1代码

function polulate(executionContext){
   var formContext = executionContext.getFormContext();
   var multiselect = formContext.getControl("abc_multiselect");
   multiselect.clearOptions();
   var high = {value : 895390001, text : "High"};
   multiselect.addOption(high);
}

错误信息

弹窗提示:One or more of the option values for this picklist are not in the range of allowed values.
详细错误:Exception Message: A validation error occurred. The value 895390001 of 'abc_multiselect' on record of type 'abc_ENTITY' is outside the valid range. Accepted Values:
ErrorCode: -2147204326
HexErrorCode: 0x8004431a

已尝试方案

  • 将选项集值硬编码到字段定义中,保存无异常;
  • 修改代码添加clearOptions();
  • 更换选项值为895390000、100、101;
  • 参考多个相关方案,均未解决问题。

解决方案

Dynamics 365的选项集合法性校验由后端完成,前端通过addOption()添加的未定义选项值仅在客户端临时显示,无法通过后端验证。解决步骤如下:

  1. 预先在字段定义中添加选项值
    登录Power Apps Maker门户,找到abc_multiselect字段(本地选项集或全局选项集),将需要动态添加的选项值(如895390001)预先添加到选项列表中。如果不需要默认显示这些选项,可后续通过代码或业务规则隐藏。

  2. 前端动态控制选项显示
    表单加载时可通过clearOptions()移除默认显示的选项,在联系人查找字段变更时,再用addOption()添加已预先定义好的选项值,确保value与字段定义中的值完全一致。

  3. 禁止使用未定义的选项值
    所有通过addOption()添加的选项值必须是字段定义中已存在的合法值,否则后端验证必然失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:30:57