• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Model/FieldRepository.php
  • Класс: Bitrix\Crm\Model\FieldRepository
  • Вызов: FieldRepository::getMultifieldValueExpression
private function getMultifieldValueExpression(
	string $fieldName,
	int $entityTypeId,
	string $typeId,
	?string $valueType = null,
	?string $valueLike = null
): ExpressionField
{
	$fmTableName = $this->sqlHelper->quote(FieldMultiTable::getTableName());
	$entityId = $this->sqlHelper->convertToDbString(\CCrmOwnerType::ResolveName($entityTypeId));
	$typeId = $this->sqlHelper->convertToDbString($typeId);

	$sql = "SELECT FM.VALUE FROM {$fmTableName} FM WHERE FM.ENTITY_ID = {$entityId}"
		. " AND FM.ELEMENT_ID = %s AND FM.TYPE_ID = {$typeId}"
	;

	if (!empty($valueType))
	{
		$sql .= ' AND FM.VALUE_TYPE = ' . $this->sqlHelper->convertToDbString($valueType);
	}

	if (!empty($valueLike))
	{
		$sql .= ' AND FM.VALUE LIKE ' . $this->sqlHelper->convertToDbString($valueLike);
	}

	$sql .= ' ORDER BY FM.ID';

	return
		(new ExpressionField(
			$fieldName,
			'(' . $this->sqlHelper->getTopSql($sql, 1) . ')',
			['ID'],
		))
			->configureValueType(StringField::class)
	;
}