Введение в формулы

Aspose.Tasks для .NET API поддерживает чтение и запись формул в файлах Microsoft Project (MPP).
Формулы используются для вычисления пользовательских значений для задач, ресурсов и полей проекта на основе существующих данных проекта.

Свойство Formula класса ExtendedAttributeDefinition предоставляет интерфейс для назначения и чтения формул.
Если некорректная строка формулы присваивается, FormatException выбрасывается исключение.

Эта страница содержит введение в грамматику, используемую в формулах, поддерживаемые операторы, функции и примеры.

Грамматика формул

Microsoft Project использует следующую грамматику для формул, которой также следует Aspose.Tasks:

1    Formula -> Formula Binary_Op Primary | Primary
2    Primary -> (Formula) | Unary_Op Primary | Function | ValidFieldName | ValidDoubleValue | "StringLiteral"
3    Function -> ValidFunctionName(Args)
4    Args -> Args Delimiter Formula | Formula | |
5    Delimiter -> , | ;   // Note: Delimiter is culture-specific in XML format ( , or ; ) and persistent in MPP ( , )
6    Binary_Op -> + | - | * | / | & | MOD | ^ | = | <> | < | > | AND | OR
7    Unary_Op -> NOT | + | -

Поддерживаемые элементы

1. Поля

Можно использовать любое действительное имя поля Microsoft Project (например, [Duration], [Actual Duration], [Standard Rate]).

2. Операторы

Формулы поддерживают:

3. Функции

Поддерживаются большинство стандартных функций Microsoft Project, включая:

Примеры

Пример 1: Простая арифметика

1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2    CustomFieldType.Number,
3    ExtendedAttributeTask.Number1,
4    "WorkPerDay");
5
6attr.Formula = "[Work] / [Duration]";

Эта формула вычисляет средний объём работы в день для задачи.

Пример 2: Условное выражение

1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2    CustomFieldType.Text,
3    ExtendedAttributeTask.Text1,
4    "TaskStatus");
5
6attr.Formula = "IIf([% Complete] = 100, \"Done\", \"In Progress\")";

Эта формула задаёт значение пользовательского поля как “Готово” если задача выполнена, в противном случае — “В процессе”.

Обработка ошибок

См. также

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.