Заметки
Как вывести SQL запроса ORM для отладки
В D7 можно собрать ORM-запрос и посмотреть SQL до его выполнения. Это удобно, когда фильтр по связи неожиданно меняет число строк.
$query = \Bitrix\Crm\DealTable::query()
->setSelect(['ID', 'TITLE'])
->setFilter(['>ID' => 100])
->setLimit(10);
echo $query->getQuery(); Пример выполняется в административном контексте коробки с подключённым модулем crm. getQuery() возвращает SQL, а не результат выборки; выполнение начинается отдельным вызовом, например exec().
Смотрите JOIN, скобки в условиях и поля сортировки. Если строки дублируются, проверьте связь «один ко многим» до добавления случайного DISTINCT.
SQL может содержать значения фильтра. Не выводите его посетителям страницы и не сохраняйте в доступную из интернета папку логов.