Имя: Пароль:
1C
1С v8
1С как сравнить последнюю и предпоследнюю запись в запросе?
, ,
0 LopesLeonid
 
03.09.12
15:43
Как сравнить последнюю и предпоследнюю запись в запросе?

например

Имя | Число |
----|-------|
aaa |  20   |
aaa |  7    |
aaa |  4    |
aaa |  6    |
ccc |  100  |
ccc |  9    |
ccc |  3    |
ccc |  8    |

результат запроса

Имя | Число |
----|-------|
aaa |  4    |
aaa |  6    |
ccc |  3    |
ccc |  8    |

т.е. сравниваются 2 предпоследнии записи и выводиться только те где последняя больше предпоследней
1 Maxus43
 
03.09.12
15:44
в запросе? нафиг, не парься лучше... обработай в коде
2 GLazNik
 
03.09.12
15:45
а "последняя" запись как определяется?
3 Dionis Sergeevich
 
03.09.12
15:46
Предпоследний Новый СТруктура;
Предпоследний.Добавить("ааа");
...
Пока результат.Следующий() Цикл
Предпоследний.ааа = результат.ааа
...
КОнецЦикла
Если Результат.ааа <> Предпоследний.ааа
4 Dionis Sergeevich
 
03.09.12
15:46
прогоняй все записи, что остается то. И кешируй предпоследний результат. как все прогонишь - сравнивай последний с предпоследним
5 LopesLeonid
 
03.09.12
15:48
(1) в коде то понятно что можно
а хочется в запросе
6 Reset
 
03.09.12
15:49
(3) Крутой метод для получения последней записи, мне понравилось. И с использованием технологий, кэшированием, все дела.
7 Dionis Sergeevich
 
03.09.12
15:50
(6) какая задача такое и решение =)
8 Ногаминебить
 
03.09.12
15:51
Отсортировать в обратном порядке и брать первую и вторую?
9 Maxus43
 
03.09.12
15:52
(8) не прокатит, "имена" разные
10 Ненавижу 1С
 
гуру
03.09.12
15:54
а чем определяется "последнее" и "предпоследнее", только не говори, что оно последним выходит в таблице
11 6tuf
 
03.09.12
15:59
(0) задача не сформулирована, ничего не понятно
12 6tuf
 
03.09.12
16:03
(0) если понимать задачу буквально то решение такое : 1 выборка - нумеруешь записи, 2 выборка - в этих записях ищешь самое большое значение индекса, 3 выборка - убираешь самое большое значение и оставляешь предпоследнее, дальше делаешь с ними что хочешь
13 МишКа
 
03.09.12
16:23
Наверно ТС имел ввиду последнее в группе.
14 МишКа
 
03.09.12
16:24
Задача решается, хотя решение будет громоздким. Ключ к решению - пронумеровать по порядку записи в первой таблице.
15 Ненавижу 1С
 
гуру
03.09.12
16:25
(14) что есть "порядок" в данном случае?
16 МишКа
 
03.09.12
16:27
ТС привел абстрактный пример. Наверняка какой-то порядок у него там есть.
17 LopesLeonid
 
03.09.12
16:50
(15) порядок есть дата
18 Ненавижу 1С
 
гуру
03.09.12
16:52
(17) да вроде как не видно
а так находишь для каждого имени максимум, потом максимум исключая этот максимум (это предпоследнее)
находим значения этих строк
19 Ненавижу 1С
 
гуру
03.09.12
16:52
+(18) запросом конечно
20 KAO111
 
03.09.12
17:06
если есть порядок то проблем нет

Предпоследняя запись

выбрать первые 2 Имя,Число,Порядок
поместить П2
из Таблица
упорядочить по Порядок убыв
;
Выбрать первые 1 Имя,Число,Порядок
Из П2
упорядочить по Порядок
21 KAO111
 
03.09.12
17:10
(20) не прав, совсем не то
22 Анцеранана
 
03.09.12
17:15
(0) Не то? (просто адаптированное под мой регистр)

ВЫБРАТЬ
   ИзмененияМенеджераКонтрагента.Период КАК Период,
       ИзмененияМенеджераКонтрагента.Менеджер КАК Менеджер,

ГДЕ
   ИзмененияМенеджераКонтрагента.Период В
           (ВЫБРАТЬ ПЕРВЫЕ 2
               ИзмененияМенеджераКонтрагента2.Период
           ИЗ
               РегистрСведений.ИзмененияМенеджераКонтрагента КАК ИзмененияМенеджераКонтрагента2
           ГДЕ
               ИзмененияМенеджераКонтрагента2.КонтрагентДоговор = ИзмененияМенеджераКонтрагента.КонтрагентДоговор
           УПОРЯДОЧИТЬ ПО
               ИзмененияМенеджераКонтрагента2.Период УБЫВ)

коррелированный запрос - задача получения н последних записей регистра сведений...
23 Анцеранана
 
03.09.12
17:16
(22) Пропустил
ИЗ
   РегистрСведений.ИзмененияМенеджераКонтрагента КАК ИзмененияМенеджераКонтрагента

перед ГДЕ
24 LopesLeonid
 
05.09.12
10:40
я все уже руками сделал
точнее не запросом)

всем спасибо