$apply считает итоги на сервере: клиент получает готовые группы, а не миллион строк. Это расширение относительно standard.odata, который $apply не поддерживает.
Шаги
Шаги соединяются через
/, в цепочке — до 10 шагов.
Что работает поверх результата
- К результату применяются
$filter,$orderby,$select,$top,$skipи$count. - Цепочки, которые сохраняют ключ сущности (
filter,compute,topcount,bottomcount,identity), остаются сущностями набора. Для них доступны$expandи$select, в том числе табличных частей иRecordSet. $applyприменяется и к результату виртуальной таблицы регистра (см. Регистры).
Как выполняется
Вся цепочка выполняется одним пакетом запросов 1С. Каждый шаг, который меняет состав колонок, ложится во временную таблицу.Постраничное чтение
Результат продолжается по$skiptoken. У groupby метка хранит значения полей группировки (они уникальны), поэтому даже десятки тысяч групп проходятся по @odata.nextLink до конца.
Если полей группировки так много или они такие длинные, что условие продолжения не помещается в пределы выражения или ссылка стала бы длиннее 8000 символов, результат продолжается по $skip, без предела 10 000. $skiptoken к такому результату — 400 с причиной.
Не поддерживается
- Шаги
concat,expand,search,nest,join,rollup,$all,toppercent,topsum,bottompercent,bottomsum— ответ501. $expandповерхgroupbyиaggregate—501.anyиallпо табличной части после шагов —501.$applyвнутри$expand—501.$computeвне$apply—501.
$apply может ограничить профиль доступа — см. Профили.