• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/item.php
  • Класс: Bitrix\Crm\Controller\Item
  • Вызов: Item::processFileField
public function processFileField(Field $field, \Bitrix\Crm\Item $item, $fileData): void
{
	$fieldName = $field->getName();
	if ($field->isMultiple())
	{
		$fileData = (array)$fileData;

		$result = [];
		$currentFiles = array_flip($item->get($fieldName) ?? []);
		foreach ($fileData as $file)
		{
			if (isset($file['ID']))
			{
				$fileId = (int)$file['ID'];
				if ($fileId > 0)
				{
					if (isset($currentFiles[$fileId]))
					{
						Container::getInstance()->getFileUploader()->registerFileId($field, $fileId);
						$result[] = $fileId;
					}

					continue;
				}
			}

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

		$item->set($fieldName, $result);
	}
	else
	{
		if (isset($fileData['ID']))
		{
			if ((int)$fileData['ID'] === $item->get($fieldName))
			{
				Container::getInstance()->getFileUploader()->registerFileId($field, $fileData['ID']);
				return;
			}

			$fileId = 0;
		}
		else
		{
			$fileId = $this->uploadFile($field, $fileData);
		}
		$item->set($fieldName, $fileId);
	}
}