Блог Горошко Андрея Bitrix24,PHP Как получить список поставщиков

Как получить список поставщиков

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

Как получить список поставщиков

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

Поставщики — это контакты и компании CRM с признаком системной категории:

  • CATALOG_CONTRACTOR_CONTACT — для контакта,
  • CATALOG_CONTRACTOR_COMPANY — для компании.

Чтобы получить список поставщиков, последовательно выполним два метода:

1. crm.category.list — получим идентификатор категории для контакта или компании.
2. crm.item.list — получим список поставщиков по фильтру.

1. Получим идентификатор категории поставщика

Используем метод crm.category.list с параметрами:

  • entityTypeId — идентификатор типа объекта CRM. Укажем 3 для контактов. Для компаний используйте 4.
  • filter[code] — фильтр по коду категории. Укажем CATALOG_CONTRACTOR_CONTACT для контакта. Для компаний используйте CATALOG_CONTRACTOR_COMPANY.
  • JS
    BX24.callMethod(
        'crm.category.list',
        {
            entityTypeId: 3,
            filter: {
                code: 'CATALOG_CONTRACTOR_CONTACT'
            }
        },
        function(result) {
            console.log(result.data());
        }
    );
  • PHP
    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.
  • JS
    BX24.callMethod(
        'crm.item.list',
        {
            entityTypeId: 3,
            select: ['id', 'name', 'lastName', 'categoryId'],
            filter: {
                categoryId: 15
            }
        },
        function(result) {
            console.log(result.data());
        }
    );
  • PHP
    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.

Пример кода

  • JS
    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());
                    }
                }
            );
        }
    );
  • PHP
    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']);
    }

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

Ключевые выводы по теме «Как получить список поставщиков»:

Использование современных стандартов D7 при работе с битрикс позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

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

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

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

Related Post

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

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

Получить конфигурируемое дело по id crm.activity.configurable.getПолучить конфигурируемое дело по id crm.activity.configurable.get

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Получить конфигурируемое дело по id crm.activity.configurable.get», разберем архитектурные

Изменить привязку оплаты к отгрузке sale.paymentItemShipment.updateИзменить привязку оплаты к отгрузке sale.paymentItemShipment.update

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