← К заметкам

Заметки

Почему команды в batch не видят результат предыдущей команды

Результат предыдущей команды в batch доступен через специальную подстановку $result[имя_команды]. Обычная переменная JavaScript внутри строки на сервер Bitrix24 не передаётся.

BX24.callMethod('batch', {
    halt: 1,
    cmd: {
        add_deal: 'crm.deal.add?fields[TITLE]=' + encodeURIComponent('Новая сделка'),
        add_comment: 'crm.timeline.comment.add?fields[ENTITY_TYPE]=deal&fields[ENTITY_ID]=$result[add_deal]&fields[COMMENT]=' + encodeURIComponent('Создано приложением')
    }
}, function (result) {
    if (result.error()) {
        console.error(result.error());
        return;
    }
    console.log(result.data());
});

crm.deal.add возвращает ID, поэтому здесь используется весь результат add_deal. Для метода, который возвращает объект, нужен путь к нужному полю результата.

halt: 1 останавливает следующие команды при ошибке, но не откатывает уже созданную сделку. Batch не является транзакцией. Перед повторной отправкой всего пакета выясните, какие команды успели выполниться, иначе появится ещё одна сделка.