Имя: Пароль:
1C
1С v8
Последняя ли запись в выборке запроса?
0 korchak
 
13.06.13
13:52
Добрый день коллеги!

Подскажите, как узнать при выборке из результатов запроса, что мы спозиционированы на последней записи?
1 Ненавижу 1С
 
гуру
13.06.13
13:52
зачем?
2 korchak
 
13.06.13
13:55
(1) для того, что если это последняя запись, то провести определенные арифметические операции, иначе нет
3 ale-sarin
 
13.06.13
13:55
(2) После цикла, не?
4 Ненавижу 1С
 
гуру
13.06.13
13:55
(2) становится еще более интереснее, зачем?
5 korchak
 
13.06.13
13:56
(3) нет в цикле перебора
6 ДенисЧ
 
13.06.13
13:56
Перел выборкой взять Количество(), в цикле считать итерации
7 Ursus maritimus
 
13.06.13
13:57
(1) За тем, что группировки еще не проходили.
8 ale-sarin
 
13.06.13
13:57
(5) Это я предложение такое выдвинул - считать после цикла.
9 korchak
 
13.06.13
13:58
(4) ну к примеру так: если на последней записи до к итогам добавить значение данных выборки
10 YF
 
13.06.13
13:59
(9) После цикла добавь, в чем фишка именно внутри?
11 korchak
 
13.06.13
14:01
интересно есть ли такая возможность... узнавать на какой по счету записи выборки мы находимся, в том числе последней...  после цикла понятно :)
12 GANR
 
13.06.13
14:02
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Счетчик = 0;

Пока Выборка.Следующий() Цикл
   Счетчик = Счетчик + 1;
   Если Счетчик = Выборка.Количество() Тогда
       // запись последняя
   Иначе
       // запись НЕ последняя
   КонецЕсли;
КонецЦикла;
13 Ненавижу 1С
 
гуру
13.06.13
14:03
(9) зачем? используй обходы по итогам
14 korchak
 
13.06.13
14:05
(13) и все остальным спасибо!
15 Lama12
 
13.06.13
14:06
(0) А можно пример, для общего развития?
В каких задачах может возникнуть такая необходимость?
16 korchak
 
13.06.13
14:10
(15) хорошо, может кто подскажет, как в этом запросе добавить сделать так что если это последняя запись ВТПоказанияСпидометра, то добавить к итогам ВТПоказанияСпидометра.Пробег1, а не потом химичить с обходами по группировкам?

   |ВЫБРАТЬ
   |    ВТПоказанияСпидометра.Авто КАК Авто,
   |ВЫБОР
   |    КОГДА ВТПоказанияСпидометра.Пробег1 < ВТПоказанияСпидометра.Пробег2
   |        ТОГДА ВТПоказанияСпидометра.Пробег2
   |    ИНАЧЕ 0
   |КОНЕЦ КАК НарастающийИтог
   |ИЗ
   |   ВТПоказанияСпидометра КАК ВТПоказанияСпидометра
   |ИТОГИ
   |    СУММА(НарастающийИтог)
   |ПО
   |    ОБЩИЕ,
   |    Авто
17 Рэйв
 
13.06.13
14:11
(16)При выходе из цикла Выборка стоит на последней записи.Делай с ней что хошь
18 korchak
 
13.06.13
14:12
извиняюсь, ошибся: "а не потом химичить с обходами по итогам"
19 korchak
 
13.06.13
14:12
(17) это понятно, а самом запросе как ухитриться?
20 Рэйв
 
13.06.13
14:14
(19)А какая тебе разница где?
21 Рэйв
 
13.06.13
14:14
(19)Фика в том что до выполнения запроса нет вообще никаких записей
22 korchak
 
13.06.13
14:16
понятно, разобрался... всем еще раз спасибо :)
23 zladenuw
 
13.06.13
14:17
(22) так можно при обходе выборки узнать.
ТипЗаписиЗапроса (QueryRecordType)
ТипЗаписиЗапроса (QueryRecordType)
Значения

ДетальнаяЗапись (DetailRecord)
ИтогПоГруппировке (GroupTotal)
ИтогПоИерархии (TotalByHierarchy)
ОбщийИтог (Overall)