• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/component/entitylist/clientdataprovider.php
  • Класс: Bitrix\Crm\Component\EntityList\ClientDataProvider
  • Вызов: ClientDataProvider::getPreparedMultifieldInfoValues
protected function getPreparedMultifieldInfoValues(\Bitrix\Main\ORM\Query\Result $items, string $entityName): array
{
	$result = [];

	$values = [];
	$rawValues = [];

	while ($multifield = $items->fetch())
	{
		$value = $multifield['VALUE'];
		$fieldId = $multifield['COMPLEX_ID'];
		$clientId = $multifield['ELEMENT_ID'];

		$values[$clientId][$fieldId][] =
			$this->isExportMode
				? $value
				: \CCrmFieldMulti::GetTemplateByComplex($fieldId, $value);
		$rawValues[$clientId]['~' . $fieldId][] = $value;
		$result[$clientId]['~' . $this->fieldHelper->addPrefixToFieldId($fieldId)][] = $value;
	}

	foreach ($values as $clientId => $clientValues)
	{
		$preparedValues = [];
		foreach ($clientValues as $fieldId => $valuesByComplexId)
		{
			$preparedValues[$fieldId] = implode(', ', $valuesByComplexId);
		}

		if ($this->isExportMode)
		{
			$renderedValues = $preparedValues;
		}
		else
		{
			$allValues = array_merge(
				$rawValues[$clientId],
				$preparedValues
			);
			$renderedValues = \CCrmViewHelper::RenderListMultiFields(
				$allValues,
				$entityName . $clientId . '_',
				[
					'ENABLE_SIP' => true,
					'SIP_PARAMS' => [
						'ENTITY_TYPE' => 'CRM_' . $entityName,
						'ENTITY_ID' => $clientId,
					],
				]
			);
		}

		foreach ($renderedValues as $fieldId => $fieldValue)
		{
			$fieldId = $this->fieldHelper->addPrefixToFieldId($fieldId);
			$result[$clientId][$fieldId] = $fieldValue;
		}
	}

	return $result;
}