• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/item/fieldimplementation/file.php
  • Класс: Bitrix\Crm\Item\FieldImplementation\File
  • Вызов: File::extractFileIdsMarkedToBeDeleted
private function extractFileIdsMarkedToBeDeleted(Field $field, array $externalValues): array
{
	$fieldName = $this->fieldsMap[$field->getName()] ?? $field->getName();

	$toDelete = [];

	if (isset($externalValues[$fieldName]))
	{
		$value = $externalValues[$fieldName];
		if (!$field->isMultiple())
		{
			$value = [$value];
		}

		if (is_array($value))
		{
			foreach ($value as $singleValue)
			{
				if (
					isset($singleValue['del'])
					&& $singleValue['del'] === true
					&& isset($singleValue['old_id'])
					&& is_numeric($singleValue['old_id'])
					&& $this->isFileBoundToItem($field, (int)$singleValue['old_id'])
				)
				{
					$toDelete[] = (int)$singleValue['old_id'];
				}
			}
		}
	}

	$entityFieldName = $this->fieldsMap[$field->getName()] ?? $field->getName();
	$deleteKey = $entityFieldName . '_del';
	if (array_key_exists($deleteKey, $externalValues))
	{
		$deleteValue = $externalValues[$deleteKey];
		if (is_numeric($deleteValue))
		{
			// $toDelete is fileId
			$deleteValue = (int)$deleteValue;

			if ($this->isFileBoundToItem($field, $deleteValue))
			{
				$toDelete[] = $deleteValue;
			}
		}
		// delete current file
		elseif ($deleteValue === 'Y' && !$field->isMultiple())
		{
			$toDelete[] = (int)$this->get($field->getName());
		}
	}

	return $toDelete;
}