7.6
Технические вопросы
7.x

Не отрабатывает элемент процесса "Изменить права доступа", при запуске процесса используя AppScheduler

Здравствуйте.

Создал БП UsrTestChangeRight, содержащий только элемент "Изменить права доступа". Запуская процесс вручную, через раздел "Библиотека процессов", он отрабатывает и в таблицу SysAccountRight добавляются записи.
Но если запускать процесс используя AppScheduler, он завершается без ошибок (появляется запись в журнале процессов) но записи в таблице SysAccountRight не добавляются. Запуск происходит при сохранении контрагента, пробовал использовать элемент "Изменить права доступа" напрямую в событийном подпроцессе замещающей схемы, но там нет возможности открыть окно настроек этого элемента.
Код запуска через AppScheduler:

Dictionarystring, object> parameters = new Dictionarystring, object>();
AppScheduler.ScheduleImmediateProcessJob("TestChangeRight", "Account", "UsrTestChangeRight", "Default", "Supervisor", parameters);

Подскажите пожалуйста, в чем может быть проблема?
И какие еще есть способы запустить БП из серверного кода, с передачей параметров?

Насколько я понимаю когда БП запускается через AppScheduler, не получиться получить UserConnetion, какие есть альтернативы UserConnetion, для того что бы подобный код работал:

StoredProcedure SomeProcedure= new StoredProcedure(UserConnection, "SomeProcedure") as StoredProcedure;
SomeProcedure.PackageName = UserConnection.DBEngine.SystemPackageName;
SomeProcedure.Execute();
return true;

Нравится

3 комментария

Здравствуйте!

Как-то все смешалось.
UserConnection берется пользователя, указанного в параметре userName. Вы точно передаете корректные параметры в процесс?

По вызову хранимой процедуры из элемента "Задание-сценарий". Корректный вызов следующий:
StoredProcedure SomeProcedure = new StoredProcedure(UserConnection, "SomeProcedure") as StoredProcedure;
SomeProcedure.Execute();

Также Вы можете задавать права доступа непосредственно из процедурой SomeProcedure, вызвав ее из процесса, передавая в нее нужные параметры, например, Id записи. Код элемента "Задание-сценарий":

var Id=new.Guid("e24018bf-4ef6-49ef-a331-4fdb6b742e4c");
StoredProcedure SomeProcedure = new StoredProcedure(UserConnection, "SomeProcedure")
.WithParameter("Id", Id) as StoredProcedure;
SomeProcedure.Execute();
return true;

Алексей, со второй частью понятно. А что насчет первой "не отрабатывает элемент процесса "Изменить права доступа", при запуске процесса используя AppScheduler" и какие еще есть способы запустить БП из серверного кода, с передачей параметров?

Как вариант вызвать процесс через вебсервис. Более подробно описано здесь.

Показать все комментарии