Добрый день, подскажите, пожалуйста, как отрабатывает сигнал "Удаление" в бизнес процессах. Сейчас столкнулась со следующим кейсом: 

У нас есть две таблицы Кредит и Выплаты по кредиту,  необходимо, чтоб при удалении записи "Выплаты по кредиту", итоговая оставшаяся сумма кредита обновлялась в таблице "Кредит".  (При создании "выплат по кредиту" логика отрабатывает верно, мы получаем ID созданной "Выплаты", потом "ID связанного кредита", а при удалении не работает).

Мы подумали , что это может быть связано с тем, что запись вначале удаляется совсем из БД, а потом отрабатывает бизнес-процесс и он уже не может найти связанный кредит.

Если это так, то просьба подсказать, есть ли обходные пути решения. 

Нравится

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

Здравствуйте, Ирина.

 

Для решения Вашей задачи можно использовать событийный процесс объекта "Выплаты по кредиту".

 

Описываемую Вами логику нужно реализовать в обработчике события OnDeleting. Подробнее читайте в статье на Академии.

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

Здравствуйте, Ирина.

 

Для решения Вашей задачи можно использовать событийный процесс объекта "Выплаты по кредиту".

 

Описываемую Вами логику нужно реализовать в обработчике события OnDeleting. Подробнее читайте в статье на Академии.

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

Возможно ли реализовать такое с применением low-code инструментария? Просто есть задание в экзамене на бизнес-аналитика Creatio аналогичное данному кейсу (произвести пересчёт суммы основной записи при добавлении/изменении/удалении записей на детали, относящейся к основной записи)

Реализация обработчика точно не задача бизнес-аналитика, но если такое задание имеется, то предполагается, что и решить его можно без применения серверной логики

Ирина Степанян,

Здравствуйте, Ирина!

 

Все верно, такое можно реализовать через лоу-код (бизнес-процессы). странно, что выше такого не написали..

 

При удалении записи вызывать процесс пересчета основной карточки, НО передавать ид удаленной записи и в самом пересчете дописать фильтр, чтобы не учитывать эту запись.

 

Делала такое у себя на проекте, все работает. По сигналу "удаление записи" запись все еще есть в системе и все можно из нее "вытянуть".  при пересчете она еще будет "считаться" -- поэтому ее нужно добавить в фильтр (например, ИД <> ИД_удаленной_записи)

Ольга П.,

Благодарю за ответ, но я произвела несколько проверок и запись в детали удаляется сразу после сигнала процесса Удаление записи

В чём сам кейс: у меня есть деталь Билеты и поле Стоимость билета внутри. Данная деталь относится к разделу Возвраты. В разделе Возвраты есть поле Общая стоимость, которое должно рассчитываться на базе поля детали Стоимость билета. 

Я строю процесс по 3-м сигналам (добавление/изменение/удаление), при добавлении и изменении всё отрабатывает корректно, но при удалении есть нюанс - на самом сигнале я получаю ID удалённого билета, но мне нужно пересчитать Общую стоимость по возврату, исходя из других оставшихся билетов, но при попытке считать ID возврата из объекта Билеты по ID билета, которое на сигнале мы имеем - возвращается ID возврата такого вида: 00000000-0000-0000-0000-000000000000, то бишь обычная "заглушка". В итоге с таким ID возвратов нет, и, как итог, ничего не пересчитывается

НО! Исходя из того, что Вы написали, это справедливо для случая, когда на объекте Билеты (детали) стоит событие Перед Удалением, и вот тогда в этом процессе, вместо третьей ветки с удалением мы заводим Событийный подпроцесс, который как раз работает ещё ДО того, как запись удалилась, и получаем ID возврата и всё пересчитываем (исключая, как Вы и написали, ту запись Билета, ID которой мы получили на сигнале удаления внутри событийного подпроцесса)

 

Ирина Степанян,

Странно, что у меня "вытягивается" значение, у Вас -- нет.. может, разница версий? у меня 7.18.5.1501 (.NET Core 3.1.22)

 

удаляю Участника из Активности и вытягиваю Активность, точнее, нужные поля из Активности.

 

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

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