- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/personalize/factorybased.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Personalize\FactoryBased
- Вызов: FactoryBased::getData
static function getData(
string $entityType,
array $entityIds,
array $usedFields = ['*'],
string $sortBy = 'id',
string $sortOrder = 'asc'
): array
{
$hasIncorrectFields = false;
if (empty($usedFields))
{
return [];
}
$factory = static::getFactory($entityType);
if (!$factory)
{
return [];
}
$fields = array_values($usedFields);
$oldIncorrectFields = [
'ASSIGNED_BY_EMAIL' => 'ASSIGNED_BY.EMAIL',
'ASSIGNED_BY_WORK_PHONE' => 'ASSIGNED_BY.WORK_PHONE',
'ASSIGNED_BY_PERSONAL_MOBILE' => 'ASSIGNED_BY.PERSONAL_MOBILE',
];
foreach ($fields as &$field)
{
if (array_key_exists($field, $oldIncorrectFields))
{
$field = $oldIncorrectFields[$field];
if (!$hasIncorrectFields)
{
$hasIncorrectFields = true;
}
}
}
$result = [];
$items = $factory->getItems([
'select' => array_merge(
$fields,
['UF_*', 'ASSIGNED_BY_ID']
),
'filter' => [
'@ID' => $entityIds,
],
]);
foreach ($items as $item)
{
$data = $item->getCompatibleData();
if ($item->getAssignedById() > 0)
{
self::addAssignedByFieldsValue($item->getAssignedById(), $data);
}
static::processUserFieldValues($factory->getUserFields(), $data);
$result[$data['ID']] = $data + static::getCommunicationFieldsValues($factory->getEntityTypeId(), $data['ID']);
if ($hasIncorrectFields)
{
foreach ($oldIncorrectFields as $incorrectField => $correctField)
{
if (isset($data[$correctField]) && !empty($data[$correctField]))
{
$result[$data['ID']] += [
$incorrectField => $data[$correctField]
];
}
}
}
}
return $result; }