• Модуль: documentgenerator
  • Путь к файлу: ~/bitrix/modules/documentgenerator/lib/dataprovidermanager.php
  • Класс: BitrixDocumentGeneratorDataProviderManager
  • Вызов: DataProviderManager::createDataProvider
public function createDataProvider(
	array $fieldDescription,
	$value = null,
	DataProvider $parentDataProvider = null,
	$placeholder = null
): ?DataProvider
{
	if(!$value && isset($fieldDescription['VALUE']))
	{
		$value = $this->getValue($fieldDescription['VALUE'], $parentDataProvider, $placeholder);
	}

	if(!$value)
	{
		return null;
	}

	if($value instanceof Value)
	{
		$value = $value->getValue();
	}

	if(isset($fieldDescription['PROVIDER']))
	{
		$options = $fieldDescription['OPTIONS'] ?? [];
		if(!isset($options['VALUES']))
		{
			$options['VALUES'] = [];
		}
		// rewrite values of inner provider from parent options
		if($parentDataProvider)
		{
			$parentProviderOptions = $parentDataProvider->getOptions();
			if(isset($parentProviderOptions['VALUES']) && is_array($parentProviderOptions['VALUES']) && $placeholder !== null)
			{
				$options['VALUES'] = array_merge($options['VALUES'], $this->reformOptionValues($parentProviderOptions['VALUES'], $placeholder));
			}
		}

		return $this->getDataProvider($fieldDescription['PROVIDER'], $value, $options, $parentDataProvider);
	}

	return null;
}