• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/rest/externalchannel.php
  • Класс: Bitrix\Crm\Rest\CCrmExternalChannelImportBank
  • Вызов: CCrmExternalChannelImportBank::import
public function import(&$requisite)
{
	$result = new Result();
	$import = new Result();
	$batch = array();

	$proccessList = array();

	if(is_array($requisite[CCrmExternalChannelImport::FIELDS_BANK]) && !empty($requisite[CCrmExternalChannelImport::FIELDS_BANK]))
	{
		foreach($requisite[CCrmExternalChannelImport::FIELDS_BANK] as $row=>&$bank)
		{
			$this->internalizeFields($bank, $this->getFieldsInfo());
			$this->fillFields($bank);

			$res = $this->innerList(array(
				'=ENTITY_ID' => $this->getOwnerEntityId(),
				'=XML_ID' => $bank['XML_ID'],
			));

			if($r = $res->fetch())
			{
				$id = $r['ID'];
				$errors = [];
				$r = $this->innerUpdate($id, $bank, $errors);
			}
			else
			{
				$errors = [];
				$r = $this->innerAdd($bank, $errors);
				$data = $r->getData();
				$id = $data['RESULT'];
			}

			if($r->getErrors())
			{
				$batch[$row]['errors'] = $r->getErrors();
			}
			elseif($this->isValidID((int)$id))
			{
				$proccessList[] = $id;
			}
		}

		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;
}