问题描述
美好的一天
内部版本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中添加动作。我不与现场服务部合作,因此我必须按照培训指南进行更一般的解释。
首先,您必须在“定制项目”的“移动应用程序”部分中添加或编辑屏幕。 (在您的情况下,您想更新现有屏幕。)这将在定制项目中创建一段代码,如下所示:
如您所见,移动应用程序中的原始屏幕定义显示在右侧,您将更新屏幕以添加操作。您将需要添加适当的容器(问题中未显示),然后添加该容器中的操作。
要继续回答,请切换到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中的培训。
如果您使用的是移动应用程序,我强烈建议同时查看T400和T410,因为这些培训指南中的详细信息比Stack Overflow帖子/答案中的解释要简单得多。