- Модуль: 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;
}