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
          }
        }
        

См. также

Предыдущая
Следующая