【问题标题】:How to override an expression bodied member in a scan screen using ScanExtension?如何使用 ScanExtension 覆盖扫描屏幕中的表达式主体成员?
【发布时间】:2023-02-24 05:29:59
【问题描述】:

我正在尝试为扫描移动屏幕编写自定义,我需要覆盖布尔值 CanOverrideQty,它确定是否启用了设置数量按钮。这是我的代码:

public class ScanMoveExt : ScanMove.ScanExtension
{
    protected override bool CanOverrideQty => (!Base1.DocumentLoaded || Base1.NotReleasedAndHasLines) &&
        (Base1.SelectedLotSerialClass?.LotSerTrack != INLotSerTrack.SerialNumbered || Base1.SelectedLotSerialClass?.LotSerAssign == INLotSerAssign.WhenUsed);
}

这不起作用,因为它表示没有合适的方法可以覆盖。我也试过 [PXOverride] 但我不认为它适用于表达式主体成员。它没有给我一个错误,但它也没有执行我的代码。我可能可以修饰扫描命令并在 SetQtyCommand 上设置启用以获得相同的结果,但为了我自己的信息,我很好奇如何在 ScanExtension 中覆盖这些表达式主体成员。我在 2021R1 之后有关自定义 WMS 屏幕的文档中找不到任何这方面的示例。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    不幸的是,我不相信你能做到这一点。

    When overriding a protected member within Acumatica 图形扩展中的条目必须用 abstract 关键字修饰。考虑到如何编写逻辑来更改 CanOverrideQty 返回的值,您将需要一个表达式主体,不幸的是,abstract 关键字不允许使用该表达式主体。

    [PXProtectedAccess(typeof(ScanMove.Host))]
    public abstract class ScanMoveExtension_ProtAccess : PXGraphExtension<ScanMove.Host>
    {
        [PXProtectedAccess]
        protected abstract bool CanOverrideQty => true;
        //cannot declare a body because it is marked abstract.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多