我有一个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
   }