Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Отправить пакет запросов BX24.callBatch». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.
Отправить пакет запросов BX24.callBatch
В некоторых случаях возникает необходимость отправить несколько запросов подряд. Например, при создании необходимых сущностей в процессе инсталляции приложения. Для оптимизации процесса можно использовать пакетное выполнение запросов.
void BX24.callBatch(
Object|Array calls,
[Function callback[,
Boolean bHaltOnError = false]]
);Функция BX24.callBatch отправляет пакет запросов к REST-сервису. В случае вызова до BX24.init выполнение запроса будет отложено.
Входящие параметры и конфигурация метода
Названиетип | Описание | |
|---|---|---|
calls*object\ | array | Обычный или ассоциативный массив (объект) с запросами. Каждый запрос представляет собой либо массив [имя_метода, параметры_метода], либо объект {method: имя_метода, params: параметры_метода}.В параметрах методов можно использовать макросы, позволяющие получить доступ к результатам предыдущих запросов текущего пакета. Макрос можно составить примерно так: |
callbackfunction | Функция-обработчик результата пакетного запроса. На вход получит массив или ассоциативный массив (объект) объектов ajaxResult с ключами, соответствующими ключам из пакета запросов | |
bHaltOnErrorboolean | Флаг «прерывать исполнение пакета в при возникновении ошибки». По умолчанию — false (не прерывать) |
Практический пример и готовый код на PHP
BX24.init(() => {
const prepareMessage = (name, lastName, departmentNumber) => {
return `The current user ${name} ${lastName} is assigned to the departmen${departmentNumber > 1 ? 'ts ' : 't '}`;
};
BX24.callBatch({
get_user: ['user.current', {}],
get_department: {
method: 'department.get',
params: {
ID: '$result[get_user][UF_DEPARTMENT]',
},
},
}, (result) => {
if (result.get_user.error() || result.get_department.error())
{
if (result.get_user.error())
{
console.error(result.get_user.error());
}
if (result.get_department.error())
{
console.error(result.get_department.error());
}
}
else
{
const departmentNumber = result.get_department.data().length;
let message = prepareMessage(result.get_user.data().NAME, result.get_user.data().LAST_NAME, departmentNumber);
for (let i = 0; i < departmentNumber; i++)
{
message += i === 0 ? '' : ', ';
message += result.get_department.data()[i].NAME;
}
alert(message);
}
}, true);
});- [](./bx24-call-bind)
- [](./bx24-call-unbind)
- [](./bx24-call-method)
💡 Экспертное мнение и рекомендации
Практические рекомендации:
- При написании кастомных компонентов для «Отправить пакет запросов BX24.callBatch» всегда разделяйте бизнес-логику и представление (шаблон).
- Используйте отладку SQL-запросов через конструкцию
$wpdb->last_queryили стандартный трекер Битрикса, чтобы контролировать нагрузку.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru