День добрый, Коллеги!
Необходима помощь в решении нескольких тривиальных задач при построении БП (решение желательно листинг простенький или ссылку)
1) Как программно через элемент БП задание-сценарий получить ID созданной записи из элемента Страница редактирования
2) Как программно через элемент БП задание-сценарий получить/установить параметр БП
3) Как в условном потоке написать условие ID!=null, при том что ID с типом уникальный идентификатор
Данные вопросы возникли при решении простой задачи: при входе в подпроцесс на него передается AccountID -> при старте БП идет проверка AccountID есть/нет
если есть, то идем к шагу задачи
если нет, то идем на шаг с создание Контрагента
На данный момент реализация проверки на AccountID!=null довольно убогая... через чтение данных получаю count записей с id = AccountID и в условном потоке проверяю сравнением...
p.s. так же наблюдается некоторая странность при запуске подпроцесса. Первая задача падает в расписание, а не появляется сразу на экран (остальные задачи в подпроцессе отрабатывают нормально), возможно есть какая-нибудь настройка или прием?
p.p.s. Я пытался найти описание методов для получения коллекции параметров БП в SDK, но не нашел ) если они там есть и я просто проглядел - скиньте ссылку
Заранее спасибо!
Нравится
Артем, добрый день.
Прежде всего, хочу уточнить, что в стартовом элементе с типом "Сигнал" можно сразу же задать условия, выполнение которых является обязательным для старта БП по данному сигналу:
Но, т.к. в таком случае, Вам бы пришлось создать два БП, рассмотрим конкретно Ваш кейс.
БП будет следующим:
Стартовое сообщение - сигнал на объекте "Активность" после добавления новой записи.
Далее в элементе "Чтение данных" считываем все поля записи, по которой был запущен процесс:
После этого, создаем условный поток к элементу "Создание нового контрагента", условие следующее:
ReadDataUserTask1.ResultEntity.GetTypedColumnValue<Guid>("Account.Id") != Guid.Empty
где ReadDataUserTask1 - название элемента "Чтение данных".
и потом добавляем поток по умолчанию к элементу "Создать новую задачу".
В принципе это всё.
Если будут вопросы - обращайтесь.
Спасибо, Дмитрий!
Вопрос N3 можно считать решенным ) (не знал что в условии можно использовать C#)
К сожалению, Ваш способ по созданию контрагента мне не подходит по причине того, что необходимо далее передавать AccountID в подпроцесс (видимо нужно было более детально описать пример).
если при старте родительского БП AccountID был заполнен (была связь Лида с контрагентом), то передавать далее в подпроцесс необходимо именно его
, а если при старте родительского БП AccountID пустой (например Лида квалифицировали как контакт и поле Контрагент пустое), то передавать далее в подпроцесс необходимо идентификатор записи из шага "Создайте нового контрагента".
Можно конечно решить вопрос с помощью конструктора, но это избыточность в чистом виде =\ куда проще мне было бы вставить после шага "Создайте нового контрагента" скриптик, который просто заполнил бы параметр процесса AccountID идентификатором созданной записи из шага "Создайте нового контрагента" + я практически на 100% уверен что в будущем еще не раз придется работать с параметрами БП через скрипт.
Так что вопросы 1,2 все еще актуальны
Артём, добрый день.
Если Вы добавили в структуру процесса параметр MyParam с типом GUID, то обратиться к нему можно просто:
MyParam = new Guid(stringGuid); Guid fromParam = MyParam;
это по второму вопросу. Т.е. обращаемся в любом скрипте процесса по имени параметра.
По первому вопросу:
Если Вы раскроете действие "Открыть карточку редактирования", то увидите там параметр RecordId, с него и считывайте:
Guid recordId = OpenPageElement1.RecordId;
Спасибо Дмитрий!
На этот раз все вопросы сняты
С уважением,
Волков Артем