Newto
@Newto

Как узнать id созданной записи в bitrix24?

Приветствую. Через административную панель сайта, по REST api посылается запрос crm.deal.userfield.update который создаёт запись в определённом поле сделки. Однако, в ответе от битрикса на этот запрос отсутствует идентификатор добавленной записи. Каждая такая запись это аккаунт на сайте. У меня стоит задача удалять такие аккаунты из битрикса по запросу с сайта, но я не могу понять как это правильно сделать, т.к. не знаю айдишников этих записей. Первое, что пришло в голову, это брать информацию по полю из сделки через метод crm.deal.userfield.get, там я уже вижу список добавленных в него записей и, в теории, могу узнать id просто по названию такой записи. Т.е. добавили "Вася", вижу в списке из битрикса эту запись и по "Вася" получаю id этого Васи. Но если "Вась" много, то такая схема уже не работает. Отсюда вопрос -- как получить id новой записи сразу после её добавления?
  • Вопрос задан
  • 606 просмотров
Решения вопроса 1
Newto
@Newto Автор вопроса
Для всех, кто попадёт на эту страницу в поисках решения этой проблемы. Я нашёл два решения, которые работают не идеально, но достаточно хорошо при условии не слишком частого обращения к bitrix API.

Итак, моя задача заключалась в том, что бы получить идентификатор новой записи в определенном поле в системе bitrix24. Далее распишу по шагам. В моём случае всё происходит через PHP, запрос отправляет собственная функция SendQuery. Используется старый синтаксис массивов без квадратных скобок, т.к. легаси, простите меня за это, лень было исправлять. Авторизационные данные зашиты в функции, их я опускаю в данном примере. В общем:

1) Создаем запись в нужном поле:
sendQuery('crm.deal.userfield.update', array(
        'id' => $field_id,
        'fields' => array(
            'LIST' => array(
                array('VALUE' => $name)
            )
        )
    ));


2) Пишем функцию получения id добавленной записи в поле:

function get_last_record_id_in_feld($filed_id) {
    
    $r = sendQuery('crm.deal.userfield.get', ['id' => $filed_id]);
    
    $result = $r['result']['LIST'];

    foreach($result as $list_data => $col) {
        
        $ids[] = $col['ID'];
    }
    
    sort($ids);
    $last = end($ids);
    
    return $last;
}


Тут я получаю список всех значений из поля, куда была сделана новая запись, сортирую массив по значениям, по возрастанию и получаю ID последней записи. Таким образом получаю id новой записи, созданной перед этим, с помощью метода crm.deal.userfield.update.

Второй способ это создание веб-хука. Битрикс умеет оповещать о внесенном изменении в какое-либо поле по заданному http адресу. Там все то же самое -- получаем от битрикса инфу, парсим, выцепляем последний id из нужного поля.

Надеюсь, мой ответ кому-то пригодится. Хорошего дня, дамы и господа.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы