Имя: Пароль:
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) Специально для вас, мисье, сделал. Люблю запросы, интересная задача.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший