goalsmanagement.goal.add
Scope:
goalsmanagementКто может вызывать: ModuleUser::canAddGoal(). Подробнее: Права доступа
Создать элемент каталога целей
HTTP: POST
Побочные эффекты: создаёт элемент ИБ целей
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
name |
string |
да | Название |
typeId |
int |
нет | Goal type enum ID (also type/typeGoals) |
active |
bool |
нет | Активность |
sort |
int |
нет | Sort (code) |
weightGoals |
mixed |
нет | Weight (code) |
canCascade |
`bool | string` | нет |
weightStep |
mixed |
нет | Шаг веса: id значения списка, xmlId или число. Допустимо: 0.01, 0.1, 1, 2, 5, 10, 20, 25, 50 (значение 100 для веса не принимается) |
maxPercent |
mixed |
нет | Max percent (code) |
percentStep |
mixed |
нет | Шаг процента выполнения: id значения списка, xmlId (n5) или число. Допустимо: 0.01, 0.1, 1, 2, 5, 10, 20, 25, 50, 100. Шаг 100 — цель «да/нет» (0% / 100%) |
color |
string |
нет | Color (code) |
hintText |
string |
нет | Hint (code) |
hintTextPercent |
string |
нет | Percent hint (code) |
access |
array |
нет | Access list (code) |
progressFormulaMode |
string|int |
нет | Режим расчёта % выполнения для количественных целей: growth (факт / план, по умолчанию), decline или custom; также принимается id значения. См. «Формула расчёта» |
progressFormulaExpression |
string |
нет | Формула для режима custom (до 500 символов, переменные plan и fact). Обязательна при custom, в остальных режимах не используется |
Формула расчёта выполнения
Для количественных целей процент выполнения считается как результат формулы × 100 с учётом maxPercent и percentStep.
| Режим | Формула |
|---|---|
growth |
fact / plan (по умолчанию, поведение до появления формул) |
decline |
plan / fact (для показателей, которые нужно снижать) |
custom |
выражение из progressFormulaExpression |
В выражении доступны переменные plan и fact, арифметика + - * /, скобки, сравнения и функции MIN, MAX, ABS, ROUND. Пример: (plan + (plan - fact)) / plan.
Если режим custom, а формула пустая или с синтаксической ошибкой, метод возвращает VALIDATION_ERROR с текстом ошибки. Формулу можно задать любой цели, но на расчёт она влияет только у количественных.
Возвращаемые данные
Ответ в конверте модуля: result.result — созданная цель; result.error. Ключи total/next для не-list методов могут отсутствовать в сериализации, если не переданы.
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
Некорректные параметры, в том числе пустая или неверная формула при progressFormulaMode=custom |
ACCESS_DENIED |
Нет прав на операцию (общий запрет) |
INTERNAL_ERROR |
Внутренняя ошибка сервера |
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/goalsmanagement.goal.add.json" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data '{
"name": "Увеличить выручку отдела",
"typeId": 2,
"active": true,
"sort": 100,
"weightGoals": 40,
"canCascade": true,
"weightStep": 5,
"maxPercent": 120,
"percentStep": 5,
"color": "#2FC6F6",
"progressFormulaMode": "custom",
"progressFormulaExpression": "(plan + (plan - fact)) / plan"
}'
Пример ответа
{
"result": {
"result": {
"id": 101,
"active": true,
"name": "Увеличить выручку отдела",
"type": "strategy",
"weightGoals": 40,
"weightStep": 5,
"maxPercent": 120,
"percentStep": 5,
"sort": 100,
"canCascade": true,
"color": "#2FC6F6",
"progressFormulaMode": "custom",
"progressFormulaExpression": "(plan + (plan - fact)) / plan",
"dateCreate": "2026-01-10 09:15:00",
"timestampX": "2026-07-15 14:30:00",
"createdBy": 15,
"modifiedBy": 15,
"isUse": true
},
"error": null
}
}