Как получить список поставщиков
Scope:
crmКто может выполнять метод: пользователи с правом просмотра контактов или компаний в CRM
Если вы разрабатываете интеграции для Битрикс24 с помощью AI-инструментов (Codex, Claude Code, Cursor), подключите MCP-сервер, чтобы ассистент использовал официальную REST-документацию.
Поставщики — это контакты и компании CRM с признаком системной категории:
CATALOG_CONTRACTOR_CONTACT— для контакта,CATALOG_CONTRACTOR_COMPANY— для компании.
Чтобы получить список поставщиков, последовательно выполним два метода:
- crm.category.list — получим идентификатор категории для контакта или компании.
- crm.item.list — получим список поставщиков по фильтру.
1. Получим идентификатор категории поставщика
Используем метод crm.category.list с параметрами:
entityTypeId— идентификатор типа объекта CRM. Укажем3для контактов. Для компаний используйте4.filter[code]— фильтр по коду категории. УкажемCATALOG_CONTRACTOR_CONTACTдля контакта. Для компаний используйтеCATALOG_CONTRACTOR_COMPANY.
Как использовать примеры в документации
BX24.callMethod(
'crm.category.list',
{
entityTypeId: 3,
filter: {
code: 'CATALOG_CONTRACTOR_CONTACT'
}
},
function(result) {
console.log(result.data());
}
);
require_once('crest.php');
$result = CRest::call(
'crm.category.list',
[
'entityTypeId' => 3,
'filter' => [
'code' => 'CATALOG_CONTRACTOR_CONTACT'
]
]
);
В результате получим идентификатор категории. В примере id:15. Идентификатор может отличаться на разных Битрикс24.
{
"result": {
"categories": [
{
"id": 15,
"name": "Контакты поставщика",
"entityTypeId": 3,
"isSystem": "Y",
"code": "CATALOG_CONTRACTOR_CONTACT"
}
]
}
}
2. Получим список поставщиков
Отфильтруем элементы методом crm.item.list с параметрами:
-
entityTypeId— идентификатор типа объекта CRM. Укажем3для контактов. Для компаний используйте4. -
select— список полей для вывода. Все доступные поля можно получить методом crm.item.fields. -
filter[categoryId]- идентификатор системной категории из шага 1. В примере15.
BX24.callMethod(
'crm.item.list',
{
entityTypeId: 3,
select: ['id', 'name', 'lastName', 'categoryId'],
filter: {
categoryId: 15
}
},
function(result) {
console.log(result.data());
}
);
require_once('crest.php');
$result = CRest::call(
'crm.item.list',
[
'entityTypeId' => 3,
'select' => ['id', 'name', 'lastName', 'categoryId'],
'filter' => [
'categoryId' => 15
]
]
);
В результате получим список контактов, которые являются поставщиками.
{
"result": {
"items": [
{
"id": 2185,
"name": "Он",
"lastName": null,
"categoryId": 15
},
{
"id": 2443,
"name": "Иван",
"lastName": "Иванов",
"categoryId": 15
}
]
},
"total": 2
}
Идентификаторы поставщиков, в примере id: 2185 и id: 2443, используйте в методе складского учета catalog.documentcontractor.add.
Пример кода
var entityTypeId = 3; // 3 - контакт; для компании укажите 4
var categoryCode = 'CATALOG_CONTRACTOR_CONTACT'; // для компании укажите CATALOG_CONTRACTOR_COMPANY
BX24.callMethod(
'crm.category.list',
{
entityTypeId: entityTypeId,
filter: { code: categoryCode }
},
function(resultCategory) {
if (resultCategory.error()) {
console.error(resultCategory.error() + ': ' + resultCategory.error_description());
return;
}
var categories = resultCategory.data().categories || [];
if (!categories.length) {
console.error('Категория поставщиков не найдена');
return;
}
var categoryId = categories[0].id;
BX24.callMethod(
'crm.item.list',
{
entityTypeId: entityTypeId,
select: ['id', 'name', 'lastName', 'categoryId'],
filter: { categoryId: categoryId },
order: { ID: 'DESC' }
},
function(resultItems) {
if (resultItems.error()) {
console.error(resultItems.error() + ': ' + resultItems.error_description());
} else {
console.log(resultItems.data());
}
}
);
}
);
require_once('crest.php');
$entityTypeId = 3; // 3 - контакт; для компании укажите 4
$categoryCode = 'CATALOG_CONTRACTOR_CONTACT'; // для компании укажите CATALOG_CONTRACTOR_COMPANY
$resultCategory = CRest::call(
'crm.category.list',
[
'entityTypeId' => $entityTypeId,
'filter' => [
'code' => $categoryCode
]
]
);
if (!empty($resultCategory['error_description'])) {
echo $resultCategory['error_description'];
return;
}
$categories = $resultCategory['result']['categories'] ?? [];
if (empty($categories)) {
echo 'Категория поставщиков не найдена';
return;
}
$categoryId = $categories[0]['id'];
$resultItems = CRest::call(
'crm.item.list',
[
'entityTypeId' => $entityTypeId,
'select' => ['id', 'name', 'lastName', 'categoryId'],
'filter' => [
'categoryId' => $categoryId
],
'order' => [
'ID' => 'DESC'
]
]
);
if (!empty($resultItems['error_description'])) {
echo $resultItems['error_description'];
} else {
print_r($resultItems['result']);
}