- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/rest/externalchannel.php
- Класс: Bitrix\Crm\Rest\CCrmExternalChannelImportRequisite
- Вызов: CCrmExternalChannelImportRequisite::import
public function import(&$fields) { $result = new Result(); $import = new Result(); $batch = array(); if(!$this->isValidID($this->getOwnerEntityId())) { $import->addError(new Error("EntityId is not defined or invalid", 8001)); } else { $proccessList = array(); $r = $this->checkFields($fields); if($r->getErrors()) { $import->addErrors($r->getErrors()); } else { if(is_set($fields, CCrmExternalChannelImport::FIELDS_REQUISITE) && count($fields[CCrmExternalChannelImport::FIELDS_REQUISITE])>0) { $bank = new CCrmExternalChannelImportBank(); $bank->setOwnerEntity($this); $bank->import = $this->import; foreach($fields[CCrmExternalChannelImport::FIELDS_REQUISITE] as $row=>$requisite) { $fields = $requisite; $this->sanitizeFields($requisite); $this->internalizeFields($requisite, $this->getFieldsInfo()); $this->fillFields($requisite); $res = $this->innerList(array( '=ENTITY_ID' => $this->getOwnerEntityId(), '=XML_ID' => $requisite['XML_ID'], )); if($r = $res->fetch()) { $this->prepareFieldsAddress($requisite); $id = $r['ID']; $errors = []; $r = $this->innerUpdate($id, $requisite, $errors); } else { $errors = []; $r = $this->innerAdd($requisite, $errors); $data = $r->getData(); $id = $data['RESULT']; } if($r->getErrors()) { $batch[$row]['errors'] = $r->getErrors(); } elseif($this->isValidID((int)$id)) { $proccessList[] = $id; $bank->setOwnerEntityId($id); $r = $bank->import($fields); if($r->getErrors()) { $batch[$row]['banks'] = $r->getData(); } } } if(count($batch)<=0) { $r = $this->deleteEntities($proccessList); if($r->getErrors()) $import->addErrors($r->getErrors()); } } else { $r = $this->deleteEntities(array()); if($r->getErrors()) $import->addErrors($r->getErrors()); } } } if($import->getErrors() || count($batch)>0) { $result->addError(new Error('','IMPORT_ERROR')); $result->setData(array( 'IMPORT_ERROR'=>$import->getErrors(), 'BATCH_ERROR'=>$batch )); } return $result; }