• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/querycount.php
  • Класс: Bitrix\Sender\Integration\Crm\Connectors\QueryCount
  • Вызов: QueryCount::exec
static function exec(Entity\Query $query, $dataTypeId = null, $entityDbName = null, $entityName = null)
{
	$result = array();
	$resultDb = Helper::prepareQuery($query, $dataTypeId, $entityDbName, $entityName)->exec();
	while ($row = $resultDb->fetch())
	{
		$ignoredTypes = [];
		foreach (self::getTypes() as $typeId => $field)
		{
			$fieldName = $field['COLUMN_ALIAS'] ?? 'COUNT_' . $field['DATA_COLUMN'];
			if (!isset($row[$fieldName]))
			{
				continue;
			}

			$type = Recipient\Type::getCode($typeId);
			if (!isset($result[$type]))
			{
				$result[$type] = 0;
			}
			$result[$type] += (int) $row[$fieldName];

			if (isset($field['IGNORE_TYPES']) && $row[$fieldName] > 0)
			{
				$ignoredTypes = array_merge($ignoredTypes, $field['IGNORE_TYPES']);
			}
		}
		foreach(array_unique($ignoredTypes) as $ignoreTypeId)
		{
			$ignoreType = Recipient\Type::getCode($ignoreTypeId);
			unset($result[$ignoreType]);
		}
	}

	return $result;
}