Делаю запрос к БД из элемента "Задание-сценарий":
var userConnection = Get<UserConnection>("UserConnection"); var group = Get<string>("ProcessSchemaParameter1"); string selectID = ((Select)new Select(userConnection) .Column("t1", "SysAdminUnitId") .From("SysAdminUnitInRole").As("t1") .Join(JoinType.Inner, "SysAdminUnitInRole").As("t2") .On("t2", "SysAdminUnitInRole").IsEqual("3DAFC997-65E9-47E4-9434-F036077D66F4") .And("t1","SysAdminUnitId").IsEqual("t2","SysAdminUnitId") .Where("t1", "SysAdminUnitRoleId").IsEqual(group)).ExecuteScalar<string>(); string contact = ((Select)new Select(userConnection) .Column("ContactId") .From("SysAdminUnit") .Where("Id").IsEqual(selectID)).ExecuteScalar<string>(); Set("ProcessSchemaParameter1", contact); return true;
И тут появилось 2 момента:
1) как записать в параметр процесса результат (не текстом, а полноценным id)
2) при использовании такого кода выдает ошибки:
Invalid column name '3DAFC997-65E9-47E4-9434-F036077D66F4'
Invalid column name 'a7e3d18a-0f2d-444d-be2b-cd625dc3c097'
Invalid column name 'SysAdminUnitInRole'
Нравится
Ошибки у Вас возникают из-за того, что некорректно построен запрос с помощью класса Select.
1. Invalid column name '3DAFC997-65E9-47E4-9434-F036077D66F4'
IsEqual("3DAFC997-65E9-47E4-9434-F036077D66F4") замените на IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4")))
2. Invalid column name 'a7e3d18a-0f2d-444d-be2b-cd625dc3c097'
IsEqual(group) на IsEqual(Column.Const(group))
Аналогично и с IsEqual(selectID)
3. Invalid column name 'SysAdminUnitInRole'
В табличке, которую Вы джойните нет такого поля. Вероятнее всего - это поле с типом уникальный идентификатор и следовательно должно заканчиваться на Id.
Относительно первого вопроса: по-моему, Вы неправильно получаете нужные Вам значения. Как это делать можно посмотреть в таких постах: https://community.terrasoft.ru/articles/bpmonline-kak-opredelit-avlaetsa-li-tekusii-polzovatel-administratorom и https://community.terrasoft.ru/questions/pravilnoe-ispolzovanie-dbexecutor
Также хочу обратить Ваше внимание, что получить нужные значение можно с помощью класса EntitySchemaQuery. Более подробно можно почитать здесь.
Ошибки у Вас возникают из-за того, что некорректно построен запрос с помощью класса Select.
1. Invalid column name '3DAFC997-65E9-47E4-9434-F036077D66F4'
IsEqual("3DAFC997-65E9-47E4-9434-F036077D66F4") замените на IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4")))
2. Invalid column name 'a7e3d18a-0f2d-444d-be2b-cd625dc3c097'
IsEqual(group) на IsEqual(Column.Const(group))
Аналогично и с IsEqual(selectID)
3. Invalid column name 'SysAdminUnitInRole'
В табличке, которую Вы джойните нет такого поля. Вероятнее всего - это поле с типом уникальный идентификатор и следовательно должно заканчиваться на Id.
Относительно первого вопроса: по-моему, Вы неправильно получаете нужные Вам значения. Как это делать можно посмотреть в таких постах: https://community.terrasoft.ru/articles/bpmonline-kak-opredelit-avlaetsa-li-tekusii-polzovatel-administratorom и https://community.terrasoft.ru/questions/pravilnoe-ispolzovanie-dbexecutor
Также хочу обратить Ваше внимание, что получить нужные значение можно с помощью класса EntitySchemaQuery. Более подробно можно почитать здесь.
Алла Савельева,
Спасибо за помощь, это помогло мне решить проблему