Имя: Пароль:
1C
1С v8
Отбор запросом позиций из середины выборки (например с 31 по 40)
0 maxab72
 
11.10.23
12:12
Понадобилось выбирать запросом не первые n позиций, а из середины списка, например с 31-ой по 40-ую. Можно, конечно, выбрать сперва 40 верхних, потом из этой выборки выбрать 30 верхних и третьим запросом вычесть вторую выборку из первой. А есть более красивое/эффективное решение?
1 Волшебник
 
11.10.23
12:14
Можно выбрать N строк на клиента, а постраничную навигацию реализовать на клиенте без дополнительного запроса.
2 Смотрящий
 
11.10.23
12:44
ВЫБРАТЬ
    ТаблицаНоменклатура.Номенклатура,
    АВТОНОМЕРЗАПИСИ() КАК НоменклатураИндекс
ПОМЕСТИТЬ втНоменклатура
ИЗ
    &ТаблицаНоменклатура КАК ТаблицаНоменклатура
;

ВЫБРАТЬ
    втНоменклатура.Номенклатура,
    втНоменклатура.НоменклатураИндекс - НоменклатураИндексМинимум.НоменклатураИндекс КАК НоменклатураИндекс
ПОМЕСТИТЬ втНоменклатураИндекс
ИЗ
    втНоменклатура КАК втНоменклатура,
    (
        ВЫБРАТЬ ПЕРВЫЕ 1
            МИНИМУМ(втНоменклатура.НоменклатураИндекс) КАК НоменклатураИндекс
        ИЗ
            втНоменклатура КАК втНоменклатура
    ) КАК НоменклатураИндексМинимум
;

ВЫБРАТЬ
    втНоменклатураИндекс.Номенклатура,
    втНоменклатураИндекс.НоменклатураИндекс
ИЗ
    втНоменклатураИндекс КАК втНоменклатураИндекс
ГДЕ
    втНоменклатураИндекс.НоменклатураИндекс МЕЖДУ 31 И 40
3 maxab72
 
11.10.23
13:56
АВТОНОМЕРЗАПИСИ() пишут в ИТС, что не обязательно будет с 1 начинаться, а зависит от СУБД. думал про него, но сомнения одолевают.
4 Смотрящий
 
11.10.23
14:04
(3) На второй запрос пакета посмотри
5 Valdis2007
 
11.10.23
14:04
(0) есть хардокрный, но рабочий способ...добавь к элементу реквизит с номером...
6 maxab72
 
11.10.23
14:10
(4) Слишком монструозно, куча вложенных подзапросов будет. Не красиво, и сомнительно, что эффективно.
7 Смотрящий
 
11.10.23
14:15
(6) Ну как хочешь
8 Смотрящий
 
11.10.23
14:16
(5) А потом сидишь и охуеваешь, при обновлении, костеря упырей, который копошились в базе
9 Valdis2007
 
11.10.23
14:25
(8) не...ну в комменте к реквизиту , надо же  описание оставить зачем он был добавлен))
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой