Вопрос

У меня есть элемент "Читать данные", у него есть ИД, Имя, и другие параметры сущности, которую считали. Как получить значения этих параметров из кода в элементе "Задание-сценарий"?

У меня такой же вопрос

2 комментария
Лучший ответ

Добрый день! вот ссылка на статью https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-proces…
 

Метод Get возвращает значение параметра элемента или процесса.

Сигнатура метода:

Get<T>(string path)

где:

T — тип значения параметра;

path — строка, определяющая путь к параметру или свойству. Путь формируется согласно правилам:

•“имя параметра”,

•“имя свойства”,

•“имя элемента.имя параметра”,

•“имя элемента.имя свойства”

Добрый день! вот ссылка на статью https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-proces…
 

Метод Get возвращает значение параметра элемента или процесса.

Сигнатура метода:

Get<T>(string path)

где:

T — тип значения параметра;

path — строка, определяющая путь к параметру или свойству. Путь формируется согласно правилам:

•“имя параметра”,

•“имя свойства”,

•“имя элемента.имя параметра”,

•“имя элемента.имя свойства”

Вы можете нужные Вам значения из элемента "Читать данные" добавить в параметры бизнес-процесса (БП), а потом в элементе "Задание-сценарий" вычитать их из параметров БП с помощью метода Get

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

О компании

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

 

Предпосылки внедрения bpmonline

Вся работа с заявками клиентов на перевозку до внедрения bpmonline велась в почтовом клиенте Outlook. Такой подход усложнял обработку заявок клиентов и контроль эффективности менеджеров. Для составления отчетов о количестве заявок от клиентов требовалось значительное время. Не было понимания общей картины работы менеджеров и отсутствовала аналитика удовлетворенности клиентов от взаимодействия с компанией.

 

Задачи внедрения bpmonline

  • Автоматизация процесса обработки обращений клиентов
  • Автоматизация процессов коммуникаций между смежными отделами компаний

Выполненные настройки

В первую очередь были формализованы процессы взаимодействия с клиентами. Последовательность действий менеджера зависит от продукта, по которому обращается клиент. На основании этого составлен список сервисов, по которым может обратиться клиент и предусмотрены сроки выполнения заявок. Следующим шагом была детальная проработка и настройка кейсов с помощью инструмента Case Management. В разделе [Обращения] настроены кейсы в зависимости от сервиса. В каждом кейсе реализованы соответствующие подпроцессы и добавлены активности для менеджеров. Подпроцессы выполняют автоматическую отправку писем с целью запроса информации необходимой для выполнения запроса клиента у сотрудников смежных отделов.

Поскольку при взаимодействии с клиентом и выполнении его заявки есть необходимость направлять письма другим сотрудникам и несколько раз согласовывать информацию с клиентом, то принципиально важным был вопрос уведомления менеджера о получении ответов по письмам, «привязанным» к обращению, которое у него в работе. Для решения этой задачи реализован процесс заливки цветом тех обращений, у которых проставлен признак «Получен ответ». Этот признак, в свою очередь, присваивается тем обращениям, у которых появилось письмо с типом входящее. После прочтения менеджер снимает признак «Получен ответ» и обращение приобретает стандартный цвет в реестре записей.

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

После автоматизации процессов обработки заявок на перевозку был адаптирован процесс оценки обращений согласно требованиям клиента. Отправка уведомления с целью запроса оценки по обращению должна выполняться, но клиенты, которые постоянно сотрудничают с компанией DB Schenker, не должны получать системные уведомления. Для решения задачи была создана группа сервисов, при выборе которых запрос оценки по обращению не осуществляется.  Кроме этого, реализован кейс, в котором менеджер может перевести обращение на стадию «Запрос оценки», что запустит процесс отправки уведомления клиенту. Таким образом запрос оценок происходит по определенным клиентам там, где необходимо мониторить качество работы менеджеров.

Результат

Изменения процессов, которые произошли в результате внедрения bpmonline, значительно усовершенствовали взаимодействие менеджеров с клиентами компании. Результатом внедрения стал ряд достижений и улучшений:

  1. Агрегация всей информации в одной системе, что позволяет отслеживать и анализировать показатели работы менеджеров.
  2. Настройка процессов, которые помогают менеджеру выполнять заявку клиента, создают соответствующие активности и автоматически выполняют действия вместо менеджера.
  3. Возможность получать данные об удовлетворенности клиентов и запрашивать оценку в индивидуальном порядке с целью ограничить постоянных клиентов от множества писем.

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Возникла задача в Select сравнивать ID с коллекцией.

Коллекция находится другим запросом Select. Сейчас выглядит все так-то так:

var userConnection = Get<UserConnection>("UserConnection");
var group = Get<string>("GroupID");
 
var selectID = ((Select)Select(userConnection)
   .Column("SysAdminUnitId")
   .From("SysAdminUnitInRole")
   .Where("SysAdminUnitRoleId").IsEqual(Column.Const(group))).ExecuteScalar<string>();
 
var select = ((Select)(new Select(userConnection)
   .Column(Func.Count("Id"))
   .From("SysUserInRole")
   .Where("SysRoleId").IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4")))
   .And("SysUserId").In((selectID)))).ExecuteScalar<int>();
 
Set("BossInGroup", select);  
 
return true;

И если у меня 1 параметр, все отрабатывает как задумано. Стоит вопрос - как переделать первый Select и добавить его во второй?

Буду признателен за помощь.

У меня такой же вопрос

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

Вот так (без ExecuteScalar во внутреннем Select):

new Delete(UserConnection).From("ActivityParticipant")
	.Where("ParticipantId").IsEqual(Column.Parameter(Entity.ParticipantId))
	.And("Id").IsNotEqual(Column.Parameter(Entity.Id))
	.And("ActivityId").In(
new Select(UserConnection)
	.Column("ActivityId")
.From("ActivityParticipant")
.Where("ParticipantId").IsEqual(Column.Parameter(Entity.ParticipantId)))
.Execute(dbExecutor);

 

var userConnection = Get<UserConnection>("UserConnection");
var group = Get<string>("GroupID");
 
var select = ((Select)(new Select(userConnection)
   .Column(Func.Count("Id"))
   .From("SysUserInRole")
   .Where("SysRoleId").IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4")))
   .And("SysUserId").In(new Select(userConnection)
   .Column("SysAdminUnitId")
   .From("SysAdminUnitInRole")
   .Where("SysAdminUnitRoleId").IsEqual(Column.Const(group))))).ExecuteScalar<int>();
 
Set("BossInGroup", select);  
 
return true;

Спасибо, все получилось.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Как можно создать печатную форму по объекту детали? При выборе объекта доступны только разделы
В результате нужно вывести печать в меню действий детали

У меня такой же вопрос

2 комментария
Лучший ответ

Григорий Чех,

Я так понимаю, что весь вопрос в том и состоит, чтобы сделать отчет стандартными средствами.

Совсем костыльный вариант - это на основании нужной детали сделать раздел и для него настроить печатную форму, но вызов отчета Вам все равно придется реализовывать самостоятельно.

Коробочный механизм позволяет выбрать только разделы. Выможете свой вариант печати добавить в меню действия раздела (не печати) или вывести отдельную кнопку

Григорий Чех,

Я так понимаю, что весь вопрос в том и состоит, чтобы сделать отчет стандартными средствами.

Совсем костыльный вариант - это на основании нужной детали сделать раздел и для него настроить печатную форму, но вызов отчета Вам все равно придется реализовывать самостоятельно.

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

 

О компании

«BRITA» является одним из технологических лидеров и ведущим авторитетным экспертом в сфере улучшения качества воды. Специалисты компании гарантируют высокое качество своей продукции благодаря проведению научных исследований в области очистки воды и созданию разработок на их основе.

Среди достижений «BRITA» — многочисленные международные награды «Design Awards» за постоянное усовершенствование своих товаров. Основа успешности компании — стремление максимально расширить ассортимент предлагаемой продукции.

Предпосылки внедрения bpmonline

Клиентская база компании не была консолидирована в единой системе, что приводило к потере клиентов и истории взаимодействия с ними в случае завершения трудовых отношений с менеджерами компании.

Также ведение информации о выполненном сервисном обслуживании выполнялось в электронных таблицах, что не отображало общей картины работы сервисной службы, не позволяло анализировать и улучшать предоставление сервисных услуг, а также отслеживать результаты работы сервис-инженеров и контролировать выполнение установленных KPI.

