Несколько ошибок на экране - PullRequest
0 голосов
/ 16 января 2019

Можно ли отобразить ошибку на панели инструментов без использования [PXProcessButton] и делегата?Я переопределил кнопку процесса в acumatica, но перед ее выполнением у меня есть базовые коды для проверки условия и выдачи ошибки, если она найдется.

1 Ответ

0 голосов
/ 16 января 2019

Существует не так много допустимых сценариев, когда у вас есть PXProcessButton без представления данных PXProcessing или PXFilteredProcessing. Я ожидал бы, что PXButton будет использоваться, когда нет PXProcessing представления данных вместо PXProcessButton.

С представлением PXProcessing на экране процесса вы должны сделать:

PXProcessing<DAC>.SetError(new PXException("Test));

Я не знаю метода, который позволял бы напрямую устанавливать ошибку на панели инструментов. Вы заметите, что эти ошибки связаны с PXLongOperation. На главной панели инструментов вы увидите значок песочных часов длинной операции, и он может измениться на значок успеха или ошибки.

Действие процесса делает это, но также и сохраняет действие среди других. Если вам не требуется длительная операция, я бы посоветовал не отображать ошибку на главной панели инструментов, поскольку в базовом продукте Acumatica такого поведения нет.

Тем не менее, вы можете реплицировать эту функциональность практически везде, бросая PXException из PXLongOperation в обработчик событий PXAction, например:

  public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
  {
    public PXAction<SOOrder> test;

    [PXUIField(DisplayName = "Test")]
    [PXButton]
    protected virtual IEnumerable Test(PXAdapter adapter)
    {
      PXLongOperation.StartOperation(Base, delegate {
        throw new PXException("Test");
      });

      return adapter.Get();
    }
  }

enter image description here

...