Заметки
Почему команды в 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 не является транзакцией. Перед повторной отправкой всего пакета выясните, какие команды успели выполниться, иначе появится ещё одна сделка.