bitrix24-php-sdk
bitrix24-php-sdk copied to clipboard
Добавить поддержку батч-запросов к нескольким сущностям с возвратом композитного результата
Вопрос: а у вас часто возникает потребность в упаковке запросов к разным или связанным сущностям в один батч?
Vladislav Piqpi в рамках одной сущности, если планируется более 1 запроса, то всегда батч. Если разные сущности, то разные батчи - к каждой сущности свой батч. Я понимаю, что так меньше приходится думать разработчику, и решение получается сделать быстрее
Роман Кононов Несколько сущностей тоже. Вот прямо сейчас проект: берётся Дело и тут же - Контакт, Компания и Сделка, возможно >связанные с ним. Потом ещё, возможно, добавятся Контакты и Компания, связанные с полученной Сделкой. Раз всё >равно один хит - тянуть по-максимуму
Предлагаемое решение:
$batch = new \Bitrix24\SDK\Core\Batch($core, $log);
$batch->addCommand('crm.deal.get', ['ID' => $dealId],'deal');
$batch->addCommand('crm.deal.productrows.get', ['ID' => $dealId],'products');
$batch->addCommand('user.current', [],'user');
$cdArr = $batch->getCompositeResultAsArray();
array(3) {
["deal"]=>
array(40) {
["ID"]=> string(3) "713"
["TITLE"]=> string(29) "тестовая сделка"
...
["products"]=>
array(2) {
[0]=>
array(22) {
["ID"]=> string(3) "325"
["OWNER_ID"]=> string(3) "713"
...
}
}
["user"]=>
array(40) {
["ID"]=> string(1) "1"
["ACTIVE"]=> 'Y'
...
}
}
там кстати фишку замечал еще, если передать в имя комманды число, он его не воспримет
покопать
$applicationInfo = $sb->getMainScope()->main()->getApplicationInfo()->getResponseData()->getResult()->getResultData();
$b24CurrentUserId = (int)$sb->getMainScope()->main()->getUserProfile()->getResponseData()->getResult()->getResultData()['ID'];
учесть хотелки https://github.com/mesilov/bitrix24-php-sdk/issues/305
Учесть возможность указания типа результата как аргумента при вызове команды?