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