Причина выпуска:
Класс
SysSecurity
по умолчанию настроен для работы на Client
. Изменение метода constructSecurityKeySet на server client static
не поможет запустить код на сервере. Вы можете изменить свойство RunOn в классе SysSecurity, но может быть причина, по которой оно установлено на Client
. Следовательно, я не рекомендовал бы вариант изменения режима RunOn на Client
.
Однако, если вы все еще хотите попробовать запустить код в пакетном режиме. Вы можете прочитать нижеприведенное описание о той же самой ошибке, с которой я столкнулся, и о том, как я решил проблему, используя обходной путь.
Аналогичная проблема:
Я столкнулся с тем же сообщением об ошибке при попытке запустить SalesInvoice
отчет в пакетном формате по электронной почте с накладной в формате PDF.
The server-side impersonated (RunAs) session tried to invoke a method that is available for client-side processing only.
Проблема, связанная с моим сценарием, заключалась в том, что в отчете содержалось изображение, и в него включался логотип, связанный с обработкой на стороне клиента, и пакетный процесс не мог справиться с этим во время работы на сервере. Задания, добавленные в пакетный процесс, всегда выполняются на Server
.
Выполните следующие шаги в AX, чтобы найти эту информацию.
- Перейдите к
Basic \ Inquiries \ Batch job
- Нажмите пакетное задание
- Нажмите
View tasks
справа, чтобы открыть окно задач
- В окне Задачи в столбце
Run location
должен отображаться Server
, где выполняется задание.
Внимание:
Я бы предложил с осторожностью использовать упомянутый ниже подход для обновления данных пакетных заданий в базе данных с помощью запроса T-SQL.
Возможное исправление:
Чтобы выполнить на клиенте задание SalesInvoice
, как это делалось в 4.0, в итоге я изменил значение непосредственно в базе данных, используя следующий запрос.
UPDATE dbo.BATCH SET RUNTYPE = 0 WHERE CAPTION = '<Your job caption name...>'
Как только запрос был выполнен для обновления данных пакетного задания, убедитесь, что для столбца Run location
в окне Задачи задания установлено значение Client
. Когда задание задано для запуска в Client , оно не будет выполняться, пока не будет запущена пакетная обработка. Пакетная обработка может быть запущена путем перехода к Basic \ Periodic \ Batch \ Processing
.