- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicaterequisitecriterion.php
- Класс: Bitrix\Crm\Integrity\DuplicateRequisiteCriterion
- Вызов: DuplicateRequisiteCriterion::prepareSortParams
static function prepareSortParams($entityTypeID, array $entityIDs, $countryId = 0, $fieldName = '')
{
if(empty($entityIDs))
{
return array();
}
if(!is_int($countryId))
{
$countryId = 0;
}
if(!is_string($fieldName))
{
$fieldName = '';
}
$query = new Main\Entity\Query(DuplicateRequisiteMatchCodeTable::getEntity());
$query->addSelect('ENTITY_ID');
$query->addSelect('RQ_COUNTRY_ID');
$query->addSelect('RQ_FIELD_NAME');
$query->addSelect('VALUE');
$subQuery = new Main\Entity\Query(DuplicateRequisiteMatchCodeTable::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($countryId > 0)
{
$subQuery->addFilter('=RQ_COUNTRY_ID', $countryId);
}
if($fieldName !== '')
{
$subQuery->addFilter('=RQ_FIELD_NAME', $fieldName);
}
$subQuery->addGroup('ENTITY_ID');
$subQuery->addGroup('RQ_COUNTRY_ID');
$subQuery->addGroup('RQ_FIELD_NAME');
$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();
}
$rqCountryId = isset($fields['RQ_COUNTRY_ID']) ? (int)$fields['RQ_COUNTRY_ID'] : 0;
$rqFieldName = isset($fields['RQ_FIELD_NAME']) ? $fields['RQ_FIELD_NAME'] : '';
$value = isset($fields['VALUE']) ? $fields['VALUE'] : '';
$scope = EntityRequisite::formatDuplicateCriterionScope($rqCountryId);
$result[$entityID][$rqFieldName][$scope] = $value;
}
return $result;
}