Всем известно, что в SQL синтаксисе есть выражение LIMIT. Очень полезное выражение для постраничной навигации. Но его нет в запросах 1С. Кто-то может сказать, что есть ПЕРВЫЕ, но ПЕРВЫЕ не подходит для постраничной навигации. Рассмотрим в статье как можно имитировать LIMIT в запросах 1С
Не буду лить много воды. Приведу пример запроса и ниже разберу
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
ВЫБРАТЬ ПЕРВЫЕ 1000000 Товары.Ссылка ПОМЕСТИТЬ ВсеТовары ИЗ Справочник.Номенклатура КАК Товары УПОРЯДОЧИТЬ ПО Товары.Код ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 10 ВсеТовары.Ссылка ПОМЕСТИТЬ НачальнаяПозиция ИЗ ВсеТовары КАК ВсеТовары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 20 ВсеТовары.Ссылка ПОМЕСТИТЬ КонечнаяПозиция ИЗ ВсеТовары КАК ВсеТовары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КонечнаяПозиция.Ссылка ИЗ КонечнаяПозиция КАК КонечнаяПозиция ЛЕВОЕ СОЕДИНЕНИЕ НачальнаяПозиция КАК НачальнаяПозиция ПО КонечнаяПозиция.Ссылка = НачальнаяПозиция.Ссылка ГДЕ НачальнаяПозиция.Ссылка ЕСТЬ NULL |
ВЫБРАТЬ ПЕРВЫЕ 1000000 — Это максимальное количество записей, которое может содержать наш справочник. Лучше взять с большим запасом, т. к. на скорости запроса это не скажется. Выражение ПЕРВЫЕ мы тут используем для того, чтобы появилась возможность упорядочивания во временной таблице.
А без упорядычивания мы будем получать список с набором случайных данных
ВЫБРАТЬ ПЕРВЫЕ 10 — это начальный элемент, с которого мы хотим начать выборку
ВЫБРАТЬ ПЕРВЫЕ 20 — это конечный элемент, до которого мы хотим сделать выборку.
Таким образом мы получим с 11 по 20 записи из справочника «Номенклатура»