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