• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/sign/form.php
  • Класс: Bitrix\Crm\Integration\Sign\Form
  • Вызов: Form::getFieldSetValues
static function getFieldSetValues(
	int $entityTypeId,
	int $entityId,
	array $options = [],
	?int $requisitePresetId = null
): array
{
	$result = [];

	$set = self::getFieldSet($entityTypeId, $requisitePresetId);
	if (!$set)
	{
		return $result;
	}

	$values = Crm\WebForm\Requisite::instance()
		->load($entityTypeId, $entityId, $requisitePresetId)
		->getData()
	;
	if (!$values)
	{
		return $result;
	}

	$entityTypeName = \CCrmOwnerType::resolveName($entityTypeId);
	foreach ($values as $key => $value)
	{
		unset($values[$key]);
		$values["{$entityTypeName}_{$key}"] = $value;
	}

	$entityKeys = [];
	$prefix = "{$entityTypeName}_";
	$prefixRq = "{$entityTypeName}_RQ_";

	foreach ($set->getFields() as $field)
	{
		$name = $field['name'];
		if (mb_strpos($name, $prefix) === 0 && mb_strpos($name, $prefixRq) !== 0)
		{
			$entityKeys[] = mb_substr($name, mb_strlen($prefix));
			continue;
		}

		$value = $values[$name] ?? '';
		if ($value === null || $value === false)
		{
			continue;
		}

		$result[$name] = $value;
	}
	
	foreach ($entityKeys as $key)
	{
		$name = "{$entityTypeName}_$key";
		$value = $values[$name] ?? '';
		if ($value === false || !empty($result[$name]))
		{
			continue;
		}
		
		$result[$name] = $value ?? '';
	}
	
	if (!empty($options['appendExtended']))
	{
		$title = '';
		if (!empty($values["{$prefix}RQ_NAME"]) || !empty($values["{$prefix}RQ_LAST_NAME"]))
		{
			$title = trim(str_replace(
				['#NAME#', '#LAST_NAME#'],
				[$values["{$prefix}RQ_NAME"], $values["{$prefix}RQ_LAST_NAME"]],
				Main\Context::getCurrent()->getCulture()->getFormatName()
			));
		}
		elseif (!empty($values["{$prefix}RQ_COMPANY_NAME"]))
		{
			$title = $values["{$prefix}RQ_COMPANY_NAME"];
		}
		$result['extended'] = [
			'presetId' => $values[$prefix . 'presetId'] ?? 0,
			'requisiteId' => $values[$prefix . 'requisiteId'] ?? 0,
			'title' => $title,
		];
	}

	if (!$entityKeys)
	{
		return $result;
	}

	$entityFactory = Crm\Service\Container::getInstance()->getFactory($entityTypeId);
	if (!$entityFactory)
	{
		return $result;
	}

	$item = $entityFactory->getItem($entityId);
	if (!$item)
	{
		return $result;
	}

	$values = $item->getData();
	foreach ($item->getFm()->getAll() as $fmItem)
	{
		$type = $fmItem->getTypeId();
		$value = $fmItem->getValue();
		if ($value && empty($values[$type]))
		{
			$values[$type] = $value;
		}
	}

	foreach ($entityKeys as $key)
	{
		$name = "{$entityTypeName}_$key";
		if (!empty($result[$name]))
		{
			continue;
		}
		
		$value = isset($values[$key]) && !empty($values[$key])
			? $entityFactory->getFieldValueCaption($key, $values[$key])
			: null;
		$value ??= '';
		$result[$name] = $value ?? '';
	}

	return $result;
}