我有一个SOShipment类的可以为空的bool DAC扩展字段(PXDBBool),它在插入SOShipment表时总是抛出一个错误:
无法将值NULL插入“UsrSignatureRequired”列,表'Acumatica_6_10_1219.dbo.SOShipment';列不允许空值 . INSERT失败 . 该语句已终止 .
我在扩展上尝试了PXDefault(false)的属性,将属性getter返回的local var显式设置为false,并在FieldDefaulting处理程序中显式设置它 . 唯一可行的方法是在FieldDefaulting处理程序中显式设置它,但过早调用处理程序(在初始化货件的订单列表之前) . 我还尝试在SOOrderShipment的RowSelected事件中明确设置它,因为我试图根据货件是否满足多个订单来设置新的字段值,但是然后新值没有,我仍然得到空错误 . 注意:我也尝试使用不可空的bool,但得到相同的结果 .
必须有一些我想念的简单 . 知道为什么PXDefault(false)对我不起作用,插入时似乎总是为空?
使用v6.10.1219
这是DAC扩展类:
public class SOShipmentExtension : PXCacheExtension<PX.Objects.SO.SOShipment>
{
#region UsrSignatureRequired
[PXDBBool]
[PXUIField(DisplayName="Signature Required")]
[PXDefault(false)]
public virtual bool? UsrSignatureRequired { get; set; }
public abstract class usrSignatureRequired : IBqlField { }
#endregion
#region UsrSignatureRequiredOverride
[PXDBBool]
[PXDefault(false)]
public virtual bool? UsrSignatureRequiredOverride{ get; set; }
public abstract class usrSignatureRequiredOverride: IBqlField { }
#endregion
}