Вопрос

Обход коллекции по сигналу в бизнес процессе

Здравствуйте, выполняю вот такое задание:

Реализовать следующую логику: 

при добавлении новой записи 

«Задолженности» должна производиться выборка всех договоров данного должника, 

суммирование значений полей «Общая сумма задолженности», 

«Основной долг», «Штрафы», 

«Проценты и комиссии» данных записей объекта 

«Договоры» и запись в соответствующие поля текущей записи объекта «Задолженности». 

Реализуется с помощью бизнес процесса, который запускается по событию «Добавление записи» текущего объекта

И не понимаю как мне в формуле обойти все договоры в цикле и суммировать значения полей?

 

Нравится

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

Действительно, как подсказал выше Александр  используя в элементе чтения данных параметр [СЧИТАТЬ ФУНКЦИЮ] = Сумма, а потом элемент Измtнить данные позволяет избежать кодирования :)

Добрый день!

Данные из коллекции нужно считывать так:

var entities = Get<ICompositeObjectList<ICompositeObject>>("ReadDataUserTask1.ResultCompositeObjectList");

Т.е. в вашем случае код будет таким:

var entities = Get&lt;ICompositeObjectList&lt;ICompositeObject&gt;&gt;("ReadDataUserTask1.ResultCompositeObjectList");
 
var result = 0;
 
foreach(var entity in entities) 
{
    	var sum = 0d;
    	if (entity.TryGetValue&lt;double&gt;("Sum", out sum))
    	{
    		result += sum;  
    	}
}

 

Сидоров Александр В.,

Т.е. мне надо использовать задание-сценарий? А как потом из него получить это значение для записи? Или мне все в одном сценарии можно выполнить?

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

Действительно, как подсказал выше Александр  используя в элементе чтения данных параметр [СЧИТАТЬ ФУНКЦИЮ] = Сумма, а потом элемент Измtнить данные позволяет избежать кодирования :)

В 7.16.1 добавится возможность пользовательской настройки  последовательного запуска одинаковых подпроцессов по каждому элементу коллекции из параметра.

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