@vasyatolstij

Как объединить сделку и контакт при создании методом crm.deal.contact.add?

Появилась задача убрать создание лида и создавать сделку + контакт.
Создаю контакт и сделку. Вижу данные в var_dump, но в CRM приходит только сделка без контакта.
Я пытался создавать через batch, но контакт все равно не вижу (хотя в var_dump есть данные контакта и сделки).
Проверял через batch таким образом (функция sendDataToBitrix() просто берет метод с данными и отправляет данные через curl):
/****************************************/
        $dealBatch = sendDataToBitrix('batch', [
            "halt" => 0,
            "cmd" => array(
                "find_contact" => 'crm.duplicate.findbycomm?'
                    .http_build_query(array(
                        'type'        => 'PHONE',
                        'values'      => $contact['PHONE'], // сюда приходит номер телефона
                        'entity_type' => 'CONTACT'
                    )),
                "get_contact" => 'crm.contact.get?'
                    .http_build_query(array(
                        "id" => $contact['CONTACT_ID'], //id контакта
                        )),
                "get_deal" => 'crm.deal.get?'
                    .http_build_query(array(
                        "id" => $contact['DEAL_ID'], //id сделки
                    )),
            ),
        ]);
/****************************************/

Прочитал, что есть метод crm.deal.contact.add, но в документации совсем непонятно как им пользоваться. Может кто-то пожалуйста показать пример, как создавать сделку и контакт, а затем объединять их? Желательно самым простым способом. Я не использую cRest, пишу просто на php.
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
batch-запрос это группировка запросов, когда в одном запросе вы можете использовать результаты предыдущего запроса.
В вашем batch запросе указано 3 комманды:

1. Команда "find_contact" выполняет метод "crm.duplicate.findbycomm" который по номеру телефона ищет контакты (да - может вернутся от 0 до 50 контактов).
2. Команда "get_contact" выполняет получение контакта по идентификатору. В вашем случае по "$contact['CONTACT_ID']"
3. Команда "get_deal" выполняет получение сделки по ее идентификатору. В вашем случае по "$contact['DEAL_ID']".

Как вы можете видеть НИ ОДНА из команд не создает сделку, привязанную к контакту И не привязывает контакт к сделке.

Есть несколько вариантов как выполнить создание сделки привязанной к контакту:

1. Вы знаете ID контакта, поэтому вам нужно создать только сделку.
Вы используете метод crm.deal.add и заполняете поле CONTACT_ID указывая туда ID контакта.

2. Вы знаете ID контакта и ID сделки куда должны его прикрепить.
Вы используете метод "crm.deal.contact.add" передавая в "fields" ключи "CONTACT_ID" и "IS_PRIMARY".

3. Вы НЕ знаете ID контакта - в таком случае нужно сначала найти контакт по мультифилду (например по номеру телефона) используя метод "crm.duplicate.findbycomm", а потом уже в зависимости от того существует сделка или нет использовать методы 1 или 2.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы