• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/components/itemdetail.php
  • Класс: BitrixRpaComponentsItemDetail
  • Вызов: ItemDetail::prepareDataToSet
protected function prepareDataToSet(array $data): array
{
	$setData = [];
	$userFields = $this->type->getUserFieldCollection();
	global $USER_FIELD_MANAGER;
	$USER_FIELD_MANAGER->EditFormAddFields(
		$this->type->getItemUserFieldsEntityId(),
		$data,
		['FORM' => $data]
	);
	foreach($data as $name => $value)
	{
		$userField = $userFields->getByName($name);
		if($userField)
		{
			$currentValue = $this->item->get($userField->getName());
			$isValueEmpty = $userField->isValueEmpty($value);
			if ($userField->isValueEmpty($currentValue) && $isValueEmpty)
			{
				continue;
			}
			if ($isValueEmpty)
			{
				$value = $userField->prepareNullValue($value);
			}
			$deletedFieldName = $name . '_del';
			if(isset($data[$deletedFieldName]) && $userField->isBaseTypeFile())
			{
				if(is_array($data[$name]) && is_array($data[$deletedFieldName]))
				{
					$value = array_diff($data[$name], $data[$deletedFieldName]);
				}
				elseif(is_numeric($data[$name]) && (int) $data[$name] === (int) $data[$deletedFieldName])
				{
					$value = null;
				}
			}
			if(is_string($value) && $userField->getUserTypeId() === DoubleType::USER_TYPE_ID)
			{
				$value = str_replace(',', '.', $value);
			}
			$setData[$name] = $value;
		}
	}

	return $setData;
}