Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 NickOmsk
 
08.06.13
11:01
есть справочник с кодами (число) 1,2,3, 5,6, 10,11
необходимо выбрать поле код и создать произвольное поле, в котором будет номер непрерывного интервала последовательности кода, т.е.
код поле
1   1
2   1
3   1
5   2
6   2
10  3
11  3
1 ИсчадиеADO
 
08.06.13
11:13
"номер непрерывного интервала последовательности кода" - например?
2 ИсчадиеADO
 
08.06.13
11:13
код 1,2,3,4,5,6 - номер 1; код 10,11 - номер 2?
3 NickOmsk
 
08.06.13
11:14
пример привел, это как-бы уже результат запроса
4 ИсчадиеADO
 
08.06.13
11:14
ай, блин, не дочитал как всегда
5 NickOmsk
 
08.06.13
11:15
(2) допустим так тоже
6 ИсчадиеADO
 
08.06.13
11:15
имхо, лучше выгрузить в тз из запроса и пробежаться в таблице
7 ИсчадиеADO
 
08.06.13
11:18
это запрос в компоновке данных?
8 hyperfocusin
 
08.06.13
11:19
соглашусь с (6)
выгружай в ТЗ, сравнивай с предыдущим значением, если разница больше 1 - инкрементируй счетчик
9 ИсчадиеADO
 
08.06.13
11:20
запросом можно, думаю, впринципе, но это самосоединение таблиц, и при большой выборке будет ну оч. долго
10 hyperfocusin
 
08.06.13
11:20
а вообще зачем тебе запрос? фигач выборку с упорядочивнием
11 NickOmsk
 
08.06.13
11:23
(7) да, в скд хочу отчет сделать
(10) у меня несколько сотен таких кодов будет, это номера билетов, хочу сгруппировать строки по интервалам и вывести нач. и конеч. номера. (такое вот задание дали)
12 ИсчадиеADO
 
08.06.13
11:26
(11) блин, номера же в таблице могут повторяться и идти не по порядку?
13 hyperfocusin
 
08.06.13
11:27
(11) скд - это часть задания?

вот и сделай выборку, выгрузи её в ТЗ и пробегись как в (8), затем загони её в запрос и выгрузи в виде дерева. А это дерево  значений выведи в табличном поле )
хотя хз, в скд может и проще будет, но я чёт не могу сообразить как
14 NickOmsk
 
08.06.13
11:28
(12) все уникальны, там как бы еще владелец-серия есть но для простоты это опускаем, и конечно надо упорядочивать
15 NickOmsk
 
08.06.13
11:30
(13) я хотел как проще, если конечно возможен такой запрос, програмное создание отчета в скд я попозже буду делать, когда пойму что одним запросом не обойтись ))
16 ЧашкаЧая
 
08.06.13
11:31
ВЫБРАТЬ
   1 КАК Значение
ПОМЕСТИТЬ ВТДанные

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   6
   
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   10

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   11
   
   

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Данные.Значение,
   ПредыдущееЗначение.Значение КАК ПредыдущееЗначение
ПОМЕСТИТЬ ВТНачалаИнтервалов
ИЗ
   ВТДанные КАК Данные
       ЛЕВОЕ СОЕДИНЕНИЕ ВТДанные КАК ПредыдущееЗначение
       ПО (Данные.Значение = ПредыдущееЗначение.Значение + 1)
ГДЕ
   ПредыдущееЗначение.Значение ЕСТЬ NULL
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТНачалаИнтервалов.Значение КАК НачалоИнтервала,
   КОЛИЧЕСТВО(ВТНачалаИнтервалов1.Значение) КАК НомерИнтервала
ПОМЕСТИТЬ ВТНомераИнтервалов
ИЗ
   ВТНачалаИнтервалов КАК ВТНачалаИнтервалов
       ЛЕВОЕ СОЕДИНЕНИЕ ВТНачалаИнтервалов КАК ВТНачалаИнтервалов1
       ПО ВТНачалаИнтервалов.Значение >= ВТНачалаИнтервалов1.Значение

СГРУППИРОВАТЬ ПО
   ВТНачалаИнтервалов.Значение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТДанные.Значение КАК Значение,
   МАКСИМУМ(ВТНомераИнтервалов.НомерИнтервала) КАК НомерИнтервала
ИЗ
   ВТДанные КАК ВТДанные
       ЛЕВОЕ СОЕДИНЕНИЕ ВТНомераИнтервалов КАК ВТНомераИнтервалов
       ПО ВТДанные.Значение >= ВТНомераИнтервалов.НачалоИнтервала

СГРУППИРОВАТЬ ПО
   ВТДанные.Значение
17 NickOmsk
 
08.06.13
12:05
(16) спасибо большое работает ))), единственное не понял первую часть запроса, вместо нее у меня ТЧ документа
18 NickOmsk
 
08.06.13
12:22
(16) сам так быстро сделал или уже было ;)
19 ЧашкаЧая
 
08.06.13
12:27
(17) Первый запрос просто для отладки.
(18) Специально для вас, мисье, сделал. Люблю запросы, интересная задача.