Блог Горошко Андрея Bitrix24,PHP Изменить существующее пользовательское поле сделок crm.deal.userfield.update

Изменить существующее пользовательское поле сделок crm.deal.userfield.update

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Изменить существующее пользовательское поле сделок crm.deal.userfield.update». Вы узнаете экспертные методики работы с crm.deal.userfield.update и научитесь избегать типичных ошибок начинающих разработчиков.

Изменить существующее пользовательское поле сделок crm.deal.userfield.update

> Scope: crm
>
> Кто может выполнять метод: администратор CRM

Метод crm.deal.userfield.update обновляет существующее пользовательское поле сделок.

Параметры метода

Название
тип
Описание
id
integer
Идентификатор пользовательского поля.

Идентификатор можно получить с помощью методов crm.deal.userfield.add и crm.deal.userfield.list

fields
object
Объект формата:

{
    field_1: value_1,
    field_2: value_2,
    ...,
    field_n: value_n,
}

— field_n — название поля
— value_n — новое значение поля

Список доступных полей описан ниже.

Некорректное поле в fields будет проигнорировано.

В fields нужно передавать только те поля, которые требуется изменить

Параметр fields {#parameter-fields}

Параметр
тип
Описание
MANDATORY
boolean
Является ли поле обязательным. Возможные значения:
— Y — да
— N — нет
SHOW_FILTER
boolean
Показывать ли поле в фильтре. Возможные значения:
— Y — да
— N — нет
XML_ID
string
Внешний код
SETTINGS
object
Дополнительные параметры поля. Для каждого типа поля USER_TYPE_ID существует свой пул доступных настроек, они описаны ниже.

Поле перезаписывает лишь переданные значения

LIST
uf_enum_element[]
Список возможных значений для пользовательского поля типа enumeration, описание ниже
SORT
integer
Индекс сортировки. Обязательно больше нуля
SHOW_IN_LIST
boolean
Показывать ли пользовательское поле в списке.

Данный параметр ни на что не влияет в рамках crm.

Возможные значения:
— Y — да
— N — нет

EDIT_IN_LIST
boolean
Разрешать ли редактирование пользователем. Возможные значения:
— Y — да
— N — нет
Значение N поддерживают не все типы полей в рамках crm
IS_SEARCHABLE
boolean
Участвуют ли значения поля в поиске.

Данный параметр ни на что не влияет в рамках crm.

Возможные значения:
— Y — да
— N — нет

LIST_FILTER_LABEL
string\
lang_mapПодпись фильтра в списке.

При передаче строки она устанавливается для каждого языка.

Для языков, у которых явно не указано значение, будет записано ''.

Поле полностью перезаписывает предыдущее значение

LIST_COLUMN_LABEL
string\
lang_mapЗаголовок в списке.

При передаче строки она устанавливается для каждого языка.

Для языков, у которых явно не указано значение, будет записано ''.

Поле полностью перезаписывает предыдущее значение

EDIT_FORM_LABEL
string\
lang_mapПодпись в форме редактирования.

При передаче строки она устанавливается для каждого языка.

Для языков, у которых явно не указано значение, будет записано ''.

Поле полностью перезаписывает предыдущее значение

ERROR_MESSAGE
string\
lang_mapСообщение об ошибке
HELP_MESSAGE
string\
lang_mapПомощь

Параметр SETTINGS {#settings}

У каждого типа пользовательских полей существует свой набор дополнительных настроек. Данный метод поддерживает лишь те, что описаны ниже.

  • string
Название
тип
Описание
DEFAULT_VALUE
string
Значение по умолчанию
ROWS
integer
Количество строк в поле ввода. Обязательно больше 0
  • integer
Название
тип
Описание
DEFAULT_VALUE
integer
Значение по умолчанию
  • double
Название
тип
Описание
DEFAULT_VALUE
double
Значение по умолчанию
PRECISION
integer
Точность числа. Обязательно больше или равно 0
  • boolean
Название
тип
Описание
DEFAULT_VALUE
integer
Значение по умолчанию, где 1 — да, 0 — нет.

Возможные значения:
— >= 1 -> 1
— <= 0 -> 0

DISPLAY
string
Внешний вид. Возможные значения:
— CHECKBOX — флажок
— RADIO — радиокнопки
— DROPDOWN — выпадающий список
  • date|datetime
Название
тип
Описание
DEFAULT_VALUE
object
Значение по умолчанию.
Объект формата:

    {
        VALUE: datetime|date,
        TYPE: 'NONE'|'NOW'|'FIXED',
    }

где:
— VALUE — значение по умолчанию типа datetime или date
— TYPE — тип значения по умолчанию:
— NONE — не выставлять значение по умолчанию
— NOW — использовать текущее время/дату
— FIXED — использовать время/дату из VALUE

  • enumeration
Название
тип
Описание
DISPLAY
string
Внешний вид. Возможные значения:
— LIST — список
— UI — набираемый список
— CHECKBOX — флажки
— DIALOG — диалог выбора сущностей
LIST_HEIGHTВысота списка. Обязательно больше 0.

Доступен только при DISPLAY = LIST или DISPLAY = UI

  • iblock_section|iblock_element
Название
тип
Описание
IBLOCK_TYPE_ID
string
Идентификатор типа инфоблока
IBLOCK_ID
string
Идентификатор инфоблока
DEFAULT_VALUE
string
Значение по умолчанию
DISPLAY
string
Внешний вид. Возможные значения:
— DIALOG — диалог
— UI — набираемый список
— LIST — список
— CHECKBOX — флажки
LIST_HEIGHT
integer
Высота списка. Обязательно больше 0
ACTIVE_FILTER
boolean
Показывать ли элементы с включенным флагом активности. Возможные значения:
— Y — да
— N — нет
  • crm_status
Название
тип
Описание
ENTITY_TYPE
string
Идентификатор типа справочника.

Используйте crm.status.entity.types, чтобы узнать возможные значения

  • crm
Название
тип
Описание
LEAD
boolean
Включена ли привязка к Лидам. Возможные значения:
— Y — да
— N — нет
CONTACT
boolean
Включена ли привязка к Контактам. Возможные значения:
— Y — да
— N — нет
COMPANY
boolean
Включена ли привязка к Компаниям. Возможные значения:
— Y — да
— N — нет
DEAL
boolean
Включена ли привязка к Сделкам. Возможные значения:
— Y — да
— N — нет

Параметр LIST {#uf_enum_element}

Название
тип
Описание
VALUE
string
Значение элемента списка.

Элементы списка с пустым или отсутствующим VALUE будут проигнорированы

SORT
integer
Индекс сортировки. Обязательно больше или равно 0
DEF
boolean
Является ли элемент списка значением по умолчанию. Возможные значения:
— Y — да
— N — нет

Для множественного поля допустимо несколько DEF = Y. Для не множественного, дефолтным будет считаться первый переданный элемент списка с DEF = Y

XML_ID
string
Внешний код значения. Обязательно уникальный в рамках элементов списка пользовательского поля

Примеры кода

Пример изменения пользовательского поля типа Строка

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":536,"fields":{"MANDATORY":"N","SHOW_FILTER":"N","SETTINGS":{"DEFAULT_VALUE":"Привет, мир! Значение по умолчанию (изменено)","ROWS":10},"SORT":2000,"EDIT_IN_LIST":"N","LIST_FILTER_LABEL":"Привет, мир! Фильтр (изменено)","LIST_COLUMN_LABEL":{"en":"Hello, World! Column (changed)","ru":"Привет, мир! Колонка (изменено)","de":"Hallo, Welt! Spalte (geändert)"},"EDIT_FORM_LABEL":{"en":"Hello, World! Edit (changed)","ru":"Привет, мир! Редактировать (изменено)","de":"Hallo, Welt! Bearbeiten (geändert)"},"ERROR_MESSAGE":{"en":"Hello, World! Error (changed)","ru":"Привет, мир! Ошибка (изменено)","de":"Hallo, Welt! Fehler (geändert)"},"HELP_MESSAGE":{"en":"Hello, World! Help (changed)","ru":"Привет, мир! Помощь (изменено)","de":"Hallo, Welt! Hilfe (geändert)"}}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.deal.userfield.update
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":536,"fields":{"MANDATORY":"N","SHOW_FILTER":"N","SETTINGS":{"DEFAULT_VALUE":"Привет, мир! Значение по умолчанию (изменено)","ROWS":10},"SORT":2000,"EDIT_IN_LIST":"N","LIST_FILTER_LABEL":"Привет, мир! Фильтр (изменено)","LIST_COLUMN_LABEL":{"en":"Hello, World! Column (changed)","ru":"Привет, мир! Колонка (изменено)","de":"Hallo, Welt! Spalte (geändert)"},"EDIT_FORM_LABEL":{"en":"Hello, World! Edit (changed)","ru":"Привет, мир! Редактировать (изменено)","de":"Hallo, Welt! Bearbeiten (geändert)"},"ERROR_MESSAGE":{"en":"Hello, World! Error (changed)","ru":"Привет, мир! Ошибка (изменено)","de":"Hallo, Welt! Fehler (geändert)"},"HELP_MESSAGE":{"en":"Hello, World! Help (changed)","ru":"Привет, мир! Помощь (изменено)","de":"Hallo, Welt! Hilfe (geändert)"}},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.deal.userfield.update
  • JS
    BX24.callMethod(
        'crm.deal.userfield.update',
        {
            id: 536,
            fields: {
                MANDATORY: "N",
                SHOW_FILTER: "N",
                SETTINGS: {
                    DEFAULT_VALUE: "Привет, мир! Значение по умолчанию (изменено)",
                    ROWS: 10,
                },
                SORT: 2000,
                EDIT_IN_LIST: "N",
                LIST_FILTER_LABEL: "Привет, мир! Фильтр (изменено)",
                LIST_COLUMN_LABEL: {
                    "en": "Hello, World! Column (changed)",
                    "ru": "Привет, мир! Колонка (изменено)",
                    "de": "Hallo, Welt! Spalte (geändert)"
                },
                EDIT_FORM_LABEL: {
                    "en": "Hello, World! Edit (changed)",
                    "ru": "Привет, мир! Редактировать (изменено)",
                    "de": "Hallo, Welt! Bearbeiten (geändert)"
                },
                ERROR_MESSAGE: {
                    "en": "Hello, World! Error (changed)",
                    "ru": "Привет, мир! Ошибка (изменено)",
                    "de": "Hallo, Welt! Fehler (geändert)"
                },
                HELP_MESSAGE: {
                    "en": "Hello, World! Help (changed)",
                    "ru": "Привет, мир! Помощь (изменено)",
                    "de": "Hallo, Welt! Hilfe (geändert)"
                },
            },
        },
        (result) => {
            result.error()
                ? console.error(result.error())
                : console.info(result.data())
            ;
        },
    );
  • PHP
    require_once('crest.php');

    $result = CRest::call(
        'crm.deal.userfield.update',
        [
            'id' => 536,
            'fields' => [
                'MANDATORY' => "N",
                'SHOW_FILTER' => "N",
                'SETTINGS' => [
                    'DEFAULT_VALUE' => "Привет, мир! Значение по умолчанию (изменено)",
                    'ROWS' => 10,
                ],
                'SORT' => 2000,
                'EDIT_IN_LIST' => "N",
                'LIST_FILTER_LABEL' => "Привет, мир! Фильтр (изменено)",
                'LIST_COLUMN_LABEL' => [
                    'en' => "Hello, World! Column (changed)",
                    'ru' => "Привет, мир! Колонка (изменено)",
                    'de' => "Hallo, Welt! Spalte (geändert)"
                ],
                'EDIT_FORM_LABEL' => [
                    'en' => "Hello, World! Edit (changed)",
                    'ru' => "Привет, мир! Редактировать (изменено)",
                    'de' => "Hallo, Welt! Bearbeiten (geändert)"
                ],
                'ERROR_MESSAGE' => [
                    'en' => "Hello, World! Error (changed)",
                    'ru' => "Привет, мир! Ошибка (изменено)",
                    'de' => "Hallo, Welt! Fehler (geändert)"
                ],
                'HELP_MESSAGE' => [
                    'en' => "Hello, World! Help (changed)",
                    'ru' => "Привет, мир! Помощь (изменено)",
                    'de' => "Hallo, Welt! Hilfe (geändert)"
                ],
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": true,
    "time": {
        "start": 1753790234.592207,
        "finish": 1753790234.762644,
        "duration": 0.17043709754943848,
        "processing": 0.11566615104675293,
        "date_start": "2025-07-29T14:57:14+03:00",
        "date_finish": "2025-07-29T14:57:14+03:00",
        "operating_reset_at": 1753790834,
        "operating": 0.11564803123474121
    }
}

Возвращаемые данные

Название
тип
Описание
result
boolean
Корневой элемент ответа, содержит true в случае успеха
time
time
Информация о времени выполнения запроса

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

HTTP-статус: 400

{
    "error": "",
    "error_description": "Access denied."
}

Возможные коды ошибок

КодОписаниеЗначение
400Parameter 'fields' must be arrayПереданный fields не является объектом
400ID is not defined or invalidПереданный id меньше нуля или не передан вовсе
403Access deniedВозникает в случаях, когда:
— у пользователя нет административных прав
— пользователь пытается изменить пользовательское поле, не привязанное к сделкам
ERROR_NOT_FOUNDThe entity with ID 'id' is not foundПользовательского поля с переданным id не существует
ERROR_COREЭлемент списка со значением XML_ID='XML_ID' уже существуетПереданный XML_ID у элемента списка обязан быть уникальным в рамках элементов списка отдельно взятого пользовательского поля
  • [](./crm-deal-userfield-add)
  • [](./crm-deal-userfield-get)
  • [](./crm-deal-userfield-list)
  • [](./crm-deal-userfield-delete)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Изменить существующее пользовательское поле сделок crm.deal.userfield.update» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Получить историю движения по стадиям crm.stagehistory.listПолучить историю движения по стадиям crm.stagehistory.list

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить историю движения по стадиям crm.stagehistory.list». Вы узнаете экспертные методики работы с crm.stagehistory.list

Создание оптового портала для дистрибьюторов медицинских расходных материаловСоздание оптового портала для дистрибьюторов медицинских расходных материалов

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Создание

Как использовать метод SDK sale.tradePlatform.list в Битрикс24Как использовать метод SDK sale.tradePlatform.list в Битрикс24

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать метод SDK sale.tradePlatform.list в Битрикс24», проанализируем