• Модуль: crmmobile
  • Путь к файлу: ~/bitrix/modules/crmmobile/lib/Command/SaveEntityCommand.php
  • Класс: BitrixCrmMobileCommandSaveEntityCommand
  • Вызов: SaveEntityCommand::prepareCrmEntityField
private function prepareCrmEntityField(Field $field, &$data): void
{
	if (!empty($data) && is_numeric($data))
	{
		$fieldType = $field->getType();
		$entityTypeName = null;

		if ($fieldType === 'crm_lead')
		{
			$entityTypeName = CCrmOwnerType::LeadName;
		}
		elseif ($fieldType === 'crm_deal')
		{
			$entityTypeName = CCrmOwnerType::DealName;
		}
		elseif ($fieldType === 'crm_quote')
		{
			$entityTypeName = CCrmOwnerType::QuoteName;
		}
		elseif ($fieldType === 'crm_invoice')
		{
			$entityTypeName = CCrmOwnerType::InvoiceName;
		}

		if ($entityTypeName !== null)
		{
			$data = [[$entityTypeName, (int)$data]];
		}
	}

	if (!empty($data) && is_array($data))
	{
		foreach ($data as $key => $value)
		{
			if (!empty($value) && is_array($value))
			{
				[$entityTypeName, $entityId] = $value;

				if ($entityTypeName === DynamicMultipleProvider::DYNAMIC_MULTIPLE_ID)
				{
					[, $entityId] = DynamicMultipleProvider::parseId($entityId);
				}

				$data[$key] = $entityId;
			}
			else
			{
				unset($data[$key]);
			}
		}

		if (!$field->isMultiple())
		{
			$data = $data[0] ?? null;
		}
	}
	else
	{
		$data = $field->isMultiple() ? [] : null;
	}
}