Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить список пользовательских полей реквизита по фильтру crm.requisite.use…». Вы узнаете экспертные методики работы с crm.requisite.userfield.list и научитесь избегать типичных ошибок начинающих разработчиков.
Получить список пользовательских полей реквизита по фильтру crm.requisite.userfield.list
> Scope: crm
>
> Кто может выполнять метод: любой пользователь
Метод возвращает список пользовательских полей реквизита по фильтру.
Параметры метода
Названиетип | Описание |
|---|---|
orderobject | Объект для сортировки выбранных пользовательских полей в формате {"field_1": "order_1", ... "field_N": "order_N"}.Возможные значения для Возможные значения для |
filterobject | Объект для фильтрации выбранных реквизитов в формате {"field_1": "value_1", ... "field_N": "value_N"}. В фильтре этого метода поддерживается только обычное сравнение значений.Возможные значения для Дополнительные префиксы в ключах, уточняющие поведение фильтра, не предусмотрены. Всегда используется операция Возможные значения для |
Описание полей пользовательского поля реквизита {#fields-description}
Названиетип | Описание |
|---|---|
IDint | Идентификатор пользовательского поля |
ENTITY_IDstring | Идентификатор сущности, к которой относится пользовательское поле. Для реквизитов это всегда CRM_REQUISITE |
*FIELD_NAME^^string | Символьный код. Для реквизитов всегда начинается с префикса UF_CRM_ |
USER_TYPE_ID^^string | Тип данных (string, boolean, double или datetime) |
XML_IDstring | Внешний ключ. Используется для операций обмена. Идентификатор объекта внешней информационной базы. Назначение поля может меняться конечным разработчиком |
SORTint | Сортировка |
MULTIPLEchar | Признак множественности. Возможные значения: — Y — да— N — нет |
MANDATORYchar | Признак обязательности. Возможные значения: — Y — да— N — нет |
SHOW_FILTERchar | Показывать ли в фильтре списка. Возможные значения: — N — не показывать— I — точное совпадение— E — маска— S — подстрока |
SHOW_IN_LISTchar | Показывать ли в списке. Возможные значения: — Y — да— N — нет |
EDIT_IN_LISTchar | Разрешать ли редактирование пользователем. Возможные значения: — Y — да— N — нет |
IS_SEARCHABLEchar | Участвуют ли значения поля в поиске. Возможные значения: — Y — да— N — нет |
EDIT_FORM_LABELstring | Подпись в форме редактирования |
LIST_COLUMN_LABELstring | Заголовок в списке |
LIST_FILTER_LABELstring | Подпись фильтра в списке |
ERROR_MESSAGEstring | Сообщение об ошибке |
HELP_MESSAGEstring | Помощь |
LISTuf_enum_element | Элементы списка. Для получения подробной информации смотрите раздел [](../../universal/user-defined-fields/crm-userfield-enumeration-fields) |
SETTINGSobject | Дополнительные настройки (зависят от типа). Для получения подробной информации смотрите раздел [](../../universal/user-defined-fields/crm-userfield-settings-fields) |
Примеры кода
- cURL (Webhook)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"order":{"SORT":"ASC"},"filter":{"MANDATORY":"N","LANG":"ru"}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.requisite.userfield.list- cURL (OAuth)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"order":{"SORT":"ASC"},"filter":{"MANDATORY":"N","LANG":"ru"},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.requisite.userfield.list- JS
// callListMethod рекомендуется использовать, когда необходимо получить весь набор списочных данных и объём записей относительно невелик (до примерно 1000 элементов). Метод загружает все данные сразу, что может привести к высокой нагрузке на память при работе с большими объемами.
try {
const response = await $b24.callListMethod(
'crm.requisite.userfield.list',
{
order: { "SORT": "ASC" },
filter: { "MANDATORY": "N", "LANG": "ru" }
},
(progress) => { console.log('Progress:', progress) }
)
const items = response.getData() || []
for (const entity of items) { console.log('Entity:', entity) }
} catch (error) {
console.error('Request failed', error)
}
// fetchListMethod предпочтителен при работе с крупными наборами данных. Метод реализует итеративную выборку с использованием генератора, что позволяет обрабатывать данные по частям и эффективно использовать память.
try {
const generator = $b24.fetchListMethod('crm.requisite.userfield.list', { order: { "SORT": "ASC" }, filter: { "MANDATORY": "N", "LANG": "ru" } }, 'ID')
for await (const page of generator) {
for (const entity of page) { console.log('Entity:', entity) }
}
} catch (error) {
console.error('Request failed', error)
}
// callMethod предоставляет ручной контроль над процессом постраничного получения данных через параметр start. Подходит для сценариев, где требуется точное управление пакетами запросов. Однако при больших объемах данных может быть менее эффективным по сравнению с fetchListMethod.
try {
const response = await $b24.callMethod('crm.requisite.userfield.list', { order: { "SORT": "ASC" }, filter: { "MANDATORY": "N", "LANG": "ru" } }, 0)
const result = response.getData().result || []
for (const entity of result) { console.log('Entity:', entity) }
} catch (error) {
console.error('Request failed', error)
}- PHP
try {
$response = $b24Service
->core
->call(
'crm.requisite.userfield.list',
[
'order' => ['SORT' => 'ASC'],
'filter' => ['MANDATORY' => 'N', 'LANG' => 'ru']
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
if ($result->more()) {
$result->next();
}
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error listing requisite user fields: ' . $e->getMessage();
}- BX24.js
BX24.callMethod(
"crm.requisite.userfield.list",
{
order: { "SORT": "ASC" },
filter: { "MANDATORY": "N", "LANG": "ru" }
},
function(result)
{
if(result.error())
console.error(result.error());
else
{
console.dir(result.data());
if(result.more())
result.next();
}
}
);- PHP CRest
require_once('crest.php');
$result = CRest::call(
'crm.requisite.userfield.list',
[
'order' => ['SORT' => 'ASC'],
'filter' => ['MANDATORY' => 'N', 'LANG' => 'ru']
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';Обработка ответа
HTTP-статус: 200
{
"result": [
{
"ID": "232",
"ENTITY_ID": "CRM_REQUISITE",
"FIELD_NAME": "UF_CRM_NEWTECH_V1_BOOLEAN",
"USER_TYPE_ID": "boolean",
"XML_ID": null,
"SORT": "100",
"MULTIPLE": "N",
"MANDATORY": "N",
"SHOW_FILTER": "E",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"DEFAULT_VALUE": 0,
"DISPLAY": "CHECKBOX",
"LABEL": [
"",
""
],
"LABEL_CHECKBOX": "UF - Да/Нет"
},
"EDIT_FORM_LABEL": "UF - Да/Нет",
"LIST_COLUMN_LABEL": "UF - Да/Нет",
"LIST_FILTER_LABEL": "UF - Да/Нет",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null
},
{
"ID": "233",
"ENTITY_ID": "CRM_REQUISITE",
"FIELD_NAME": "UF_CRM_NEWTECH_V1_DATETIME",
"USER_TYPE_ID": "datetime",
"XML_ID": null,
"SORT": "100",
"MULTIPLE": "N",
"MANDATORY": "N",
"SHOW_FILTER": "E",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"DEFAULT_VALUE": {
"TYPE": "NONE",
"VALUE": ""
},
"USE_SECOND": "Y",
"USE_TIMEZONE": "N"
},
"EDIT_FORM_LABEL": "UF - Дата",
"LIST_COLUMN_LABEL": "UF - Дата",
"LIST_FILTER_LABEL": "UF - Дата",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null
},
{
"ID": "234",
"ENTITY_ID": "CRM_REQUISITE",
"FIELD_NAME": "UF_CRM_NEWTECH_V1_DOUBLE",
"USER_TYPE_ID": "double",
"XML_ID": null,
"SORT": "100",
"MULTIPLE": "N",
"MANDATORY": "N",
"SHOW_FILTER": "E",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"PRECISION": 2,
"SIZE": 20,
"MIN_VALUE": 0,
"MAX_VALUE": 0,
"DEFAULT_VALUE": null
},
"EDIT_FORM_LABEL": "ПП - Число",
"LIST_COLUMN_LABEL": "ПП - Число",
"LIST_FILTER_LABEL": "ПП - Число",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null
},
{
"ID": "235",
"ENTITY_ID": "CRM_REQUISITE",
"FIELD_NAME": "UF_CRM_NEWTECH_V1_STRING",
"USER_TYPE_ID": "string",
"XML_ID": null,
"SORT": "100",
"MULTIPLE": "N",
"MANDATORY": "N",
"SHOW_FILTER": "N",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"SIZE": 20,
"ROWS": 1,
"REGEXP": "",
"MIN_LENGTH": 0,
"MAX_LENGTH": 0,
"DEFAULT_VALUE": ""
},
"EDIT_FORM_LABEL": "ПП - Строка",
"LIST_COLUMN_LABEL": "ПП - Строка",
"LIST_FILTER_LABEL": "ПП - Строка",
"ERROR_MESSAGE": "UF_CRM_NEWTECH_V1_STRING",
"HELP_MESSAGE": "UF_CRM_NEWTECH_V1_STRING"
}
],
"total": 4,
"time": {
"start": 1717754823.56747,
"finish": 1717754823.938955,
"duration": 0.37148499488830566,
"processing": 0.007915973663330078,
"date_start": "2024-06-07T12:07:03+02:00",
"date_finish": "2024-06-07T12:07:03+02:00",
"operating": 0
}
}Возвращаемые данные
Названиетип | Описание |
|---|---|
resultarray | Массив объектов с информацией из выбранных пользовательских полей. Каждый элемент содержит выбранные поля, описывающие пользовательское поле реквизита |
totalinteger | Общее количество найденных записей |
timetime | Информация о времени выполнения запроса |
Обработка ошибок
HTTP-статус: 40x, 50x
{
"error": "",
"error_description": "Access denied."
}Возможные ошибки
| Текст ошибки | Описание* |
|---|---|
Access denied | Недостаточно прав доступа для получения списка пользовательских полей реквизита |
- [](./crm-requisite-userfield-add)
- [](./crm-requisite-userfield-update)
- [](./crm-requisite-userfield-get)
- [](./crm-requisite-userfield-delete)
💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Получить список пользовательских полей реквизита по фильтру crm.requisite.use…»:
Использование современных стандартов D7 при работе с crm.requisite.userfield.list позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru