• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/entityproperty.php
  • Класс: BitrixSaleEntityProperty
  • Вызов: EntityProperty::getPreparedValueForSave
public function getPreparedValueForSave(EntityPropertyValue $propertyValue)
{
	$value = $propertyValue->getField('VALUE');

	if ($this->getType() == 'FILE')
	{
		$value = InputFile::asMultiple($value);

		foreach ($value as $i => $file)
		{
			if (InputFile::isDeletedSingle($file))
			{
				unset($value[$i]);
			}
			else
			{
				if (InputFile::isUploadedSingle($file))
				{
					$fileId = CFile::SaveFile(array('MODULE_ID' => 'sale') + $file, 'sale/order/properties');
					if (is_numeric($fileId))
					{
						$file = $fileId;
					}
				}

				$value[$i] = InputFile::loadInfoSingle($file);
			}
		}

		$property = $this->getFields();
		$propertyValue->setField('VALUE', $value);
		$value = InputFile::getValue($property, $value);

		$originalFields = $propertyValue->getFields()->getOriginalValues();
		foreach (
			array_diff(
				InputFile::asMultiple(InputFile::getValue($property, $originalFields['VALUE'])),
				InputFile::asMultiple($value),
				InputFile::asMultiple(InputFile::getValue($property, $property['DEFAULT_VALUE']))
			)
			as $fileId
		)
		{
			CFile::Delete($fileId);
		}
	}
	elseif ($this->getType() === 'ADDRESS'  && MainLoader::includeModule('location'))
	{
		if (!is_array($value))
		{
			return null;
		}

		$address = Address::fromArray($value);
		$result = $address->save();
		if (!$result->isSuccess())
		{
			return null;
		}

		return (int)$result->getId();
	}

	return $value;
}