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-класса.