Стоит задача: Есть задача (активность в bpm), нужно послать письмо ответственному и автору какие поля были изменены. С отправлением письма разберусь, а как в bpm5 получить список всех полей сущности, и как по названию поля получить его заголовок. Думаю понятно объясню в коде

Entity CurrentEntity = this.Entity; //Текущая запись - задача
string[] arFieldsNames = ;//как получить в массив строк полей по сущности?
string[] arFieldsTitles = ;//как получить массив заголовков полей либо ниже, как по названию поля, получить его заголовок?
var emailBody = "Измененные значения:

"
;//тело для письма
for(var i=0;iarFieldsNames.Length;i++) {
        //Сравниваем старое и новое значение
        if (CurrentEntity.GetColumnOldValue(arFieldsNames[i]) != CurrentEntity.GetColumnValue(arFieldsNames[i])) {
                        var fieldTitle = ;//как получить сроку "Ответственный" по строке "Owner" или "OwnerId"?
                        emailBody += fieldTitle + ": " + CurrentEntity.GetColumnDisplayValue() + "

"
;//Записываем в тело письма
        }
}

Грубо говоря хотелось бы получить такое
Измененные значения:
Ответственный: Пользователь2
Состояние: В работе

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

Нравится

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

Хороший вопрос, поддерживаю.

Здравствуйте!
Доступ к колонкам можно получить так:

var columns = this.Entity.Schema.Columns; //коллекция колонок
//затем можно их перебрать
foreach (var column in columns)
{
	//своя логика
        //column.Caption - подпись колонки, например
}

Если делать в БП, то можно получить схему из элемента "Чтение данных" так:

var schema = ReadDataUserTask1.ResultEntity.Schema;

То что надо. Спасибо.

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