столкнулся с точно такой же проблемой.
если в методе класса BatchRun
X++:
if (batchClass.runsImpersonated())
{
// Ok to assert here because the user name comes from
// the batch table
runAsPermission = new RunAsPermission(batch.CreatedBy);
runAsPermission.assert();
// BP Deviation Documented
runas(batch.CreatedBy,
classnum(BatchRun),
staticmethodstr(BatchRun, runJobStatic),
[batchId]);
CodeAccessPermission::revertAssert();
}
else
{
BatchRun::runJobStatic([batchId]);
}
сделать так, чтоб переходили на ветку else, то в её недрах виден некий лишенец в поле Event.UserId, из-за которого и происходит исключительная ситуация.
проблему поборол очисткой таблицы EventCUD, но какая связь между ид пользователя, породившим событие и пакетной обработкой, я так и не понял.