Имитация sql выражения LIMIT в запросе 1С
Всем известно, что в SQL синтаксисе есть выражение LIMIT. Очень полезное выражение для постраничной навигации. Но его нет в запросах 1С. Кто-то может сказать, что есть ПЕРВЫЕ, но ПЕРВЫЕ не подходит для постраничной навигации. Рассмотрим в статье, как можно имитировать LIMIT в запросах 1С.
- Описание
- Подробнее
Описание
Не буду лить много воды. Приведу пример запроса и ниже разберу
ВЫБРАТЬ ПЕРВЫЕ 1000000
Товары.Ссылка
ПОМЕСТИТЬ ВсеТовары
ИЗ
Справочник.Номенклатура КАК Товары
УПОРЯДОЧИТЬ ПО
Товары.Код
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 10
ВсеТовары.Ссылка
ПОМЕСТИТЬ НачальнаяПозиция
ИЗ
ВсеТовары КАК ВсеТовары
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 20
ВсеТовары.Ссылка
ПОМЕСТИТЬ КонечнаяПозиция
ИЗ
ВсеТовары КАК ВсеТовары
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КонечнаяПозиция.Ссылка
ИЗ
КонечнаяПозиция КАК КонечнаяПозиция
ЛЕВОЕ СОЕДИНЕНИЕ НачальнаяПозиция КАК НачальнаяПозиция
ПО КонечнаяПозиция.Ссылка = НачальнаяПозиция.Ссылка
ГДЕ
НачальнаяПозиция.Ссылка ЕСТЬ NULL
ВЫБРАТЬ ПЕРВЫЕ 1000000 — Это максимальное количество записей, которое может содержать наш справочник. Лучше взять с большим запасом, т. к. на скорости запроса это не скажется. Выражение ПЕРВЫЕ мы тут используем для того, чтобы появилась возможность упорядочивания во временной таблице.
А без упорядочивания мы будем получать список с набором случайных данных
ВЫБРАТЬ ПЕРВЫЕ 10 — это начальный элемент, с которого мы хотим начать выборку
ВЫБРАТЬ ПЕРВЫЕ 20 — это конечный элемент, до которого мы хотим сделать выборку.
Таким образом мы получим с 11 по 20 записи из справочника «Номенклатура».