Блог Горошко Андрея Bitrix24 Добавить пользовательское поле user.userfield.add

Добавить пользовательское поле user.userfield.add

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Добавить пользовательское поле user.userfield.add». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.

Добавить пользовательское поле user.userfield.add

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

Метод user.userfield.add добавляет пользовательское поле.

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

Название
тип
Описание
fields
object
Значения полей для добавления нового пользовательского поля

Параметр fields

Название
тип
Описание
FIELD_NAME
string
Название (код) поля. Дополняется префиксом UF_USR_
USER_TYPE_ID
string
Тип пользовательского поля. Возможные значения:
— string — строка
— integer — целое число
— double — число
— date — дата
— datetime — дата со временем
— boolean — Да / Нет
— file — файл
— enumeration — список
— url — ссылка
— address — адрес Google карты
— money — деньги
— iblock_section — Привязка к разделу инфоблока
— iblock_element — Привязка к элементу инфоблока
— employee — Привязка к пользователю
— crm — Привязка к элементу CRM
— crm_status — Привязка к справочнику CRM
XML_ID
string
Внешний код
SORT
integer
Порядок сортировки
MULTIPLE
boolean
Является ли поле множественным. Возможные значения:
— Y — да
— N — нет
MANDATORY
boolean
Является ли пользовательское поле обязательным. Возможные значения:
— Y — да
— N — нет
SHOW_FILTER
boolean
Показывать ли поле в фильтре списка. Возможные значения:
— Y — да
— N — нет
SHOW_IN_LIST
boolean
Показывать ли поле в списке. Возможные значения:
— Y — да
— N — нет
EDIT_IN_LIST
boolean
Редактировать ли поле в списке. Возможные значения:
— Y — да
— N — нет
IS_SEARCHABLE
boolean
Участвует ли поле в поиске. Возможные значения:
— Y — да
— N — нет
SETTINGS
object
Объект в формате {"field_1": "value_1", ... "field_N": "value_N"} для передачи дополнительных настроек пользовательских полей. Настройки описаны ниже
EDIT_FORM_LABEL
string
Подпись в форме редактирования. Можно передать строку или объект с подписями по языкам в формате {"ru": "...", "en": "..."}. При передаче строки значение будет выставлено для всех языков
LIST_COLUMN_LABEL
string
Заголовок столбца в списке. Можно передать строку или объект с подписями по языкам в формате {"ru": "...", "en": "..."}. При передаче строки значение будет выставлено для всех языков
LIST_FILTER_LABEL
string
Заголовок фильтра в списке. Можно передать строку или объект с подписями по языкам в формате {"ru": "...", "en": "..."}. При передаче строки значение будет выставлено для всех языков
ERROR_MESSAGE
string
Сообщение об ошибке при невалидном вводе. Можно передать строку или объект с текстами по языкам в формате {"ru": "...", "en": "..."}. При передаче строки значение будет выставлено для всех языков
HELP_MESSAGE
string
Текст подсказки к полю. Можно передать строку или объект с текстами по языкам в формате {"ru": "...", "en": "..."}. При передаче строки значение будет выставлено для всех языков
LABEL
string
Название пользовательского поля по умолчанию.

Значение будет выставлено в поля LIST_FILTER_LABEL, LIST_COLUMN_LABEL, EDIT_FORM_LABEL, ERROR_MESSAGE, HELP_MESSAGE, если в них не передано значение

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

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

  • string
Название
тип
Описание
DEFAULT_VALUE
string
Значение по умолчанию.

По умолчанию ''

ROWS
integer
Количество строк в поле ввода. Обязательно больше 0.

По умолчанию 1

  • integer
Название
тип
Описание
DEFAULT_VALUE
integer
Значение по умолчанию
  • double
Название
тип
Описание
DEFAULT_VALUE
double
Значение по умолчанию
PRECISION
integer
Точность числа. Обязательно больше или равно 0.

По умолчанию 2

  • boolean
Название
тип
Описание
DEFAULT_VALUE
integer
Значение по умолчанию, где 1 — да, 0 — нет.

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

По умолчанию 0

DISPLAY
string
Внешний вид. Возможные значения:
— CHECKBOX — флажок
— RADIO — радиокнопки
— DROPDOWN — выпадающий список

По умолчанию CHECKBOX

  • date|datetime
Название
тип
Описание
DEFAULT_VALUE
object
Значение по умолчанию.

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

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

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

Значение по умолчанию:

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

По умолчанию LIST

LIST_HEIGHTВысота списка. Обязательно больше 0.

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

По умолчанию 1

  • iblock_section|iblock_element
Название
тип
Описание
IBLOCK_TYPE_ID
string
Идентификатор типа инфоблока.

По умолчанию ''

IBLOCK_ID
string
Идентификатор инфоблока.

По умолчанию 0

DEFAULT_VALUE
string
Значение по умолчанию.

По умолчанию ''

DISPLAY
string
Внешний вид. Возможные значения:
— DIALOG — диалог
— UI — набираемый список
— LIST — список
— CHECKBOX — флажки

По умолчанию LIST

LIST_HEIGHT
integer
Высота списка. Обязательно больше 0.

По умолчанию 1

ACTIVE_FILTER
boolean
Показывать ли элементы с включенным флагом активности. Возможные значения:
— Y — да
— N — нет

По умолчанию N

  • crm_status
Название
тип
Описание
ENTITY_TYPE
string
Идентификатор типа справочника.

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

По умолчанию ''

  • crm

Если не передать ни одну из следующих опций, то по умолчанию будет включена привязка к лидам (LEAD = Y).

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

По умолчанию N

CONTACT
boolean
Включена ли привязка к Контактам. Возможные значения:
— Y — да
— N — нет

По умолчанию N

COMPANY
boolean
Включена ли привязка к Компаниям. Возможные значения:
— Y — да
— N — нет

По умолчанию N

DEAL
boolean
Включена ли привязка к Сделкам. Возможные значения:
— Y — да
— N — нет

По умолчанию N

Если необходимо через API создать пользовательское поле с добавленным пользовательским типом, в поле USER_TYPE_ID необходимо указывать rest_<номер приложения>_<USER_TYPE_ID добавленного типа>. Например rest_436278_test_type.

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields": {
            "FIELD_NAME": "UF_USER_DEALS",
            "USER_TYPE_ID": "crm",
            "XML_ID": "UF_CRM_DEALS",
            "SORT": 100,
            "MULTIPLE": "Y",
            "MANDATORY": "N",
            "SHOW_FILTER": "N",
            "SHOW_IN_LIST": "Y",
            "EDIT_IN_LIST": "Y",
            "SETTINGS": {
                "DEAL": "Y"
            },
            "LABEL": "Привязка к сделкам CRM",
            "EDIT_FORM_LABEL": {
                "ru": "Привязка к сделкам CRM"
            }
        }
    }' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/user.userfield.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields": {
            "FIELD_NAME": "UF_USER_DEALS",
            "USER_TYPE_ID": "crm",
            "XML_ID": "UF_CRM_DEALS",
            "SORT": 100,
            "MULTIPLE": "Y",
            "MANDATORY": "N",
            "SHOW_FILTER": "N",
            "SHOW_IN_LIST": "Y",
            "EDIT_IN_LIST": "Y",
            "SETTINGS": {
                "DEAL": "Y"
            },
            "LABEL": "Привязка к сделкам CRM",
            "EDIT_FORM_LABEL": {
                "ru": "Привязка к сделкам CRM"
            }
        },
        "auth": "**put_access_token_here**"
    }' \
    https://**put_your_bitrix24_address**/rest/user.userfield.add
  • JS
    try
    {
        const response = await $b24.callMethod(
            'user.userfield.add',
            {
                fields: {
                    FIELD_NAME: 'UF_USER_DEALS',
                    USER_TYPE_ID: 'crm',
                    XML_ID: 'UF_CRM_DEALS',
                    SORT: 100,
                    MULTIPLE: 'Y',
                    MANDATORY: 'N',
                    SHOW_FILTER: 'N',
                    SHOW_IN_LIST: 'Y',
                    EDIT_IN_LIST: 'Y',
                    SETTINGS: {
                        DEAL: 'Y',
                    },
                    LABEL: 'Привязка к сделкам CRM',
                    EDIT_FORM_LABEL: {
                        ru: 'Привязка к сделкам CRM'
                    },
                }
            }
        );

        const result = response.getData().result;
        console.log('Created element with ID:', result);
        processResult(result);
    }
    catch( error )
    {
        console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'user.userfield.add',
                [
                    'fields' => [
                        'FIELD_NAME' => 'UF_USER_DEALS',
                        'USER_TYPE_ID' => 'crm',
                        'XML_ID' => 'UF_CRM_DEALS',
                        'SORT' => 100,
                        'MULTIPLE' => 'Y',
                        'MANDATORY' => 'N',
                        'SHOW_FILTER' => 'N',
                        'SHOW_IN_LIST' => 'Y',
                        'EDIT_IN_LIST' => 'Y',
                        'SETTINGS' => [
                            'DEAL' => 'Y',
                        ],
                        'LABEL' => 'Привязка к сделкам CRM',
                        'EDIT_FORM_LABEL' => [
                            'ru' => 'Привязка к сделкам CRM'
                        ],
                    ]
                ]
            );

        $result = $response
            ->getResponseData()
            ->getResult();

        echo 'Success: ' . print_r($result, true);
        processData($result);

    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding user field: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'user.userfield.add', 
        {
            fields: {
                FIELD_NAME: "UF_USER_DEALS",
                USER_TYPE_ID: "crm",
                XML_ID: "UF_CRM_DEALS",
                SORT: 100,
                MULTIPLE: "Y",
                MANDATORY: "N",
                SHOW_FILTER: "N",
                SHOW_IN_LIST: "Y",
                EDIT_IN_LIST: "Y",
                SETTINGS: {
                    DEAL: "Y",
                },
                LABEL: "Привязка к сделкам CRM",
                EDIT_FORM_LABEL: {
                    ru: "Привязка к сделкам CRM"
                },
            },
        },
        function(result)
        {
            if(result.error())
                console.error(result.error());
            else
                console.log(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'user.userfield.add',
        [
            'fields' => [
                'FIELD_NAME' => 'UF_USER_DEALS',
                'USER_TYPE_ID' => 'crm',
                'XML_ID' => 'UF_CRM_DEALS',
                'SORT' => 100,
                'MULTIPLE' => 'Y',
                'MANDATORY' => 'N',
                'SHOW_FILTER' => 'N',
                'SHOW_IN_LIST' => 'Y',
                'EDIT_IN_LIST' => 'Y',
                'SETTINGS' => [
                    'DEAL' => 'Y',
                ],
                'LABEL' => 'Привязка к сделкам CRM',
                'EDIT_FORM_LABEL' => [
                    'ru' => 'Привязка к сделкам CRM'
                ],
            ]
        ]
    );

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

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

HTTP-статус: 200

{
    "result":177,
    "time":{
        "start":1747301035.550121,
        "finish":1747301037.514112,
        "duration":1.9639909267425537,
        "processing":0.5865437984466553,
        "date_start":"2025-05-15T11:23:55+02:00",
        "date_finish":"2025-05-15T11:23:57+02:00",
        "operating":0
    }
}

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

Название
тип
Описание
result
integer
Идентификатор созданного пользовательского поля
time
time
Информация о времени выполнения запроса

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

HTTP-статус: 400

{
   "error":"",
   "error_description":"The \u0027FIELD_NAME\u0027 field is not found."
}

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

КодОписаниеЗначение
ERROR_ARGUMENTArgument ‘USER_TYPE_ID’ is null or emptyНе задан USER_TYPE_ID
ERROR_ARGUMENTArgument ‘HANDLER’ is null or emptyНе задан HANDLER
ERROR_COREПоле \ для объекта USER уже существуетПоле \* для объекта USER уже существует
ERROR_COREFail to create new user fieldОшибка при создании поля
Пустая строкаThe \u0027FIELD_NAME\u0027 field is not found.Не задано обязательное поле FIELD_NAME
Пустая строкаThe \u0027USER_TYPE_ID\u0027 field is not found.Не задано обязательное поле USER_TYPE_ID
  • [](./user-userfield-update)
  • [](./user-userfield-list)
  • [](./user-userfield-delete)

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

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к user.userfield.add, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Добавить пользовательское поле user.userfield.add».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

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

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

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

Related Post

Как использовать сквозную аналитику при создании лидаКак использовать сквозную аналитику при создании лида

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Как использовать сквозную аналитику при создании лида». Мы подготовили подробный разбор принципов работы и развернутые

Как использовать метод SDK crm.company.contact.fields в Битрикс24Как использовать метод SDK crm.company.contact.fields в Битрикс24

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Как использовать метод SDK crm.company.contact.fields в Битрикс24». Вы узнаете экспертные методики работы с

Скрыть карточку звонка у пользователя telephony.externalcall.hideСкрыть карточку звонка у пользователя telephony.externalcall.hide

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Скрыть карточку звонка у пользователя telephony.externalcall.hide». Мы подготовили подробный разбор принципов работы и развернутые примеры