Как добавить новое действие в мобильное приложение

#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, который сохраняет данные, изменит ли это поведение, которое я выбираю?