#acumatica
#acumatica
Вопрос:
Добрый день
Сборка 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"
}
}
}
Ответ №1:
Короткий ответ — ДА! Длинный ответ частично зависит от того, какую версию Acumatica вы используете. Для целей этого ответа я предполагаю, что вы находитесь в 2019R2 и уже знаете, как добавить или отредактировать экран мобильного приложения в Acumatica. Если нет, то приведенные ниже учебные руководства должны предоставить вам всю подробную информацию, необходимую для достижения вашей цели.
Манипулировать экранами / действиями мобильного приложения относительно легко, если экран / действие работает в интерфейсе браузера. В материалах курса T410 объясняется, как добавить действие в 2019R2. Я не работаю с полевыми службами, поэтому мне придется объяснить более обобщенно в соответствии с учебным руководством.
Сначала вы должны либо добавить, либо отредактировать экран в разделе мобильного приложения проекта настройки. (В вашем случае вы хотите обновить существующий экран.) Это создаст раздел кода в проекте настройки, который выглядит следующим образом:
Как вы можете видеть, исходное определение экрана в мобильном приложении показано справа, и вы будете обновлять экран, чтобы добавить свое действие. Вам нужно будет добавить соответствующий контейнер (не показан в вашем вопросе), а затем действие в этом контейнере.
Чтобы продолжить ответ, давайте перейдем к примеру учебного руководства на странице 12 курса T410 по обновлению экрана 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 будет зависеть от того, что делает ваше действие (т. Е. Если вам нужно, чтобы действие выполнялось асинхронно).
Предполагая, что ваш контейнер уже определен на странице, что, как я подозреваю, так и есть, давайте вместо этого посмотрим на пример для PO302000 на странице 35. В этом примере показано, как ОБНОВИТЬ контейнер, чтобы добавить ваше действие.
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 для идентификации контейнера и т.д., Это обучение находится в T400, начиная со страницы 13.
Я настоятельно рекомендую ознакомиться как с T400, так и с T410, если вы работаете с мобильным приложением, поскольку в этих учебных руководствах гораздо больше деталей, чем можно легко объяснить в сообщении / ответе Stack Overflow.
Комментарии:
1. Привет, Брайан, спасибо за продуманное объяснение. Я обновил свой вопрос. Я добавил, что я создаю в 20.107.0026. Также добавлено название функций, которые я вызываю. мне нужно сделать API, который сохраняет данные, изменит ли это поведение, которое я выбираю?