Заметки
user.update возвращает true, но поле пользователя не меняется
Успешный ответ user.update ещё не означает, что запрос передал нужное поле. Частая ошибка — скопировать структуру CRM-запроса и положить значения внутрь FIELDS. У этого метода такой обёртки нет.
Тело запроса для изменения должности выглядит так:
{
"ID": 17,
"WORK_POSITION": "Разработчик интеграций"
} ID и WORK_POSITION находятся на одном уровне. Для собственного пользовательского поля принцип тот же: передавайте его реальный код, а значение оформляйте в соответствии с типом и множественностью поля.
Метод user.userfield.update решает другую задачу: меняет настройки самого поля, например подпись или набор значений списка. В его параметре id ожидается ID настройки поля, а не ID сотрудника.
У user.update есть ограничения по правам вызывающего пользователя. Но если ответ успешный, а значение осталось прежним, сначала сравните отправленный JSON с параметрами метода и прочитайте сотрудника через user.get. Выдача дополнительных прав не исправляет вложенность JSON.
Обратный пример: crm.deal.add требует объект fields.
Документация: user.update; user.userfield.update.