goalsmanagement.goal.update
Scope:
goalsmanagementКто может вызывать: ModuleUser::canAddGoal(). Подробнее: Права доступа
Обновить элемент каталога целей. Обновление частичное: поля, которые не переданы, сохраняют текущее значение (в том числе настройки, которых нет в параметрах метода: признаки «количественная» и «конвертация», режим покрытия подцелей SUM/AVG, шаг доли). Права доступа меняются только если передан access.
HTTP: POST
Побочные эффекты: обновляет элемент ИБ; непереданные поля не изменяются
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
id |
int |
да | ID цели |
name |
string |
да | Название |
typeId |
int |
нет | ID типа из goal.type.list (также type / typeGoals). Не передан — тип сохраняется |
active |
bool |
нет | Активность |
sort |
int |
нет | Сортировка |
weightGoals |
mixed |
нет | Вес |
canCascade |
bool|string |
нет | Каскад |
weightStep |
mixed |
нет | Шаг веса: id значения списка, xmlId или число. Допустимо: 0.01, 0.1, 1, 2, 5, 10, 20, 25, 50 (значение 100 для веса не принимается) |
maxPercent |
mixed |
нет | Макс. процент |
percentStep |
mixed |
нет | Шаг процента выполнения: id значения списка, xmlId (n5) или число. Допустимо: 0.01, 0.1, 1, 2, 5, 10, 20, 25, 50, 100. Шаг 100 — цель «да/нет» (0% / 100%) |
color |
string |
нет | Цвет |
hintText |
string |
нет | Подсказка |
hintTextPercent |
string |
нет | Подсказка по проценту |
access |
array |
нет | Список доступа. Не передан — права не меняются |
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 с текстом ошибки. Формулу можно задать любой цели, но на расчёт она влияет только у количественных.
Описания градаций
Текстовые описания градаций веса и % выполнения задаются в интерфейсе каталога целей, через REST они не передаются и не возвращаются. При изменении шагов или максимального % сохранённые описания сопоставляются с новым набором значений: описания лишних значений отбрасываются. Метод возвращает GRADATION_LABELS_INVALID, если для части новых значений описания нет или значений в наборе стало больше 10 — в этом случае описания нужно очистить в интерфейсе каталога или вернуть прежний шаг. Если цель стала количественной, описания % выполнения удаляются. Если maxPercent не задан, градации % считаются от наибольшего максимального % в настройках процессов.
Возвращаемые данные
Ответ в конверте модуля: result.result — обновлённая цель; result.error. Ключи total/next для не-list методов могут отсутствовать в сериализации, если не переданы.
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
Некорректные или неполные параметры, в том числе пустая или неверная формула при progressFormulaMode=custom |
GOAL_NOT_FOUND |
Цель не найдена |
GRADATION_LABELS_INVALID |
Новые weightStep / maxPercent / percentStep не согласуются с сохранёнными описаниями градаций: для части значений нет описания или значений стало больше 10. Описания задаются и очищаются только в интерфейсе каталога целей |
INTERNAL_ERROR |
Внутренняя ошибка сервера, в том числе сбой записи описаний градаций |
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/goalsmanagement.goal.update.json" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data '{
"id": 101,
"name": "Увеличить выручку отдела",
"typeId": 2,
"weightGoals": 40,
"maxPercent": 120
}'
Пример ответа
{
"result": {
"result": {
"id": 101,
"active": true,
"name": "Увеличить выручку отдела",
"type": "strategy",
"weightGoals": 40,
"weightStep": 5,
"maxPercent": 120,
"percentStep": 5,
"sort": 100,
"canCascade": true,
"color": "#2FC6F6",
"progressFormulaMode": "growth",
"progressFormulaExpression": "",
"dateCreate": "2026-01-10 09:15:00",
"timestampX": "2026-07-15 14:30:00",
"createdBy": 15,
"modifiedBy": 15,
"isUse": true
},
"error": null
}
}