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

Acumatica定制Process Shipments:添加PO Receipts的BranchID字段问询

核心原因

你在屏幕设计器找不到多视图配置的原因是,Process Shipments(屏幕ID SO503000)的PO Receipt网格动态列逻辑,并不依赖多视图实现,而是通过服务端RowSelected事件动态控制列的可见性,和你观察到的「不同操作对应不同Select查询」是两个独立逻辑,不存在可视化的一键配置开关。

实现步骤

  • 第一步:创建BLC扩展
    给标准逻辑PX.Objects.SO.SOProcessShipments创建自定义BLC扩展,不需要修改原数据视图的Select语句,POReceipt.BranchID是系统原生字段,查询时会自动带出。
  • 第二步:手动添加网格列
    打开定制编辑器的SO503000屏幕设计器,找到PO Receipt对应的网格控件,手动添加POReceipt__BranchID列,设置列头显示为分支ID,默认该列会处于隐藏状态。
  • 第三步:添加事件控制列可见性
    在BLC扩展中添加POReceipt的RowSelected事件,判断当前选中的操作是否为「Prepare Drop-Ship Invoice」,动态控制BranchID列的可见性,代码示例如下:
    public class SOProcessShipmentsExt : PXGraphExtension<SOProcessShipments>
    {
        protected virtual void POReceipt_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
        {
            if (e.Row == null) return;
            // 获取当前选中的处理操作
            var processActionState = Base.Actions[nameof(Base.Process)].GetState(null) as PXActionState;
            bool isTargetAction = processActionState?.MenuCaption == "Prepare Drop-Ship Invoice";
            // 动态设置BranchID列可见性
            PXUIFieldAttribute.SetVisible<POReceipt.branchID>(cache, e.Row, isTargetAction);
        }
    }
    
  • 第四步:保存定制并发布即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:18:03