![]() |
![]() |
![]() |
|
Альтернатива УложитьСписокОбъектов с группами | ☑ | ||
---|---|---|---|---|
0
Если
28.04.10
✎
13:46
|
|set nocount on
|update #Группа |set |isfolder = 1 |from #Группа |inner join sc417 as ref (nolock) on ref.id = #Группа.val |where |ref.isfolder = 1 |declare @folders table(val char(9), primary key clustered (val)) |while 1=1 |begin |insert into @folders |select val from #Группа |where |isfolder = 1 |if @@rowcount = 0 break |insert into #Группа |select |id, |isfolder |from sc417 (nolock) |where |parentid in ( select val from @folders ) |and |id not in ( select val from #Группа ) |delete #Группа |where |val in ( select val from @folders ) |delete @folders |end |set nocount off вытянул из профайлера УложитьСписокОбъектов, так понимаю, что строка |delete #Группа |where |val in ( select val from @folders ) как раз и удаляет группы из таблицы, но если ее закомментировать, то 1С виснет напрочь. ЧЯНД? или точнее где ЯН прав? |
|||
1
SnarkHunter
28.04.10
✎
13:50
|
Прекратите писать эти идиотские ЧЯНВХУ...
Комментируя этот оператор ты запускаешь бесконечный цикл... |
|||
2
Если
28.04.10
✎
13:53
|
(1) хорошо. Так как же оставить в таблице группы?
|
|||
3
trdm
28.04.10
✎
13:59
|
(2) Просто добавь их.
|
|||
4
trdm
28.04.10
✎
14:00
|
(1) +500
неча фалосом размахивать, если лыжи не едут... |
|||
5
SnarkHunter
28.04.10
✎
14:01
|
После цикла добавь:
insert into #Группа select parentid, isfolder from sc417 (nolock) where id in ( select val from #Группа ) |
|||
6
SnarkHunter
28.04.10
✎
14:03
|
Точнее:
insert into #Группа select distinct parentid, isfolder from sc417 (nolock) where id in ( select val from #Группа ) |
|||
7
Если
28.04.10
✎
14:03
|
(5) так я только родителей получу, а если групп 5, к примеру?
|
|||
8
Если
28.04.10
✎
14:04
|
в @folders я так понимаю они все уже есть.
|
|||
9
SnarkHunter
28.04.10
✎
14:04
|
Вся иерархия что ли нужна?
|
|||
10
SnarkHunter
28.04.10
✎
14:05
|
(8)Откуда?
|
|||
11
Если
28.04.10
✎
14:07
|
(9) ну само собой. ParentID и в запросе получить не проблема.
хочется если выбирается уровень, иметь тз со всеми элементами и группами |
|||
12
Если
28.04.10
✎
14:08
|
(10)
|while 1=1 |begin |insert into @folders |select val from #Группа |where |isfolder = 1 |if @@rowcount = 0 break |
|||
13
SnarkHunter
28.04.10
✎
14:09
|
(12)
|delete @folders |end |
|||
14
Если
28.04.10
✎
14:11
|
(13) Ну да. А что до делита добавить нельзя? счас попробую.
|
|||
15
SnarkHunter
28.04.10
✎
14:13
|
Добавь в таблицу #Группа еще одно поле, скажем Check, инициализируй его нулем...
Затем в начале цикле вот так поменяй: insert into @folders select val from #Группа where isfolder = 1 and check = 0 А в конце цикла вот так: update #Группа set check = 1 where val in ( select val from @folders ) |
|||
16
www0002
08.05.10
✎
05:33
|
10624874714072651195608464066791
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |