> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1unic.com/odatav4/llms.txt
> Use this file to discover all available pages before exploring further.

# Страницы и большие выгрузки

> @odata.nextLink, $skiptoken, размер страницы и выдача одним ответом

## Постраничная выдача

По умолчанию коллекция отдаётся страницами по 1000 строк. Если строк больше, в конце ответа есть ссылка на следующую страницу:

```json theme={null}
{
  "@odata.context": "https://server/base/hs/odata/v4/$metadata#Catalog_Номенклатура",
  "value": [ "… 1000 строк …" ],
  "@odata.nextLink": "https://server/base/hs/odata/v4/Catalog_Номенклатура?$skiptoken=…"
}
```

Клиент запрашивает `@odata.nextLink`, пока ссылка есть. Power BI, Excel и большинство OData-библиотек делают это сами.

* `$skiptoken` хранит значения порядка и ключ последней строки, поэтому продолжение идёт **по ключу**, а не через пропуск строк: страницы не теряют и не дублируют строки, даже если в наборе что-то изменилось.
* `@odata.nextLink` переносит остальные параметры запроса (`$filter`, `$select`, `$expand`, `$orderby`).
* Продолжение работает и у регистров, в том числе с составными, булевыми полями и перечислениями в ключе, и у результата `$apply`.

## Размер страницы

Клиент задаёт размер страницы заголовком:

```http theme={null}
Prefer: odata.maxpagesize=5000
```

Профиль доступа может ограничить размер страницы — тогда действует меньшее значение (см. [Профили](/odatav4/security/profiles)).

## Выдача одним ответом

Настройка «Выдача коллекций» (вкладка «Движки» формы [настроек](/odatav4/admin/settings)):

| Режим | Поведение |
| - | - |
| **Страницами** (по умолчанию) | по 1000 строк с `@odata.nextLink` |
| **Одним ответом** | весь результат одним ответом без `@odata.nextLink`, как у `standard.odata` |

В режиме «Одним ответом» сервер читает набор порциями («Размер порции выдачи одним ответом», по умолчанию 5000, для широких строк порция меньше) и пишет их в поток ответа. «Наибольшее число строк одним ответом» (0 — без предела) обрывает ответ ссылкой `@odata.nextLink`.

Страницами отвечают всегда, даже в режиме «Одним ответом»:

* если запрос несёт `Prefer: odata.maxpagesize`;
* при продолжении по `$skiptoken`;
* в операциях `$batch`;
* если профиль доступа задаёт лимит страницы.

## Что выбрать для больших выгрузок

Замеры: файловая база, около 100 тыс. документов и около 1 млн записей в каждом регистре, выдача JSON — Rust-компонентой.

| Набор | Страницами по 1000 | Страницами по 5000 | Одним ответом | standard.odata |
| - | -: | -: | -: | -: |
| Справочник, 100 тыс. | 12–20 с | 12 с | 11,2 с | 10,7 с |
| Записи регистра накопления, 1,09 млн | 493 с | 145 с | **134 с** | 147 с |
| Записи регистра бухгалтерии, 1,12 млн | 636 с | — | 199 с | 124 с |
| Документы с табличными частями, 100 тыс. | **161–199 с** | — | 229 с | 257–263 с |

<Tip>
  * Для полной выгрузки регистров включайте «Одним ответом» или передавайте `Prefer: odata.maxpagesize=5000`. При мелких страницах основное время уходит на запрос каждой страницы.
  * Ограничивайте `$select` нужными полями: объём и время падают в разы.
  * Для документов с табличными частями хорошо работают и обычные страницы.
  * Ответ OData4 компактнее: записи регистра накопления — 1,5 ГБ против 3,3 ГБ у `standard.odata`.
</Tip>

<Note>
  1С отдаёт тело ответа после окончания обработчика, поэтому при выдаче одним ответом первый байт приходит в конце. Тело не держится целиком в памяти процесса: пик памяти Apache в замерах — 1,4–1,7 ГБ при ответах 1,5–3,5 ГБ.
</Note>

## \$skip

`$skip` ограничен 10 000. Глубже листайте по `@odata.nextLink`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.