• Модуль: crmmobile
  • Путь к файлу: ~/bitrix/modules/crmmobile/lib/Controller/MultiField.php
  • Класс: BitrixCrmMobileControllerMultiField
  • Вызов: MultiField::saveAction
public function saveAction(Item $entity, array $values): ?array
{
	$values = $this->prepareFmData($values);
	if (empty($values))
	{
		$errors = $this->markErrorsAsPublic([new Error(Loc::getMessage('MCRM_MULTIFIELD_EMPTY_VALUES'))]);
		$this->addErrors($errors);

		return null;
	}

	foreach ($values as $fmType => $fmData)
	{
		$value = $fmData['value'] ?? '';
		$type = $fmData['type'] ?? CCrmFieldMulti::GetDefaultValueType($fmType);
		$countryCode = null;

		if ($fmType === TypePhone::ID)
		{
			$countryCode = $value['countryCode'] ?? null;
			$value = $value['phoneNumber'] ?? '';
		}

		$fmValue = (new Value())
			->setTypeId($fmType)
			->setValueType($type)
			->setValue($value)
		;

		if ($countryCode !== null)
		{
			$fmValue->setValueExtra(
				(new ValueExtra())->setCountryCode($countryCode)
			);
		}

		$entity->setFm($entity->getFm()->add($fmValue));
	}

	$operation = Container::getInstance()
		->getFactory($entity->getEntityTypeId())
		->getUpdateOperation($entity)
		->launch()
	;

	if (!$operation->isSuccess())
	{
		$errors = $this->markErrorsAsPublic($operation->getErrors());
		$this->addErrors($errors);

		return null;
	}

	return $entity->getFm()->toArray();
}