ORM D7 в 1С-Битрикс: getList, filter, select и limit
Практический запрос через DataManager::getList: подключение модуля, select, filter, order, limit, постраничная выборка и обработка исключений.
Системные требования
Нужны тестовая копия проекта, доступ разработчика или администратора и резервная копия перед изменением рабочего кода.
Смотреть системные требования1. Подключите модуль
Перед обращением к API подключите модуль через Loader:
use Bitrix\Main\Loader;
if (!Loader::includeModule("iblock")) {
throw new RuntimeException("Модуль iblock не установлен");
}Не подключайте файлы класса вручную из каталога ядра.
DataManager::getList
Официальные параметры select, filter, group, order, limit, offset и runtime.
2. Соберите getList запрос
Метод getList() принимает параметры запроса:
$result = IblockTable::getList([
"select" => ["ID", "NAME", "CODE"],
"filter" => ["=ACTIVE" => "Y"],
"order" => ["SORT" => "ASC", "ID" => "ASC"],
"limit" => 20,
]);Для постраничной выборки добавьте offset и стабильную сортировку.
Совет
Всегда задавайте select и limit для списков. Выбор всех полей и неограниченная выборка удобны в отладке, но опасны на рабочей базе.
3. Используйте операторы фильтра
Префикс = означает точное равенство, != — не равно, >= и <= — сравнение, @ — вхождение в массив, % — поиск подстроки.
Тип значения должен соответствовать карте ORM. Не собирайте имя поля или оператор напрямую из пользовательского запроса.
4. Обработайте результат и ошибки
Метод возвращает объект результата. Читайте строки через fetch() или fetchAll():
while ($row = $result->fetch()) {
// используем $row["ID"], $row["NAME"]
}Обрабатывайте ArgumentException, ObjectPropertyException и SystemException на границе приложения.
5. Контролируйте производительность
Не добавляйте связи и runtime-поля без необходимости: JOIN может размножать строки и усложнять план запроса. Для часто повторяемой безопасной выборки используйте параметр кеша ORM с подходящим TTL.
Медленные запросы анализируйте в Мониторе производительности, а не заменяйте сразу прямым SQL.
Была ли эта статья полезной?
Спасибо за ваш отзыв!