• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/model/prototypeitem.php
  • Класс: BitrixRpaModelPrototypeItem
  • Вызов: PrototypeItem::modifyValuesBeforeSave
static function modifyValuesBeforeSave($id, array $data, array $options = []): ORMEventResult
{
	$userFieldManager = UserFieldHelper::getInstance()->getManager();
	$isUpdate = (isset($options['isUpdate']) && $options['isUpdate'] === true);

	$result = new MainORMEventResult();
	if (!$userFieldManager)
	{
		static::$isCheckUserFields = true;
		return $result;
	}

	if($isUpdate)
	{
		$oldData = static::getByPrimary($id)->fetch();
		static::getTemporaryStorage()->saveData($id, $oldData);
		if (
			static::$isCheckUserFields
			&& !$userFieldManager->checkFieldsWithOldData(
				static::getItemUserFieldEntityId(),
				$oldData,
				$data
			)
		)
		{
			$result->addError(static::getErrorFromException());
		}

		$fields = $userFieldManager->getUserFieldsWithReadyData(
			static::getItemUserFieldEntityId(),
			$oldData,
			LANGUAGE_ID,
			false,
			'ID'
		);
	}
	else
	{
		$fields = $userFieldManager->getUserFields(static::getItemUserFieldEntityId());

		if(
			static::$isCheckUserFields
			&& !$userFieldManager->checkFields(
				static::getItemUserFieldEntityId(),
				null,
				$data,
				false,
				true
			)
		)
		{
			$result->addError(static::getErrorFromException());
		}
	}

	if(!$result->getErrors())
	{
		$data = static::convertValuesBeforeSave($data, $fields);
		$result->modifyFields($data);
	}

	static::$isCheckUserFields = true;

	return $result;
}