Как выполнить хранимую процедуру - PullRequest
1 голос
/ 24 мая 2019

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

Мой пример кода ниже:

using (new PXConnectionScope())
{
  using (PXTransactionScope ts = new PXTransactionScope())
   {
     PXDatabase.Execute("MYSTOREDPROCEDURE", pars.ToArray());
     ts.Complete();
    }
 }

1 Ответ

0 голосов
/ 24 мая 2019

Попробуйте выполнить долго выполняющийся код в контексте PXLongOperation. Я предполагаю, что они устанавливают соединение с периодическим пингом, чтобы избежать тайм-аута в ожидании получения данных.

PXLongOperation.StartOperation(Base, delegate()
{
   // Code executed in long operation context
});

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

Последним средством было бы увеличение времени ожидания в файле web.config. Использование хранимых процедур в основном относится к хостингу SAAS и получению сертификата Acumatica ISV. Вероятно, официальной поддержки этому нет, но я сомневаюсь, что это исчезнет.

...