Задачи внедрения bpmonline

  1. Ведение клиентской базы и истории взаимодействия с клиентами компании (сделки, сервисное обслуживание, мультиканальные коммуникации) в единой системе.
  2. Сегментация клиентской базы на потенциальных и действующих клиентов для качественной обработки по настроенному процессу с целью увеличения объёмов продаж.
  3. Ограничение прав доступа менеджеров к клиентской базе для обработки ответственными только закрепленными за ними клиентов.
  4. Консолидация информации по выполненному и планируемому сервисному обслуживанию в карточке клиента.
  5. Возможность обработки обращений сервисными инженерами в мобильном приложении без необходимости находиться за стационарным ПК.
  6. Получение сводной информации по работе сервисной службы компании для анализа и повышения качества предоставления услуг.

Для выполнения поставленных задач была выбрана система bpmonline sales и bpmonline service.

В рамках данного кейса будут описаны настройки, выполненные для блока bpmonline service.

Выполненные настройки

В карточке контрагента была добавлена вкладка «Сервисное обслуживание» для фиксации информации об условиях сервисного обслуживания клиентов. На вкладке отображается информация по установленному оборудованию клиента, характеристикам воды и дате проведения последнего сервисного обслуживания (Рис. 1)

                                                                     Рис.1

Настроен бизнес-процесс для автоматического расчёта даты следующего сервиса в зависимости от периода предоставления сервисного обслуживания данному контрагенту. При проставлении даты проведения последнего сервиса появляется окно для выбора периода проведения следующего. (Рис. 2)

                                                                      Рис.2

В зависимости от выбранного периода в карточке проставляется планируемая дата сервиса. За две недели до планируемой даты сервисного обслуживания ответственному сотруднику автоматически назначается задача: «Связаться с контрагентом по вопросам проведения планового сервиса».

Обработка обращений

Все заявки на проведение сервисных работ регистрируются в разделе [Обращения] инженером по качеству. В карточку обращения для удобства обработки выведена деталь [Сервисное обслуживание], на которой отображается установленное у контрагента оборудование. Кроме этого, в карточку обращения выведено справочное поле «Адрес проведения ремонтных работ». В поле отображается список адресов контрагента благодаря настроенным бизнес-правилам фильтрации адресов по контрагенту из обращения.

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

Процесс обработки обращений в мобильном приложении:

  • В мобильном приложении было добавлено рабочее место сервис-инженера, которое включает в себя основные разделы системы, необходимые для обработки заявок на проведение сервиса.
  • Выполнена настройка страницы обращения. Карточка обращения содержит следующую информацию (Рис. 3):
  • номер, тема и описание обращения;
  • состояние обращения;
  • контрагент;
  • адрес проведения ремонтных работ;
  • желаемая дата выполнения работ;
  • комментарии;
  • деталь [Сервисное обслуживание], на которой отображается список установленного оборудования контрагента.

                                                                     Рис. 3

  • Был настроен бизнес-процесс отправки push-уведомлений: в момент, когда инженер назначается ответственным по новому обращению, ему в мобильном приложении приходит соответствующее уведомление.
  •  По завершению проведения сервисных работ инженер фиксирует результаты на детали [Категории работ] непосредственно в мобильном приложении (Рис. 4) и изменяет статус обращения, в результате чего по настроенному бизнес-процессу об этом уведомляется инженер по качеству.
  • Инженер по качеству проверят результат выполнения обращения и переводит обращение в состояние «Закрыто».  

                                                                     Рис. 4

 Одним из ключевых показателей работы сервисных инженеров является показатель «Выполненные работы». Для получения сводной информации по выполненным работам все сервисных инженеров был настроен дашборд (Рис. 5), в котором отображаются все записи детали «Категории работ» из закрытых обращений. 

                                                                       Рис. 5

Также настроен дашборд, отображающий итоговое количество закрытых обращений по ответственным инженерам за текущий месяц. (Рис. 6)

                                                                        Рис. 6

Результат

Выполненные настройки мобильного приложения и настроенные push-уведомления позволили сервисным инженерам без дополнительных манипуляций (звонков) получать информацию о новых обращениях и фиксировать результаты работы непосредственно по факту их выполнения, что в свою очередь позволило сократить время обработки заявок на сервис и улучшить качество предоставления услуг для клиентов компании Brita.

 

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Делаю запрос к БД из элемента "Задание-сценарий":
 

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'

У меня такой же вопрос

2 комментария
Лучший ответ

Ошибки у Вас возникают из-за того, что некорректно построен запрос с помощью класса 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. Более подробно можно почитать здесь.

Алла Савельева,

Спасибо за помощь, это помогло мне решить проблему

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем доброго времени суток. Версия 7.12.

На странице Обращений есть удобный способ подстановки в текст письма изображения - непосредственно из буфера обмена.

Можно ли сделать такую же штуку для соседней вкладки - отправки сообщения на портал? Вставить изображение не удаётся, несмотря на то, что оно в буфере есть.

У меня такой же вопрос

1 комментарий

Стандартно такой возможности нет. Разве что делать свою доработку. Можно вставить только картинку, уже опубликованную на каком-то сайте, если скопировать текст с картинкой из браузера. Аналогично и с лентой, см. обсуждение.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем доброго времени суток. Версия 7.12.

При открытии страниц Контакта и Контрагента возникают следующие ошибки в консоли:

Ошибки одинаковые, и в целом можно сказать, что каждая соответствует какой-либо из деталей, выведенных на странице Контакта.

Перед этим в бизнес-процессе ставили простановку, а в другом процессе - удаление прав на просмотр-редактирование-удаление контакта (конкретного) для пользователя (по id текущего). Далее процессы проверяли под пользователем-администратором, по умолчанию имеющим все права. Связана ли ошибка с этим?

У меня такой же вопрос

3 комментария
Лучший ответ

Смородинов Денис,

Тогда почему Вы считаете, что ошибка связана с правами доступа?

Попробуйте сгенерировать для всех схем исходные коды и перекомпилировать все приложение.

Если после выполнения этих действий проблема останется, тогда нужно смотреть точечно в какой момент и каком месте она возникает.

Я правильно понимаю, что эти ошибки возникают под обычным пользователем, а под пользователем с правами админа - нет?

Алла Савельева,

и под админом тоже.

Смородинов Денис,

Тогда почему Вы считаете, что ошибка связана с правами доступа?

Попробуйте сгенерировать для всех схем исходные коды и перекомпилировать все приложение.

Если после выполнения этих действий проблема останется, тогда нужно смотреть точечно в какой момент и каком месте она возникает.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем доброго времени суток. Версия 7.12.2

Ситуация следующая: на проекте было создано несколько пакетов, без подключения к хранилищу. По ходу дела понадобилось подключить svn, было создано хранилище, через базу установлена связь с пакетом.

Однако пакет всё равно не получается закоммитить в svn. Скриншот возможной ошибки: https://www.screencast.com/t/7BFlj3ty

Возможно есть какая-то инструкция, можно ли подключить к svn пакет после создания?

У меня такой же вопрос

1 комментарий
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Существует задача - задать вопрос пользователю, который является начальником у контакта, который запускает БП. Организационная структура большая, поэтому базовые способы не подходят.

Все начальники входят в функциональную роль "Начальники".

Реализацию вижу следующим способом:
1) Считать группу ответственных
2) Найти контакт, который входит в эту группу и в группу "начальники"
3) Если этот контакт не совпадает с ответственным, запустившим БП, то передать его в параметр БП
4) Если контакт совпадает, то взять ParentRoleID и повторить поиск по новой группу+группа начальников, а затем уже передать найденный контакт в параметр БП
5) Если вышестоящей группы нет - тогда уже передать что есть (контакт, совпадающий с ответственным, запустившим БП)

Навыки владения C# скудны, поэтому прошу помощь в понимании следующих нюансов:
1) Как считать нужные данные
2) Как найти контакт, который входит в обе группы
3) Как передать найденное значение в параметр БП для его дальнейшего использования

Буду признателен за помощь.

 

У меня такой же вопрос

12 комментариев

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

Это можно было бы сделать, будь у меня пользователь только в одной роли. Как найти ID пользователя, если он в организационной роли и функциональной?

Настраивать нужное условие фильтрации.

