如何向移动应用添加新动作

问题描述

美好的一天

内部版本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个点用作容器吗?

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

解决方法

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

如果屏幕/动作在浏览器界面中有效,则操作Mobile App的屏幕/动作相对容易。 T410课程材料介绍了如何在2019R2中添加动作。我不与现场服务部合作,因此我必须按照培训指南进行更一般的解释。

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

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

要继续回答,请切换到T410课程第12页的培训指南示例,以更新SO303000屏幕。您可以将其与屏幕进行比较,以查看需要更改的内容。

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帖子/答案中的解释要简单得多。