Имя: Пароль:
1C
1С v8
Как в запросе получить следующую позицию в списке после элемента с пометкой?
0 svird
 
30.08.16
09:29
Есть справочник, у элементов справочника есть реквизит Дата, мне надо в запросе получить следующий элемент после элемента с определенной датой. Как это сделать с наименьшими затратами?
1 Горогуля
 
30.08.16
09:33
выбрать первые 1 из справочник соединение (выбрать максимум где дата<=&нужная) по дата1>=дата2 порядочить по дата1 убыв
2 svird
 
30.08.16
09:40
(1) Проблема в том, что может быть элемент без даты вообще. По дате сортировать нельзя. Если бы можно было по дате отобрать было бы проще.
3 Горогуля
 
30.08.16
09:43
>без даты вообще
это как?
ну замени первоя января чем-нибудь
4 Лефмихалыч
 
30.08.16
09:43
гугли: срез последних на каждую дату
5 mkalimulin
 
30.08.16
09:44
(0) В каком порядке идут элементы?
6 svird
 
30.08.16
09:52
(5) Ну у них есть сортировка наподобие: Порядок шагов, но эти шаги могут быть не уникальны, так как могут быть несколько заходов (типа документооборот), поэтому к порядку шагов тоже привязаться не удается. Самое четкое, это если получить следующий элемент после элемента с определенной датой.
7 Горогуля
 
30.08.16
09:53
(6) любой из следующих?
8 Горогуля
 
30.08.16
09:55
в БД есть один элемент с датой 1 и пятьдесят элементов с датой 2. который из 50 интересует?
9 igork1966
 
30.08.16
09:57
(0)(2) Без сортировки задача не может быть решена в принципе.

Стандарт SQL не гарантирует повторения порядка записей в неупорядоченном результате запроса.
10 svird
 
30.08.16
10:01
Оно сортируется по параметру Порядок шагов, просто получить номер этого порядка сложно, так как он в каком то регистре еще хранится. Так что можно сказать, что оно отсортировано. Поэтому и хочется получить следующий элемент, после определенного, понимаю, что наверно язык запросов этого не позволяет.
11 igork1966
 
30.08.16
10:07
(10) Если сортировка есть, то задача решаемая.
Недавно тут обсуждали получения курса на несколько дат, там как раз аналогичный алгоритм требовался.
12 aleks_default
 
30.08.16
10:09
(10)Скорее твой язык не позволяет тебе полноценно сформулировать ТЗ.
13 igork1966
 
30.08.16
10:10
14 SSSSS_AAAAA
 
30.08.16
10:11
(10) "Так что можно сказать, что оно отсортировано"
Кому можно? Сортировка должна быть в запросе, а не где-то там, за горизонтом...
15 patria0muerte
 
30.08.16
10:50
Можешь пронумеровать строки запроса по порядку и левым соединением получить искомое поле по НомерСтроки + 1.

Разумеется это взлетит, если есть поле, по которому можно однозначно отсортировать запрос.
16 mkalimulin
 
30.08.16
11:07
(10) Приведи мысли в порядок. Либо сортировка есть. Тогда эта задача решается. И запросом и не запросом. Либо сортировки нет. Тогда эта задача не решается. Никак, ни запросом, ни каким-либо другим способом. Потому что, в этом случае, понятие "следующий" теряет смысл.