Способ определить, если в рамках запущенной запланированной задачи? - PullRequest
1 голос
/ 25 июня 2019

Как я могу определить в логике обработки графа, что он выполняется с помощью запланированной задачи, а не с помощью взаимодействия с пользователем?

PXProcessing, кажется, не имеет большого количества записей в таблице AUSchedule.

Причина: если я нахожусь в интерактивном сеансе, я хочу перенаправить на несколько экранов для документов, которые я создал. В запланированном задании я не хочу загромождать сервер этими перенаправлениями

1 Ответ

0 голосов
/ 25 июня 2019

Посмотрите репозиторий кода в SOShipmentEntry. Найдите SOInvoiceEntry, и он попадет в функцию Action, где он создает счет. Вы можете видеть, что они вызывают функцию adapter.MassProcess, чтобы увидеть, работает ли она в процессе или нет, и выдает исключения, устанавливает информацию или ошибки в зависимости от состояния. Вы также можете увидеть используемый флаг AllowRedirect.

Вот пример перенаправления на счет в конце создания счета на отправку:

SOInvoiceEntry ie = PXGraph.CreateInstance<SOInvoiceEntry>();
......
......
if (adapter.AllowRedirect && !adapter.MassProcess && created.Count > 0)
{
    using (new PXTimeStampScope(null))
    {
        ie.Clear();
        ie.Document.Current = ie.Document.Search<ARInvoice.docType, ARInvoice.refNbr>(((ARInvoice)created[0]).DocType, ((ARInvoice)created[0]).RefNbr, ((ARInvoice)created[0]).DocType);
        throw new PXRedirectRequiredException(ie, "Invoice");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...