<< Click to Display Table of Contents >> Разработка > Программный код > Функции Создание функций вычисляемых выражений |
Функции используются для преобразования данных при настройке вычисляемых выражений. Созданные функции отображаются в выпадающем списке с элементами выражения. При создании функций учитывайте их особенности и рекомендации по именованию.
Функции вычисляемых выражений:
•создаются в серверном коде, помечаются атрибутом ExpressionElement;
•должны быть статичными и публичными, а также возвращать результат;
•могут содержать любое число параметров. При этом:
•первый параметр функции определяет, для какого контекста эта функция может быть использована. В данном случае контекст – тип свойства или результата другой функции, следом за которой может быть выбрана текущая функция;
•при создании функции первый параметр заполняется автоматически. Поэтому, если в коде функции есть только один параметр, то в вычисляемом выражении она отображается без параметров. Если в коде задано два параметра, то в вычисляемом выражении отображается только второй;
•функции могут быть без параметров, то есть вызываться без контекста. С таких функций может начинаться вычисляемое выражение, а также они могут быть начальными для параметров функций.
Если вычисляемые функции общие и не привязаны к какой-то конкретной сущности, то их рекомендуется создавать в модуле. Если функции используются только для конкретного типа сущности, то их рекомендуется создать в серверных функциях этого типа сущности.
Формат атрибута ExpressionElement
Атрибут указывается в формате:
[ExpressionElement("<Имя функции>", "<Описание функции>", "", "<Описание параметра 2>", "<Описание параметра 3>", "<Описание параметра N>")]
Где:
•Имя функции – название функции, отображаемое в выпадающем списке при заполнении вычисляемого выражения. Обязательный параметр;
•Описание функции – подсказка по использованию функции;
•Описание параметра 2…N – подсказки с описанием параметров. Описания задаются в порядке следования параметров.
ПРИМЕЧАНИЕ. Первый параметр подставляется автоматически, задавать для него описание не нужно. Вместо описания укажите только двойные кавычки "". Описание задается со второго параметра.
Общую информацию об атрибутах см. в разделе «Атрибуты».
Предположим, необходимо написать функцию, которая возвращает руководителя инициатора задачи. Для этого:
1.Создайте серверную функцию модуля.
ПРИМЕЧАНИЕ. Функцию рекомендуется создавать в модуле, так как в данном случае она не привязана к определенному типу сущности.
2.В редакторе кода укажите нужное имя функции, добавьте комментарий и напишите код. Перед объявлением функции укажите атрибут ExpressionElement:
[ExpressionElement("Руководитель пользователя", "Возвращает CEO пользователя")]
public static Sungero.CoreEntities.IRecipient СEOofAuthor(Sungero.Workflow.ITask task)
{
return Sungero.Company.Employees.Get(task.Author.Id).Department.BusinessUnit.CEO;
}
3.Сохраните изменения.
В результате созданную функцию можно выбрать при создании вычисляемых выражений.
Если функция должна быть доступна только в выражении для конкретного типа документа, то функцию рекомендуется создавать в серверных функциях этого типа. Например, чтобы получить сумму договора, используйте код:
[ExpressionElement("Получить сумму")]
public static double? GetSum(IContract doc)
{
return doc.TotalAmount;
}
Название и описание функции, а также описания ее параметров можно локализовать. Для этого:
1.В атрибуте ExpressionElement установите курсор на нужное описание.
2.Нажмите сочетание клавиш CTRL+R или воспользуйтесь пунктом контекстного меню Создать ресурс.
3.В открывшемся окне заполните поля *Имя ресурса, *en (default), *ru и нажмите на кнопку Сохранить. Подробнее см. раздел «Ресурсы». Текст описания заменится на полный путь до ресурса. В редакторе ресурсов элемента разработки появится строка с ресурсом.
4.В отличие от других элементов разработки, в атрибуте ExpressionElement используется только имя ресурса, а не полный путь. Поэтому замените его на имя ресурса в двойных кавычках:
[ExpressionElement("Ceo_of_author", "Ceo_of_author_description")]
public static Sungero.CoreEntities.IRecipient СEOofAuthor(Sungero.Workflow.ITask task)
{
return Sungero.Company.Employees.Get(task.Author.Id).Department.BusinessUnit.CEO;
}
В результате после публикации наименование и описание функции будет отображаться в выражениях с учетом выбранной локализации.
© Компания Directum, 2024 |