- Модуль: 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;
}