Блог Горошко Андрея Bitrix24,PHP Зарегистрировать связь реквизитов с объектом crm.requisite.link.register

Зарегистрировать связь реквизитов с объектом crm.requisite.link.register

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Зарегистрировать связь реквизитов с объектом crm.requisite.link.register», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.

Зарегистрировать связь реквизитов с объектом crm.requisite.link.register

> Scope: crm
>
> Кто может выполнять метод: любой пользователь

Метод регистрирует связь реквизитов с объектом.

Для успешной регистрации идентификаторы реквизитов должны принадлежать клиенту и продавцу, которые выбраны в связываемом объекте. Если какого-то реквизита нет, то его идентификатор передается как 0. Можно даже указать все идентификаторы реквизитов нулевыми. Тогда считается, что к объекту реквизиты не привязаны.

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

Название
тип
Описание
fields
object
Набор полей связи реквизита — объект вида {"поле": "значение"[, ...]}

Параметр fields

Название
тип
Описание
ENTITY_TYPE_ID
integer
Идентификатор типа объекта, к которому относится связь.

Могут использоваться следующие типы:
— сделка (значение 2)
— старый счет (значение 5)
— предложение (значение 7)
— новый счет (значение 31)
— другие динамические объекты (для получения возможных значений смотрите метод crm.type.list).

Идентификаторы типов объектов CRM можно получить с помощью метода crm.enum.ownertype

ENTITY_ID
integer
Идентификатор объекта, к которому относится связь.

Идентификаторы объектов можно получить с помощью следующих методов: crm.deal.list, crm.quote.list, crm.item.list

REQUISITE_ID
integer
Идентификатор реквизита клиента, выбранного для объекта.

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

BANK_DETAIL_ID
integer
Идентификатор банковского реквизита клиента, выбранного для объекта.

Идентификаторы банковских реквизитов можно получить с помощью метода crm.requisite.bankdetail.list

MC_REQUISITE_ID
integer
Идентификатор реквизита моей компании, выбранного для объекта.

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

MC_BANK_DETAIL_ID*
integer
Идентификатор банковского реквизита моей компании, выбранного для объекта.

Идентификаторы банковских реквизитов можно получить с помощью метода crm.requisite.bankdetail.list

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"ENTITY_TYPE_ID":31,"ENTITY_ID":315,"REQUISITE_ID":60,"BANK_DETAIL_ID":24,"MC_REQUISITE_ID":2,"MC_BANK_DETAIL_ID":2}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.requisite.link.register
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"ENTITY_TYPE_ID":31,"ENTITY_ID":315,"REQUISITE_ID":60,"BANK_DETAIL_ID":24,"MC_REQUISITE_ID":2,"MC_BANK_DETAIL_ID":2},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.requisite.link.register
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		"crm.requisite.link.register", {
    			fields: {
    				ENTITY_TYPE_ID: 31,
    				ENTITY_ID: 315,
    				REQUISITE_ID: 60,
    				BANK_DETAIL_ID: 24,
    				MC_REQUISITE_ID: 2,
    				MC_BANK_DETAIL_ID: 2
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.dir(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.requisite.link.register',
                [
                    'fields' => [
                        'ENTITY_TYPE_ID'  => 31,
                        'ENTITY_ID'       => 315,
                        'REQUISITE_ID'    => 60,
                        'BANK_DETAIL_ID'  => 24,
                        'MC_REQUISITE_ID' => 2,
                        'MC_BANK_DETAIL_ID' => 2,
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error registering requisite link: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "crm.requisite.link.register", {
            fields: {
                ENTITY_TYPE_ID: 31,
                ENTITY_ID: 315,
                REQUISITE_ID: 60,       // Идентификатор реквизита, принадлежащего покупателю
                BANK_DETAIL_ID: 24,     // Идентификатор банковского реквизита, принадлежащего покупателю
                MC_REQUISITE_ID: 2,     // Идентификатор реквизита, принадлежащего компании-продавцу
                MC_BANK_DETAIL_ID: 2    // Идентификатор банковского реквизита, принадлежащего компании-продавцу
            }
        },
        function (result)
        {
            if (result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'crm.requisite.link.register',
        [
            'fields' =>
            [
                'ENTITY_TYPE_ID' => 31,
                'ENTITY_ID' => 315,
                'REQUISITE_ID' => 60,
                'BANK_DETAIL_ID' => 24,
                'MC_REQUISITE_ID' => 2,
                'MC_BANK_DETAIL_ID' => 2
            ]
        ]
    );

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

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

HTTP-статус: 200

{
    "result": true,
    "time": {
        "start": 1718729280.575321,
        "finish": 1718729281.296214,
        "duration": 0.720893144607544,
        "processing": 0.1967611312866211,
        "date_start": "2024-06-18T18:48:00+02:00",
        "date_finish": "2024-06-18T18:48:01+02:00",
        "operating": 0.1967298984527588
    }
}

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

Название
тип
Описание
result
boolean
Результат регистрации связи:
— true — связь зарегистрирована
— false — связь не зарегистрирована
time
time
Информация о времени выполнения запроса

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

HTTP-статус: 40x, 50x

{
    "error": "",
    "error_description": "Entity is not found"
}

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

КодОписание
ENTITY_TYPE_ID is not defined or invalidИдентификатор типа объекта не задан или имеет недопустимое значение
ENTITY_ID is not defined or invalidИдентификатор объекта не задан или имеет недопустимое значение
REQUISITE_ID is not defined or invalidИдентификатор реквизита клиента не задан или имеет недопустимое значение
BANK_DETAIL_ID is not defined or invalidИдентификатор банковского реквизита клиента не задан или имеет недопустимое значение
MC_REQUISITE_ID is not defined or invalidИдентификатор реквизита моей компании не задан или имеет недопустимое значение
MC_BANK_DETAIL_ID is not defined or invalidИдентификатор банковского реквизита моей компнаии не задан или имеет недопустимое значение
The Requisite with ID '60' is not foundРеквизит клиента с заданным идентификатором не найден
The Requisite with ID '60' is not assigned to Company with ID '5'Реквизит клиента с заданным идентификатором не принадлежит компании, указанной в объекте
The BankDetail with ID '24' is not foundБанковский реквизит клиента с заданным идентификатором не найден
The BankDetail with ID '24' is not assigned to Requisite with ID '60'Банковский реквизит клиента с заданным идентификатором не принадлежит указанному реквизиту
The Requisite of your company with ID '2' is not foundРеквизит моей компании с заданным идентификатором не найден
The Requisite with ID '2' is not assigned to your company with ID '3010'Реквизит моей компании с заданным идентификатором не принадлежит моей компании, указанной в объекте
The BankDetail of your company with ID '2' is not foundБанковский реквизит моей компании с заданным идентификатором не найден
The BankDetail of your company with ID '2' is not assigned to Requisite of your company with ID '2'Банковский реквизит моей компании с заданным идентификатором не принадлежит указанному реквизиту
  • [](./crm-requisite-link-get)
  • [](./crm-requisite-link-list)
  • [](./crm-requisite-link-unregister)
  • [](./crm-requisite-link-fields)

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

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

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

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

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

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

Related Post

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

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK crm.quote.userfield.list в Битрикс24», разберем

Панель действий: Подробное руководствоПанель действий: Подробное руководство

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

Удалить оплату sale.payment.deleteУдалить оплату sale.payment.delete

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