Вопрос

в бизнес-процессе преобразовать коллекцию записей в строку

Здравствуйте. Подскажите пожалуйста, как можно преобразовать коллекцию записей в строку в бизнес-процессе и эту строку записать в одно текстовое поле?

Нравится

2 комментария

Добрый день.

 

Можно обработать коллекцию программно в элементе 'Задание-сценарий', а можно через подпроцесс обработки коллекции, в который Вы из главного процесса в дочерний будете передавать параметр строка и в него каждый раз будете дописывать нужное значение через элемент формула.

Подробнее об обработке коллекции в процессе можно почитать на Академии в этой статье.

У меня сделано так. Нужны только email, вот они в строку и записываются.

 

Guid commTypeId = new Guid("EE1C85C3-CFCB-DF11-9B2A-001D60E938C6");
var respGroupId = Get<Guid>("ObjectOwnerGroup");
string emails ="";
Select selectQuery = new Select(UserConnection)
                    .Column("Number")
                    .From("ContactCommunication")
                    .Join(JoinType.LeftOuter, "SysAdminUnit")
                    .On("SysAdminUnit","ContactId").IsEqual("ContactCommunication", "ContactId")
                    	.And("ContactCommunication", "NonActual").IsEqual(Terrasoft.Core.DB.Column.Parameter(0))
                    	.And("ContactCommunication", "CommunicationTypeId").IsEqual(Terrasoft.Core.DB.Column.Parameter(commTypeId))
                    .Join(JoinType.LeftOuter, "SysUserInRole")
                    .On("SysAdminUnit", "Id").IsEqual("SysUserInRole", "SysUserId")
                    	.And("SysAdminUnit","Active").IsEqual(Terrasoft.Core.DB.Column.Parameter(1))
                    .Where("SysUserInRole", "SysRoleId").IsEqual(Terrasoft.Core.DB.Column.Parameter(respGroupId))
                    .And("ContactCommunication", "Number").Not().IsNull() as Select;
// Выполнение запроса к базе данных и получение результирующего набора данных.
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
    using (IDataReader reader = selectQuery.ExecuteReader(dbExecutor))
    {
        while (reader.Read())
        {
        	emails = emails + ", " + reader.GetColumnValue<string>("Number");
            // Обработка результатов запроса.
        }
    }
} 
Set("ObjectOwnerGroupMail", emails);
return true;

 

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