• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/dataprovidermanager.php
  • Класс: BitrixDocumentGeneratorDataProviderManager
  • Вызов: DataProviderManager::prepareValue
public function prepareValue($value, $fieldDescription = [])
{
	if($value instanceof Value)
	{
		return $value;
	}

	if(isset($fieldDescription['PROVIDER']) && !empty($fieldDescription['PROVIDER']))
	{
		return $value;
	}

	$type = null;
	$format = [];
	if(is_array($fieldDescription) && array_key_exists('TYPE', $fieldDescription) && !empty($fieldDescription['TYPE']))
	{
		$type = $fieldDescription['TYPE'];
	}
	if(isset($fieldDescription['FORMAT']))
	{
		$format = $fieldDescription['FORMAT'];
	}

	if($type !== DataProvider::FIELD_TYPE_NAME && $this->isMultiple($value))
	{
		$result = [];
		foreach($value as $singleValue)
		{
			if(!empty($singleValue))
			{
				$result[] = $this->getValueByType($singleValue, $type, $format);
			}
		}
		if(!empty($result))
		{
			// no need for Multiple if there is only one item.
			if(!($result[0] instanceof DateTime) && count($result) === 1)
			{
				return reset($result);
			}
			return new Multiple($result, $format);
		}

		return null;
	}

	return $this->getValueByType($value, $type, $format);
}