基于全局变量设置MinValue/MaxValue:Business Central技术疑问
Business Central字段MaxValue绑定变量失败的原因及解决方法
问题描述
在Business Central中,以下将字段Editable属性绑定全局布尔变量的配置可正常运行:
} field(5; "From"; Integer) { Caption = 'From'; DataClassification = SystemMetadata; Editable = FromEditable } } var FromEditable: Boolean
但尝试将字段MaxValue属性绑定全局整数变量ToValue时多次失败,相关代码如下:
} field(5; "From"; Integer) { Caption = 'From'; DataClassification = SystemMetadata; MaxValue = ToValue } } var ToValue: Integer
原因分析
核心问题在于Business Central表字段的属性类型限制:
Editable属于可计算属性,这类属性支持绑定变量或运行时可计算的表达式,值会在运行阶段动态评估。MaxValue属于静态属性,这类属性要求值在编译阶段就能确定,只能使用常量、枚举值或编译时可解析的常量表达式,无法绑定运行时才会变化的变量。
替代解决方案
若需动态控制字段最大值,可采用以下两种方式:
1. 利用字段OnValidate触发器校验
在表的字段触发器中手动判断输入值是否超出ToValue范围,超出则抛出错误:
field(5; "From"; Integer) { Caption = 'From'; DataClassification = SystemMetadata; trigger OnValidate() begin if "From" > ToValue then Error('输入值不能大于%1', ToValue); end; } var ToValue: Integer;
2. 在页面控件中绑定变量(针对页面展示场景)
如果是在页面中使用该字段,可设置页面控件的MaxValue属性绑定变量——页面控件的该属性支持动态值:
page 50100 "Sample Page" { PageType = Card; SourceTable = SampleTable; layout { area(content) { group(General) { field("From"; "From") { Caption = 'From'; MaxValue = ToValue; } } } } var ToValue: Integer; }
内容的提问来源于stack exchange,提问作者Ozea
相关产品推荐
相关产品推荐

