Добрый день. Делаю пакет запросов при помощи 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. Но как в таком случае обратиться к результату запроса, не пойму.