Возникла проблемы с передачей параметра из бизнес процесса в шаблон email. Параметр сохраняется в процессе как текст https://prnt.sc/13ikimi. Во время выполнения процесса параметр заполняется текстом и далее используется в письме https://prnt.sc/13ikpvd. Но при отправке письма параметр не подтянулся https://prnt.sc/13ikxuq. Что я делаю не так?)
Если Вы формируете письмо программно, тогда макросы не будут срабатывать. В этом случае Вам нужно программно считать сохраненное значение параметра бизнес-процесса и подставить его в Ваш шаблон.
Макросы срабатывают только в случае использования уже преднастроенных шаблонов в элементе [Отправить email].
Как получить и обработать результирующие параметры при вызове БП из кода?
В версии 7.17.1 обещали получение параметров из интерпретируемого процесса, но примеров как и что нету. Запуск я проводил с помощью класса FlowEngine и метода RunProcess.
FlowEngine - устаревший класс и он не рекомендуется к использованию.
Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:
string processName ="UsrCustomProcess";
string paramName ="UserProcessParameter";
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;// Необходимо указание типа параметраint result = processExecutor.Execute<int>(processName, paramName);
Пример запуска с получением нескольких параметров:
string processName ="UsrCustomProcess";
string[] paramNames ={"UserProcessParameter0", "UserProcessParameter1"};
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;// Второй аргумент - список входящих параметров
ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);// Получение параметров
IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;
FlowEngine - устаревший класс и он не рекомендуется к использованию.
Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:
string processName ="UsrCustomProcess";
string paramName ="UserProcessParameter";
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;// Необходимо указание типа параметраint result = processExecutor.Execute<int>(processName, paramName);
Пример запуска с получением нескольких параметров:
string processName ="UsrCustomProcess";
string[] paramNames ={"UserProcessParameter0", "UserProcessParameter1"};
IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;// Второй аргумент - список входящих параметров
ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);// Получение параметров
IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;