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

为INItemLotSerial添加带PXDefault当前日期的UsrMfgDate字段仅拆解操作报错

Acumatica拆解操作中UsrMfgDate字段非空错误排查建议

我们在INTran、INTranSplit、INItemLotSerial、POReceiptLine、POReceiptLineSplit这几个表中添加了自定义字段UsrMfgDate,配置了PXDefault默认取当前业务日期,在常规生产订单和采购收货场景下都正常,但执行拆解操作保存时,会抛出“UsrMfgDate不能为空”的错误。字段代码如下:

#region UsrMfgDate
[PXDBDate]
[PXUIField(DisplayName="Mfg Date")]
//[PXDefault(typeof(AccessInfo.businessDate))]
[PXDefault(typeof(AccessInfo.businessDate), PersistingCheck = PXPersistingCheck.NullOrBlank)]

public virtual DateTime? UsrMfgDate { get; set; }
public abstract class usrMfgDate : PX.Data.BQL.BqlDateTime.Field<usrMfgDate> {}    
#endregion

可能的原因

  • 拆解操作的记录生成逻辑绕过了字段默认值触发流程:拆解时后台代码可能直接创建数据库记录,没有走UI或标准初始化流程,导致PXDefault的默认值没有被赋值到字段上
  • AccessInfo.BusinessDate在拆解场景下未正确获取:部分后台操作场景中,AccessInfo上下文可能未正确初始化,导致默认值表达式无法获取到有效日期
  • PersistingCheck校验时机问题:NullOrBlank的校验在拆解记录保存时提前触发,此时字段还未被默认值逻辑赋值

解决建议

  1. 调整字段的校验规则
    将PersistingCheck改为PXPersistingCheck.Nothing,避免强制非空校验,同时保留默认值赋值逻辑:

    [PXDefault(typeof(AccessInfo.businessDate), PersistingCheck = PXPersistingCheck.Nothing)]
    
  2. 通过Row事件手动确保字段赋值
    在对应表的RowInserted或RowPersisting事件中,手动检查并赋值UsrMfgDate,以覆盖所有场景:

    protected virtual void INTran_RowInserted(PXCache cache, PXRowInsertedEventArgs e)
    {
        var tran = (INTran)e.Row;
        if (tran?.UsrMfgDate == null)
        {
            var ai = PXAccess.GetAccessInfo();
            cache.SetValueExt<INTran.usrMfgDate>(tran, ai.BusinessDate);
        }
    }
    
    // 同样的逻辑可以复制到INTranSplit、INItemLotSerial等表的对应事件中
    
  3. 检查拆解操作的后台代码
    如果拆解操作是通过自定义代码实现的,查看是否在创建INTran等表的记录时,没有手动赋值UsrMfgDate,需要在代码中主动设置该字段值为当前业务日期:

    AccessInfo ai = PXAccess.GetAccessInfo();
    newTran.UsrMfgDate = ai.BusinessDate;
    
  4. 验证Lot/Serial表的字段赋值
    拆解操作通常会生成INItemLotSerial记录,重点检查该表的UsrMfgDate是否被正确赋值,因为子表字段的非空错误也可能触发保存失败提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:52:35