Существует не так много допустимых сценариев, когда у вас есть 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();
}
}