如何向移动应用程序添加新操作

How to add a New Action to the mobile App

美好的一天

内部版本 20.107.0026

我创建了一个新操作并想将其添加到我的移动应用程序中。是否可以向移动屏幕添加自定义操作?我在约会屏幕 (FS300200)

中创建了以下操作
namespace PX.Objects.FS
{
    // Acuminator disable once PX1016 ExtensionDoesNotDeclareIsActiveMethod extension should be constantly active
    public class AppointmentEntry_Extension : PXGraphExtension<AppointmentEntry>
  {
    #region Event Handlers

    public PXAction<PX.Objects.FS.FSAppointment> DoWork;
  
    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "DoWork")]
    protected void doWork()
    {

    }

    #endregion
  }
}

手机代码如下。如果我想将按钮添加到主菜单;旁边的 3 个点是否使用 AppointmentRecords 作为容器?

update screen FS300200 {
  update container "AppointmentRecords" {
     add listAction "StartTravelAPICall" {
        behavior = Void
        displayName = "StartTravelAPICall"
      }
  }
}

简短的回答是肯定的!长答案部分取决于您使用的 Acumatica 版本。出于此答案的目的,我假设您在 2019R2 中并且已经知道如何在 Acumatica 中添加或编辑移动应用程序屏幕。如果没有,下面引用的培训指南应该会为您提供实现目标所需的所有详细信息。

如果 screen/action 在浏览器界面中运行,则操作移动应用程序 screens/actions 相对容易。 T410 课程 material 解释了如何在 2019R2 中添加操作。我不在 Field Services 工作,所以我必须根据培训指南进行更笼统的解释。

首先,您必须在自定义项目的移动应用程序部分添加或编辑屏幕。 (在您的情况下,您想要更新现有屏幕。)这将在自定义项目中创建一段代码,如下所示:

如您所见,右侧显示了移动应用程序中的原始屏幕定义,您将更新屏幕以添加您的操作。您将需要添加适当的容器(未在您的问题中显示),然后添加该容器内的操作。

为了继续回答,让我们切换到更新SO303000屏幕的T410课程第12页的培训指南示例。您可以与屏幕进行比较,看看需要更改什么。

add container "InvoiceSummary" {
  # fields declaration
  …
  add recordAction "Save" {
    behavior = Save
  }
  add recordAction "Cancel" {
    behavior = Cancel
  }
  add containerAction "Insert" {
    behavior = Create
  }
  add recordAction "ReleaseAction" {
    syncLongOperation = true
    behavior = Record
  }
}

我相信您的操作将遵循示例底部的 ReleaseAction 部分,是否需要 syngLongOperation = true 将取决于您的操作在做什么(即,如果您需要异步执行操作)。

假设您的容器已在页面中定义(我怀疑是这样),让我们看看第 35 页上的 PO302000 示例。此示例说明如何更新容器以添加您的操作。

update screen PO302000 {
  update container "DocumentSummary" {
    add recordAction "AddPOOrderLine" {
      displayName = "Add PO Line"
      behavior = Void
      redirect = True
      redirectToContainer = "AddPurchaseOrderLine$List"
    }
  }
}

这是一个更复杂的操作,但您的操作可能很简单。

update screen FS300200 {
  update container "ServiceOrderTypeLine" {
    add listAction "DoWork" {
      Behavior = Void
      displayName = "Do Work"
    }
  }
}

如果您需要有关如何阅读 WDSL 架构以识别容器等方面的指导,可以在从第 13 页开始的 T400 中找到该培训。

如果您使用的是移动应用程序,我强烈建议您查看 T400T410,因为这些培训指南中的详细信息比 Stack Overflow 中可以轻松解释的要多得多 post/answer.