Добрый день, только начинаю изучение данного ПО.
Столкнулся с таким вопросом, нужно получить результирующее поле по определенной формуле.
Я так полагаю что всё это делается по следующему пути: я открываю конфигурацию, там в Custom нахожу нужную форму, в ней создаю событие "перед сохранением" и там создаю процесс в который добавляю сценарий C# по расчету этих полей. Вот как в этом сценарии можно получить данные полей?
я так полагаю что

public virtual bool ScriptTask1Execute(ProcessExecutingContext context) {
                       
//так не работает
int result = Convert.ToInt32(UsrMargCoast.Value)+ 1;
UsrMargCoast.Value = result;

//так не понятно что написать где "dlData"
var Dataset = dlData.Dataset;
Dataset.Values('UsrMargCoast') = Dataset.Values('UsrMargCoast') + 1;

                }

или я вообще не в том краю?

Нравится

8 комментариев
//так не понятно что написать где "dlData"
var Dataset = dlData.Dataset;
Dataset.Values('UsrMargCoast') = Dataset.Values('UsrMargCoast') + 1;

Это синтаксис террасофта тройки

в BPM используйте вот такой скрипт

Entity.SetColumnValue("UsrMargCoast", Entity.GetTypedColumnValue<int>("UsrMargCoast")+1);

Добрый день!

Данное решение описано для embeded process - обработчиков, которые запускаются по событиям объекта.
Данную задачу можно реализовать через бизнес процесс без написания не единой строки кода.
Создайте новый бизнес процесс в дизайнере процессов. Создайте новый параметр бизнес процесса с типом уникальный идентификатор (назовем его "Id записи"). Приступим к реализации бизнес процесса.
Бизнес процесс будет иметь два стартовых элемента - сигнала:

  1. При добавлении новой записи
  2. При изменении существующей записи

После каждого стартового сигнала, используйте элемент "Формула". Этим элементом мы запишем Id записи, по которой запускается процесс, в параметр "Id записи".
Объеденим две ветки, используя элемент "Исключающее ИЛИ".
После исключающего ИЛИ, используйте "Чтение данных". Выберите нужный объект (раздел) и в фильтре сравните Id с параметром "Id записи".
Далее, используйте элемент "Изменить данные". Выберите нужное поле и в заполните значение этого поля, расчитывая нужное Вам значение.

Для того, чтобы этот процесс не "засорял" журнал процессов, в свойствах процесса уберите признак "Журналировать".

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

Александр, спасибо. так уже ошибок не выдал и разрешил опубликовать процесс. правда данные что то не меняются...

ааа, ещё не опубликовал

опубликовал. но данные не появились. сейчас попробую способ Алексея.
Алексей, спасибо за такой подробный ответ!

"Демьяник Алексей Олегович" написал:Создайте новый параметр бизнес процесса с типом уникальный идентификатор (назовем его "Id записи")
не где не могу найти где они создаются(((

На скриншоте отображена страница со свойствами процесса.
Откройте свойства процесса. Если панели изображенной на скриншоте нет, тогда нажмите на стрелку, отмеченную в квадрате под номером 1.
Вверху будет ветка процесса. Нажмите правой кнопкой на "Parameters". Нажмите "Добавить" (квадрат под номером 2).

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

"Демьяник Алексей Олегович" написал:

На скриншоте отображена страница со свойствами процесса.

Откройте свойства процесса. Если панели изображенной на скриншоте нет, тогда нажмите на стрелку, отмеченную в квадрате под номером 1.

Вверху будет ветка процесса. Нажмите правой кнопкой на "Parameters". Нажмите "Добавить" (квадрат под номером 2).

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


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

"Демьяник Алексей Олегович" написал:Данную задачу можно реализовать через бизнес процесс без написания не единой строки кода.

всё сделал как описали. Спасибо. всё работает замечательно!

Показать все комментарии