• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/controller/item.php
  • Класс: BitrixRpaControllerItem
  • Вызов: Item::processFileField
protected function processFileField(UserField $userField, BitrixRpaModelItem $item, array $fields): void
{
	$userFieldName = $userField->getName();
	if($userField->isMultiple())
	{
		$fileData = $fields[$userFieldName];
		if(!is_array($fileData))
		{
			return;
		}

		$result = [];
		$currentFiles = array_flip($item->get($userFieldName) ?? []);
		foreach($fileData as $file)
		{
			$fileId = (int) $file['id'];
			if($fileId > 0)
			{
				if(isset($currentFiles[$fileId]))
				{
					$result[] = $fileId;
					$this->registerFile($userField, $fileId);
				}

				continue;
			}

			$fileId = $this->uploadFile($file);
			if($fileId > 0)
			{
				$result[] = $fileId;
				$this->uploadedFiles[] = $fileId;
				$this->registerFile($userField, $fileId);
			}
		}

		$item->set($userFieldName, $result);
	}
	else
	{
		$fileData = $fields[$userFieldName];
		$currentFile = $item->get($userFieldName);
		if(isset($fileData['id']))
		{
			if((int) $fileData['id'] === $currentFile)
			{
				return;
			}
		}
		$fileId = $this->uploadFile($fileData);
		if($fileId > 0)
		{
			$this->uploadedFiles[] = $fileId;
			$this->registerFile($userField, $fileId);
		}
		$item->set($userFieldName, $fileId);
	}
}