← К документации

CRM

Конвертация лидов в коробке

Мастер конвертации, обязательные поля и ограничения автоматического преобразования лида.

Конвертация не равна трём вызовам add

При конвертации меняются не только карточки контакта, компании и сделки. Нужно учитывать связи, состояние лида, дела и настройки сопоставления полей. Простое создание контакта и сделки оставляет это на вашем коде.

Для коробки существует Bitrix\Crm\Conversion\LeadConversionWizard. Метод execute доступен с CRM 16.0.7, но это не обещание одинакового поведения всех настроек на старых и новых версиях.

Запуск подготовленного мастера

Ниже показана обработка результата уже настроенного мастера. $conversion_config — конфигурация нужных результатов конвертации; её нужно подготовить под существующие поля и воронки портала, а $user_id взять из доверенного контекста.

<?php

if (!\Bitrix\Main\Loader::includeModule('crm')) {
    throw new \RuntimeException('Модуль crm не загружен');
}

$wizard = new \Bitrix\Crm\Conversion\LeadConversionWizard(
    $lead_id,
    $conversion_config
);
$is_success = $wizard->execute(['USER_ID' => $user_id]);
if (!$is_success) {
    $error_text = $wizard->getErrorText();
    throw new \RuntimeException('Конвертация не завершена');
}
$result_data = $wizard->getResultData();

Это фрагмент интеграции, а не готовый универсальный конвертер. Состав $result_data сверяется с выбранными целевыми сущностями. После сбоя сначала проверьте, какие результаты уже появились, и только затем решайте вопрос повторного запуска.

Поля и автоматизация

Не отключайте проверки обязательных полей и бизнес-процессов ради успешного возврата из метода. Если целевая сущность требует значения, добавьте его в сопоставление. Синхронизация пользовательских полей изменяет схему CRM и должна быть отдельным подготовленным действием, а не скрытым побочным эффектом каждого запуска.

В облаке внутренний PHP-мастер недоступен. Не переносите этот пример в REST-приложение и не придумывайте REST-метод по названию PHP-класса.

Источники