Блог Горошко Андрея Bitrix24,PHP Изменить лид crm.lead.update

Изменить лид crm.lead.update

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

Изменить лид crm.lead.update

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

Метод crm.lead.update обновляет существующий лид.

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

Предупреждение
Настоятельно рекомендуется при обновлении адреса передавать полный набор полей адреса в метод обновления. Особенности обновления полей адреса описаны здесь.

Название
тип
Описание
id
integer
Идентификатор лида.

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

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

{
    field_1: value_1,
    field_2: value_2,
    ...,
    field_n: value_n,
}

где:
— field_n — название поля
— value_n — новое значение поля

Список доступных полей описан ниже.

Некорректное поле в fields будет проигнорировано.

В fields нужно передавать только те поля, которые требуется изменить

params
object
Необязательный набор опций. ("paramName"=>"value"[, ...]). Перечень возможных полей описан ниже

Параметр fields {#fields}

Название
тип
Описание
ADDRESS
string
Адрес лида
ADDRESS_2
string
Вторая страница адреса. В некоторых странах принято разбивать адрес на 2 части
ADDRESS_CITY
string
Город
ADDRESS_COUNTRY
string
Страна
ADDRESS_COUNTRY_CODE
string
Код страны
ADDRESS_POSTAL_CODE
string
Почтовый индекс
ADDRESS_PROVINCE
string
Область
ADDRESS_REGION
string
Район
ASSIGNED_BY_ID
user
Ответственный
BIRTHDATE
date
Дата рождения
COMMENTS
string
Комментарии
COMPANY_ID
crm_company
Привязка лида к компании
COMPANY_TITLE
string
Название компании, указанное в соответствующем поле лида. Для привязки существующей компании стоит передавать её id в поле COMPANY_ID
CONTACT_ID
crm_contact
Привязка лида к контакту
CONTACT_IDS
crm_contact
Список привязанных к лиду контактов.

Контакты можно добавлять или удалять группой методов crm.lead.contact.

CURRENCY_ID
crm_currency
Идентификатор валюты
EMAIL
crm_multifield
Адрес электронной почты. Множественное
HONORIFIC
crm_status
Вид обращения
IM
crm_multifield
Мессенджер. Множественное
LINK
crm_multifield
ID пользователя, привязанного через открытую линию. Множественное
LAST_NAME
string
Фамилия
NAME
string
Имя
SECOND_NAME
string
Отчество
OPENED
char
Признак доступности лида для всех. Допустимые значения Y или N
OPPORTUNITY
double
Сумма
IS_MANUAL_OPPORTUNITY
char
Признак ручного режима расчёта суммы. Допустимые значения Y или N
ORIGINATOR_ID
string
Идентификатор источника данных. Используется только для привязки к внешнему источнику
ORIGIN_ID
string
Идентификатор элемента в источнике данных. Используется только для привязки к внешнему источнику
PHONE
crm_multifield
Телефон. Множественное
POST
string
Должность
SOURCE_DESCRIPTION
string
Описание источника
SOURCE_ID
crm_status
Идентификатор источника.
Значения по умолчанию:

#

Дополнительно о стадии
STATUS_IDНазвание
NEWНе обработан
IN_PROCESSВ работе
PROCESSEDОбработан
JUNKНекачественный лид
CONVERTEDКачественный лид
Название лида
Обозначение рекламной кампании
Содержание кампании. Например, для контекстных объявлений
Тип трафика. CPC (объявления), CPM (баннеры)
Рекламная система. Yandex-Direct, Google-Adwords и другие
Условие поиска кампании. Например, ключевые слова контекстной рекламы
Сайт. Множественное
UF_…

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

Для изменения файловых полей рекомендуется использовать метод crm.item.update.

Информация
Так же, чтобы узнать требуемый формат полей, можно выполнить метод crm.lead.fields и посмотреть формат пришедших значений этих полей.

Информация
При изменении лида нельзя явно установить признак повторного лида (поле IS_RETURN_CUSTOMER), однако, это поле автоматически принимает значение Y, если при изменении лида указать значение для COMPANY_ID или CONTACT_ID

Параметр params {#params}

Название
тип
Описание
REGISTER_SONET_EVENT
char
произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид. Допустимые значения Y или N

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":1608,"fields":{"TITLE":"ИП Титов","NAME":"Глеб","SECOND_NAME":"Егорович","LAST_NAME":"Титов","STATUS_ID":"NEW","OPENED":"Y","ASSIGNED_BY_ID":1,"CURRENCY_ID":"USD","OPPORTUNITY":12500,"PHONE":[{"VALUE":"555888","VALUE_TYPE":"WORK"}],"WEB":[{"VALUE":"www.mysite.com","VALUE_TYPE":"WORK"}]},"params":{"REGISTER_SONET_EVENT":"Y"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.lead.update
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":1608,"fields":{"TITLE":"ИП Титов","NAME":"Глеб","SECOND_NAME":"Егорович","LAST_NAME":"Титов","STATUS_ID":"NEW","OPENED":"Y","ASSIGNED_BY_ID":1,"CURRENCY_ID":"USD","OPPORTUNITY":12500,"PHONE":[{"VALUE":"555888","VALUE_TYPE":"WORK"}],"WEB":[{"VALUE":"www.mysite.com","VALUE_TYPE":"WORK"}]},"params":{"REGISTER_SONET_EVENT":"Y"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.lead.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		"crm.lead.update",
    		{
    			id: 1608,
    			fields:
    			{
    				TITLE: "ИП Титов",
    				NAME: "Глеб",
    				SECOND_NAME: "Егорович",
    				LAST_NAME: "Титов",
    				STATUS_ID: "NEW",
    				OPENED: "Y",
    				ASSIGNED_BY_ID: 1,
    				CURRENCY_ID: "USD",
    				OPPORTUNITY: 12500,
    				PHONE: [
    					{
    						VALUE: "555888",
    						VALUE_TYPE: "WORK",
    					},
    				],
    				WEB: [
    					{
    						VALUE: "www.mysite.com",
    						VALUE_TYPE: "WORK",
    					}
    				],
    			},
    			params: {
    				REGISTER_SONET_EVENT: "Y",
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.info(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $id = 123; // Example lead ID
        $fields = [
            'TITLE' => 'Updated Lead Title',
            'NAME' => 'John',
            'LAST_NAME' => 'Doe',
            'BIRTHDATE' => (new DateTime('1980-01-01'))->format(DateTime::ATOM),
            'COMPANY_TITLE' => 'Example Company',
            'STATUS_ID' => 'NEW',
            'COMMENTS' => 'Updated comments for the lead.',
            'PHONE' => '1234567890',
            'EMAIL' => 'john.doe@example.com',
        ];
        $params = [
            'REGISTER_SONET_EVENT' => 'Y',
        ];
        $result = $serviceBuilder->getCRMScope()->lead()->update($id, $fields, $params);
        if ($result->isSuccess()) {
            print($result->getCoreResponse()->getResponseData()->getResult()[0]);
        } else {
            print("Update failed.");
        }
    } catch (Throwable $e) {
        print("Error: " . $e->getMessage());
    }
  • BX24.js
    BX24.callMethod(
        "crm.lead.update",
        {
            id: 1608,
            fields:
            {
                TITLE: "ИП Титов",
                NAME: "Глеб",
                SECOND_NAME: "Егорович",
                LAST_NAME: "Титов",
                STATUS_ID: "NEW",
                OPENED: "Y",
                ASSIGNED_BY_ID: 1,
                CURRENCY_ID: "USD",
                OPPORTUNITY: 12500,
                PHONE: [
                    {
                        VALUE: "555888",
                        VALUE_TYPE: "WORK",
                    },
                ],
                WEB: [
                    {
                        VALUE: "www.mysite.com",
                        VALUE_TYPE: "WORK",
                    }
                ],
            },
            params: {
                REGISTER_SONET_EVENT: "Y",
            }
        },
        (result) => {
            if (result.error())
            {
                console.error(result.error());return;
            }
    
            console.info(result.data());
        }
    );
  • PHP CRest
    $fields = [
        'TITLE' => $sTitle,
        'COMPANY_ID' => 123,
        'PHONE' => [
            [
                'VALUE' => '555888',
                'VALUE_TYPE' => 'WORK',
            ],
        ],
    ];
    
    $result = CRest::call(
        'crm.lead.update',
        [
            'id' => 1608,
            'fields' => $fields,
        ],
        [
            'REGISTER_SONET_EVENT' => 'Y',
        ]     
    );

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

HTTP-статус: 200

{
    "result": true,
    "time": {
        "start": 1705764932.998683,
        "finish": 1705764937.173995,
        "duration": 4.1753120422363281,
        "processing": 3.3076529502868652,
        "date_start": "2024-01-20T18:35:32+03:00",
        "date_finish": "2024-01-20T18:35:37+03:00",
        "operating_reset_at": 1705765533,
        "operating": 3.3076241016387939
    }
}

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

Название
тип
Описание
result
boolean
Корневой элемент ответа, содержит true в случае успеха
time
time
Информация о времени выполнения запроса

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

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

{
    "error": "",
    "error_description": "ID is not defined or invalid."
}

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

Текст ошибкиОписание
ID is not defined or invalidВ параметр id передано не целое число больше нуля
Not foundЛид с переданным id не существует
Access deniedУ пользователя нет прав на редактирвоание лида

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

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

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

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

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

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

Related Post

Удалить кассу sale.cashbox.deleteУдалить кассу sale.cashbox.delete

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

Получить поля сделки crm.deal.fieldsПолучить поля сделки crm.deal.fields

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

Событие при удалении ресурса onBookingResourceDeleteСобытие при удалении ресурса onBookingResourceDelete

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