Сценарий "После сохранения активности" в элементе "Выполнить задачу"
Добрый день!
Возникла необходимость указания значений кастомных колонок при создании активности элементом "Выполнить задачу". Нужно, чтобы сразу при открытии пользователю карточки этой активности там уже были нужные значения в пользовательских колонках (На основе их будет приниматься решение о состоянии активности). Как я понял, пользовательскими средствами это сделать нельзя, нужно использовать мини-сценарий "После сохранения активности" в расширенном режиме. После этого я столкнулся с проблемой, которую описывает Михаил в посте https://community.terrasoft.ru/questions/vypolnit-zadacu-i-dobavit-dann…;то есть ограниченность контекста выполнения этого скрипта. На данный момент у меня не получается заставить работать даже простой
var userConnection = Get<UserConnection>("UserConnection");
Потому как "Get" не существует в данном контексте. Мне же хотелось использовать параметры процесса и запросы в базу в этом сценарии. По совету Михаила передал в текстовом виде параметр процесса в Переменную "Контекст выполнения" элемента, но не понимаю на данном этапе, как получить из него значение в сценарии и распарсить в GUID.
Подскажите, пожалуйста, кто побеждал эту проблему, как работать с ESQ, переменными самого элемента "Выполнить задачу" и параметрами процесса в сценарии "После сохранения активности"?
Нравится
Олег, добрый день.
Не совсем понятно, зачем выполнять все эти действия, если можно просто добавить связи для Ваших колонок, как описано в комментарии, и предзаполнять поля в самом элементе.
При небольшом количестве кастомных полей такой подход мне кажется более оптимальным.
Логвин Андрей Витальевич,
Добрый день, Андрей!
Дело в том, что, как вы сами написали, в таком случае нужно будет использовать добавление активности, а затем открытие страницы редактирования, что не одно и то же с вызовом элемента "Выполнить задачу".
Андронов Олег Алексеевич,
В последнем комментарии и в посте, на который ссылаюсь,описан подход добавления колонки в деталь Связи, после чего Вы сможете проставлять значение для этого поля и в элементе "Выполнить задачу".
Но если Вы всё же хотите именно в рамках сценария После сохранения Активности, то алгоритм примерно следующий:
Создать параметр процесса, заполнить, передать его в Контекст выполнения в Выполнить задачу, а в сценарии обращаться напрямую к параметру:
var TitleFromExecutionContext = ExecutionContext;//Здесь в ExecutionContext передали ранее параметр процесса
var update = new Update(UserConnection, "Activity")
.Set("Title", Column.Parameter(TitleFromExecutionContext)).
Where("Id").IsEqual(Column.Parameter(CurrentActivityId));
update.Execute();
Удачи в реализации.
Андронов Олег Алексеевич,
Доброго дня, скажите, получилось ли решить Вашу задачу? Каким способом?
У меня сейчас такая же, и это совсем беда))
Наверно, лучше писать такие вопросы Олегу в личку. Никто, кроме Вас, не знает подробностей задачи и чем не подходят советы Андрея.