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

Acumatica技术咨询:隐藏PO订单录入页面Promised On字段

正确隐藏Acumatica PO订单录入页面Promised On字段的方法

你的当前操作存在不合理的地方:修改PXDBDate和PXDefault这类数据层属性完全没必要,反而可能破坏字段的原有数据规则(比如默认值逻辑),不属于合规的定制方式。下面给你两种正确的实现路径,按需选择:


方法一:纯界面定制(推荐,无需代码)

这是最安全、合规的方式,适合简单的静态隐藏需求:

  • 打开PO301000的定制编辑器,定位到目标Promised On字段(注意区分表头和明细行的字段)
  • 在右侧属性面板中找到Visibility选项,直接设置为Hidden
  • 如果需要更灵活的控制(比如基于订单类型、用户角色隐藏),可以点击Condition属性,设置对应的逻辑表达式(比如[POOrder.OrderType] == 'BL')
  • 保存定制并发布,完成后字段就会被隐藏

方法二:代码扩展(用于动态控制可见性)

如果需要根据业务逻辑动态切换字段可见性(比如某些订单类型显示,某些隐藏),才需要用代码扩展,且只需要修改UI层面的属性,不要触碰数据存储相关的属性:

namespace PX.Objects.PO
{
    public class POOrderEntry_Extension : PXGraphExtension<POOrderEntry>
    {
        #region Event Handlers
        // 隐藏表头的Promised On字段(如果是表头字段)
        [PXUIVisible(false)]
        protected void POOrder_PromisedOn_CacheAttached(PXCache cache)
        {
            // 这里可以添加动态逻辑,比如根据订单类型控制可见性
            // var currentOrder = cache.Current as POOrder;
            // if (currentOrder?.OrderType == "ST")
            // {
            //     var fieldAttr = cache.GetAttributesReadonly<POOrder.promisedOn>(currentOrder)
            //                          .OfType<PXUIVisibleAttribute>()
            //                          .FirstOrDefault();
            //     if (fieldAttr != null) fieldAttr.Visible = true;
            // }
        }

        // 隐藏明细行的Promised On字段(如果是明细行字段)
        [PXUIVisible(false)]
        protected void POLine_PromisedOn_CacheAttached(PXCache cache)
        {
            // 同样可以添加动态控制逻辑
        }
        #endregion
    }
}

为什么你的当前操作不合适?

你修改的PXDBDate(数据存储类型)和PXDefault(默认值规则)是字段的核心数据属性,修改它们会改变字段的底层行为,可能导致数据异常(比如原本的默认值不再生效)。隐藏字段只需要控制UI层面的可见性,完全不需要改动这些核心属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:46:38