• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/automaticduplicatelist.php
  • Класс: Bitrix\Crm\Integrity\AutomaticDuplicateList
  • Вызов: AutomaticDuplicateList::getRootItemCount
public function getRootItemCount()
{
	$typeIDs = $this->getTypeIDs();
	if (empty($typeIDs))
	{
		throw new Main\NotSupportedException("Criterion types are required.");
	}

	$query = new Main\Entity\Query(Entity\AutomaticDuplicateIndexTable::getEntity());
	$query->registerRuntimeField('', new Main\Entity\ExpressionField('CNT', 'COUNT(*)'));
	$query->addSelect('CNT');

	$permissionSql = '';
	if ($this->enablePermissionCheck)
	{
		$permissions = \CCrmPerms::GetUserPermissions($this->userID);
		$permissionSql = \CCrmPerms::BuildSql(
			\CCrmOwnerType::ResolveName($this->entityTypeID),
			'',
			'READ',
			array('RAW_QUERY' => true, 'PERMS' => $permissions)
		);

		if ($permissionSql === false)
		{
			//Access denied;
			return null;
		}
	}

	$query->addFilter('=USER_ID', $this->userID);
	$query->addFilter('=ENTITY_TYPE_ID', $this->entityTypeID);
	$query->addFilter('@TYPE_ID', $typeIDs);
	if ($this->matchHash != '')
	{
		$query->addFilter('=MATCH_HASH', $this->matchHash);
	}

	$query->addFilter('=SCOPE', $this->scope);

	if (!empty($this->statusIDs))
	{
		$query->addFilter('@STATUS_ID', $this->statusIDs);
	}

	if ($this->enablePermissionCheck && $permissionSql !== '')
	{
		$query->addFilter('@ROOT_ENTITY_ID', new Main\DB\SqlExpression($permissionSql));
	}

	$dbResult = $query->exec();
	$fields = $dbResult->fetch();
	return is_array($fields) && isset($fields['CNT']) ? (int)$fields['CNT'] : 0;
}