Добрый день. Делаю пакет запросов при помощи Crest.
Возникла проблема с передачей результат предыдущего запроса к следующему.
Данные для запросов формирую в цикле, обрабатывая поля из $_POST
crm.company.add отрабатывает успешно, а прочие запросы завершаются с ошибкой. Вот получаемый ответ
Мне кажется, причиной является то, что переменная $result пустая во время формирования массива $fields для crm.requisite.add. Но как в таком случае обратиться к результату запроса, не пойму.
Возникла проблема с передачей результат предыдущего запроса к следующему.
Данные для запросов формирую в цикле, обрабатывая поля из $_POST
| Код |
|---|
$batchData = [];
foreach ($arCompanies as $key => $arCompany)
{
$iRequisitePresetID = intVal($arCompany["REQ_TYPE"]);
$sTitle = $arCompany["TITLE"];
$sINN = htmlspecialchars($arCompany["INN"]);
$sPhone = htmlspecialchars($arCompany["PHONE"]);
foreach($arCompany["ADDRESS"] as $k=>$val){
$arAddress[$k] = htmlspecialchars($val);
}
$arAddress['TYPE_ID'] = 1;//1 is actual address in CRest::call('crm.enum.addresstype');
$arAddress['ENTITY_TYPE_ID'] = 8;//8 - is requisite in CRest::call('crm.enum.ownertype');
$arPhone = (!empty($sPhone)) ? array(array('VALUE' => $sPhone, 'VALUE_TYPE' => 'WORK')) : array();
$batchData["add_company_".$key] = [
'method' => 'crm.company.add',
'params' => [
'fields' => [
'TITLE' => $sTitle,
'COMPANY_TYPE' => 'CUSTOMER',//is Client in CRest::call('crm.status.list',['filter'=>['ENTITY_ID'=>'COMPANY_TYPE']])
'PHONE' => $arPhone,
]
]
];
$batchData["add_requisite_".$key] = [
'method' => 'crm.requisite.add',
'params' => [
'fields' => [
'ENTITY_TYPE_ID' => 4,//4 - is company in CRest::call('crm.enum.ownertype');
'ENTITY_ID' => $result["add_company_".$key],//company id ----------------------------вот тут $result ПУСТОЙ
'PRESET_ID' => $iRequisitePresetID,
'TITLE' => $sTitle,
'ACTIVE' => 'Y',
'NAME' => $sTitle,
'RQ_INN' => $sINN,
]
]
];
$batchData["add_address_".$key] = [
'method' => 'crm.address.add',
'params' => [
'fields' => array_merge($arAddress, ['ENTITY_ID' => $result["add_requisite_".$key]])
]
];
}
$response = CRest::callBatch($batchData);
|
crm.company.add отрабатывает успешно, а прочие запросы завершаются с ошибкой. Вот получаемый ответ
| Код |
|---|
Array ( [result] => Array ( [result] => Array ( [add_company_0] => 33 [add_company_1] => 34 [add_company_2] => 35 ) [result_error] => Array ( [add_requisite_0] => Array ( [error] => [error_description] => ENTITY_ID is not defined or invalid. ) [add_address_0] => Array ( [error] => [error_description] => ENTITY_ID is not defined or invalid. ) [add_requisite_1] => Array ( [error] => [error_description] => ENTITY_ID is not defined or invalid. ) [add_address_1] => Array ( [error] => [error_description] => ENTITY_ID is not defined or invalid. ) [add_requisite_2] => Array ( [error] => [error_description] => ENTITY_ID is not defined or invalid. ) [add_address_2] => Array ( [error] => [error_description] => ENTITY_ID is not defined or invalid. ) ) [result_total] => Array ( ) [result_next] => Array ( ) [result_time] => Array ( [add_company_0] => Array ( [start] => 1632309901.3135 [finish] => 1632309901.6646 [duration] => 0.3510890007019 [processing] => 0.35014414787292 [date_start] => 2021-09-22T14:25:01+03:00 [date_finish] => 2021-09-22T14:25:01+03:00 ) [add_company_1] => Array ( [start] => 1632309901.6772 [finish] => 1632309901.8595 [duration] => 0.18223404884338 [processing] => 0.18220806121826 [date_start] => 2021-09-22T14:25:01+03:00 [date_finish] => 2021-09-22T14:25:01+03:00 ) [add_company_2] => Array ( [start] => 1632309901.8598 [finish] => 1632309902.0359 [duration] => 0.17609190940857 [processing] => 0.17606496810913 [date_start] => 2021-09-22T14:25:01+03:00 [date_finish] => 2021-09-22T14:25:02+03:00 ) ) ) [time] => Array ( [start] => 1632309901.1079 [finish] => 1632309902.0365 [duration] => 0.92856001853943 [processing] => 0.72308397293091 [date_start] => 2021-09-22T14:25:01+03:00 [date_finish] => 2021-09-22T14:25:02+03:00 ) ) |
Мне кажется, причиной является то, что переменная $result пустая во время формирования массива $fields для crm.requisite.add. Но как в таком случае обратиться к результату запроса, не пойму.