Зверев Александр,

Любые мои варианты сделать фильтрацию провалились. Как сделать фильтр, если человек может быть в двух группах и мне нужно найти его? Было бы "или" - вопросов нет. Если предлагаете какой-то вариант - тогда предлагайте до конца. 

Поэтому возвращаемся к исходной задаче и к элементу [Задание-сценарий]. Просто документации с хорошо расписанными примерами просто нету, вот и прошу помощи

А что не так с «или»?

Зверев Александр,

Мне надо найти пользователя, который входит сразу и в группу ответственных и в группу функциональную. Это никак не "или". Я не говорю что там нет "или", я говорю что в моей задаче надо "и". И вроде как в описании задачи это написано.

Было бы "или" - вопросов нет.

 Это никак не "или". Я не говорю что там нет "или", я говорю что в моей задаче надо "и".  

Вы всё же определитесь, что Вам надо. Напишите  SQL-запрос, которым бы хотели фильтровать записи, а потом уже думайте, как перевести на язык фильтров в дизайнере или на язык EntitySchemaQuery или Select в C#-скриптах.

Написал sql запрос, который находит нужный мне ID контакта (начальник отдела). Может по нему будет проще понять что же я хочу получить в итоге. Сами ID для поиска заранее определяются в БП:

A7E3D18A-0F2D-444D-BE2B-CD625DC3C097 - организационная роль
3DAFC997-65E9-47E4-9434-F036077D66F4 - функциональная роль

SELECT [ContactId]
 FROM [URFUbase].[dbo].[SysAdminUnit] where [id] in (SELECT distinct r1.[SysAdminUnitId]
 FROM [URFUbase].[dbo].[SysAdminUnitInRole] r1
	join [URFUbase].[dbo].[SysAdminUnitInRole] r2 on r2.SysAdminUnitRoleId = '3DAFC997-65E9-47E4-9434-F036077D66F4' and r1.[SysAdminUnitId]=r2.[SysAdminUnitId] 
 where r1.SysAdminUnitRoleId = 'A7E3D18A-0F2D-444D-BE2B-CD625DC3C097')

 

Такой запрос, наверное, будет делать при помощи класса Select. Там синтаксис почти полностью повторяет SQL.

И этот запрос, мне кажется, было бы логичнее вывернуть наизнанку, сделав выборку из SysAdminUnitInRole r1 корневой, а получение Id контакта — колонкой подзапроса или ещё одним join-ом.

 

К сожалению у меня не получается реализовать задуманное. Даже близко не могу приблизиться к реализуемому. Выходит что-то такое:

UserConnection userConnection = Get<UserConnection>("UserConnection");
var group = Get<Guid>("ProcessSchemaParameter1");
var subSelect = new Select(userConnection).Column("r1", "SysAdminUnitId")
	.From("SysAdminUnitInRole").As("r1").Join("SysAdminUnitInRole").As("r2")
		.On("r2","SysAdminUnitInRole").IsEqual("3DAFC997-65E9-47E4-9434-F036077D66F4")
			.And("r1","SysAdminUnitId").IsEqual("r2","SysAdminUnitId").Where("r1","SysAdminUnitRoleId").IsEqual(group);
var Select = new Select(userConnection).Column("ContactId").From("SysAdminUnit").Where("Id").IsEqual(subSelect);
Set("ProcessSchemaParameter2", Select);
return true;

Очень нужна помощь в понимании того как делать правильно

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", "SysAdminUnitRoleId").IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4")))
   .And("t1","SysAdminUnitId").IsEqual("t2","SysAdminUnitId")
   .Where("t1", "SysAdminUnitRoleId").IsEqual(Column.Const(group))).ExecuteScalar<string>();
var contact = ((Select)new Select(userConnection)
	.Column("ContactId")
	.From("SysAdminUnit")
	.Where("Id").IsEqual(Column.Const(selectID))).ExecuteScalar<string>();
 
Guid contactId = new Guid (contact);
Set("ProcessSchemaParameter2", contactId);  
 
return true;

Это нечто решает мою задачу, а именно ищет ID контакта, который является начальником в заданной группе

Поправка, лучше использовать таблицу SysUserInRole

Войдите или зарегистрируйтесь, чтобы комментировать