- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatecommunicationcriterion.php
- Класс: Bitrix\Crm\Integrity\DuplicateCommunicationCriterion
- Вызов: DuplicateCommunicationCriterion::prepareSortParams
static function prepareSortParams($entityTypeID, array $entityIDs, $type = '')
{
if(empty($entityIDs))
{
return array();
}
if(!is_string($type))
{
$type = '';
}
$query = new Main\Entity\Query(DuplicateCommunicationMatchCodeTable::getEntity());
$query->addSelect('ENTITY_ID');
$query->addSelect('TYPE');
$query->addSelect('VALUE');
$subQuery = new Main\Entity\Query(DuplicateCommunicationMatchCodeTable::getEntity());
$subQuery->registerRuntimeField('', new Main\Entity\ExpressionField('MIN_ID', 'MIN(ID)'));
$subQuery->addSelect('MIN_ID');
$subQuery->addFilter('=ENTITY_TYPE_ID', $entityTypeID);
$subQuery->addFilter('@ENTITY_ID', $entityIDs);
if($type !== '')
{
$subQuery->addFilter('=TYPE', $type);
}
$subQuery->addGroup('ENTITY_ID');
$subQuery->addGroup('TYPE');
$query->registerRuntimeField('',
new Main\Entity\ReferenceField('M',
Main\Entity\Base::getInstanceByQuery($subQuery),
array('=this.ID' => 'ref.MIN_ID'),
array('join_type' => 'INNER')
)
);
$result = array();
$dbResult = $query->exec();
while($fields = $dbResult->fetch())
{
$entityID = intval($fields['ENTITY_ID']);
if(!isset($result[$entityID]))
{
$result[$entityID] = array();
}
$type = isset($fields['TYPE']) ? $fields['TYPE'] : '';
$value = isset($fields['VALUE']) ? $fields['VALUE'] : '';
$result[$entityID][$type] = $value;
}
return $result;
}