• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/documentgenerator/dataprovider/crmentitydataprovider.php
  • Класс: Bitrix\Crm\Integration\DocumentGenerator\DataProvider\CrmEntityDataProvider
  • Вызов: CrmEntityDataProvider::getUserFieldValue
public function getUserFieldValue($placeholder = null)
{
	$value = null;
	if(!$placeholder || !isset($this->fields[$placeholder]))
	{
		return $value;
	}
	$field = $this->userFieldDescriptions[$placeholder];

	$value = $field['VALUE'];
	if(!$value && $field['USER_TYPE_ID'] != 'boolean')
	{
		return $value;
	}
	if($field['USER_TYPE_ID'] == 'file')
	{
		if(is_array($value))
		{
			$value = \CFile::GetPath(reset($value));
		}
		else
		{
			$value = \CFile::GetPath($value);
		}
	}
	elseif($field['USER_TYPE_ID'] == 'enumeration')
	{
		if(!isset($field['DATA']))
		{
			$value = null;
		}
		elseif(is_array($value))
		{
			$result = [];
			foreach($value as $item)
			{
				$result[] = $field['DATA'][$item];
			}
			$value = $result;
		}
		else
		{
			$value = $field['DATA'][$value];
		}
	}
	elseif($field['USER_TYPE_ID'] == 'money')
	{
		$result = null;
		if(!is_array($value))
		{
			$parts = explode('|', $value);
			$result = new Money($parts[0], ['CURRENCY_ID' => $parts[1]]);
		}
		else
		{
			$result = [];
			foreach($value as $val)
			{
				$parts = explode('|', $val);
				$result[] = new Money($parts[0], ['CURRENCY_ID' => $parts[1]]);
			}
		}
		$value = $result;
	}
	elseif($field['USER_TYPE_ID'] == 'boolean')
	{
		if($value)
		{
			$value = DataProviderManager::getInstance()->getLangPhraseValue($this, 'UF_TYPE_BOOLEAN_YES');
		}
		else
		{
			$value = DataProviderManager::getInstance()->getLangPhraseValue($this, 'UF_TYPE_BOOLEAN_NO');
		}
	}
	elseif($field['USER_TYPE_ID'] == 'address')
	{
		$result = [];
		if(is_array($value))
		{
			foreach($value as $val)
			{
				if(mb_strpos($val, '|') !== false)
				{
					$array = explode('|', $val);
					$val = $array[0];
				}
				$result[] = $val;
			}
		}
		else
		{
			if(mb_strpos($value, '|') !== false)
			{
				$array = explode('|', $value);
				$value = $array[0];
			}
			$result = $value;
		}
		$value = $result;
	}
	elseif($field['USER_TYPE_ID'] == 'iblock_element')
	{
		$value = null;
		if(Loader::includeModule('iblock') && !empty($field['VALUE']))
		{
			$value = [];
			$elements = ElementTable::getList([
				'select' => ['NAME'],
				'filter' => ['ID' => $field['VALUE']]
			]);
			while($element = $elements->fetch())
			{
				$value[] = $element['NAME'];
			}
		}
	}
	elseif($field['USER_TYPE_ID'] == 'crm' && is_array($value))
	{
		if($field['MULTIPLE'] === 'Y' && $this->fields[$placeholder]['PROVIDER'] && $this->fields[$placeholder]['PROVIDER'] === DataProvider\ArrayDataProvider::class)
		{
			$result = [];
			foreach($value as $val)
			{
				if(!is_numeric($val))
				{
					[, $val] = explode('_', $val);
				}
				$val = intval($val);
				if($val > 0)
				{
					$provider = DataProviderManager::getInstance()->getDataProvider(
						$this->fields[$placeholder]['OPTIONS']['ITEM_PROVIDER'],
						$val,
						$this->fields[$placeholder]['OPTIONS']['ITEM_OPTIONS'],
						$this);
					if($provider)
					{
						$result[] = $provider;
					}
				}
			}
			$value = $result;
		}
		else
		{
			$value = reset($value);
		}
	}
	elseif($field['USER_TYPE_ID'] === 'employee' && is_array($value))
	{
		if($field['MULTIPLE'] === 'Y' && $this->fields[$placeholder]['PROVIDER'] && $this->fields[$placeholder]['PROVIDER'] === DataProvider\ArrayDataProvider::class)
		{
			$result = [];
			foreach($value as $val)
			{
				$val = intval($val);
				if($val > 0)
				{
					$provider = DataProviderManager::getInstance()->getDataProvider(
						$this->fields[$placeholder]['OPTIONS']['ITEM_PROVIDER'],
						$val,
						$this->fields[$placeholder]['OPTIONS']['ITEM_OPTIONS'],
						$this);
					if($provider)
					{
						$result[] = $provider;
					}
				}
			}
			$value = $result;
		}
		else
		{
			$value = reset($value);
		}
	}

	return $value;
}