|
Дерево значений, выгрузка из запроса | ☑ | ||
---|---|---|---|---|
0
mpv-faq
11.08.17
✎
11:51
|
Здравствуйте, есть запрос
Запрос.Текст = "ВЫБРАТЬ | СправочникНоменклатура.Ссылка КАК Категория, | ЛОЖЬ КАК Выгружать |ИЗ | Справочник.Номенклатура КАК СправочникНоменклатура |ГДЕ | СправочникНоменклатура.ЭтоГруппа | И СправочникНоменклатура.Ссылка <> &ВерхняяГруппа | И СправочникНоменклатура.Ссылка В ИЕРАРХИИ(&ВерхняяГруппа) |СГРУППИРОВАТЬ ПО | СправочникНоменклатура.Ссылка |ИТОГИ ПО | Категория ТОЛЬКО ИЕРАРХИЯ"; Запрос.УстановитьПараметр("ВерхняяГруппа", ВерхняяГруппа); РезультатЗапроса = Запрос.Выполнить(); Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); В этом дереве нет последних каталогов по иерархии в каждом каталоге, как быть? |
|||
1
pessok
11.08.17
✎
11:52
|
| И СправочникНоменклатура.Ссылка <> &ВерхняяГруппа
а что ты ожидал? |
|||
2
mpv-faq
11.08.17
✎
11:53
|
(1) Что он не возьмет этот каталог в иерерхию а только подлежащие к нему
|
|||
3
mpv-faq
11.08.17
✎
11:53
|
Он по 3 - 4 иерархии а послдние в любом каталоге не выгружает
|
|||
4
mpv-faq
11.08.17
✎
11:54
|
Т. е. скажем
- 1 -2 -3 -4 Так вот 4 не выгрузит то есть не будет его в иерархии |
|||
5
mistеr
11.08.17
✎
11:55
|
(0) Вместо "Категория ТОЛЬКО ИЕРАРХИЯ" нужно "Категория ИЕРАРХИЯ"
|
|||
6
mpv-faq
11.08.17
✎
11:56
|
(5) А так берет себя же самого
|
|||
7
mpv-faq
11.08.17
✎
11:56
|
(5) т.е. по иерархии вниз сам себе берет каждый родитель
|
|||
8
pessok
11.08.17
✎
11:57
|
(2) ну так ты и написал в (0), что он его не взял
|
|||
9
mpv-faq
11.08.17
✎
11:57
|
Как их отсекать?
|
|||
10
mpv-faq
11.08.17
✎
11:58
|
(8) Не это он неберет верхниюю а получается так
-1 -1 -2 -2 -3 -3 -4 |
|||
11
mpv-faq
11.08.17
✎
11:59
|
Вот нужно что бы сам себя не брал и будет огонь
|
|||
12
mpv-faq
11.08.17
✎
12:00
|
Нет мыслей кроме как вручную собирать дерево?
|
|||
13
mpv-faq
11.08.17
✎
12:03
|
Ну же ребят
|
|||
14
mistеr
11.08.17
✎
12:11
|
(12) Выгрузить(), перенести строки с 1-го уровня на 0-й, удалить корень.
Но я бы выгружал в цикле. Заодно научишься с выборками работать. :) |
|||
15
pessok
11.08.17
✎
12:13
|
а я так и не понял в чем задача...
|
|||
16
mistеr
11.08.17
✎
12:17
|
(15) Выгрузить некую иерархию без корня, как я понял.
|
|||
17
МихаилМ
11.08.17
✎
12:18
|
используйте либо сгруппировать либо итоги по
|
|||
18
mpv-faq
11.08.17
✎
12:20
|
(17) Что это даст
|
|||
19
mpv-faq
11.08.17
✎
12:21
|
(14) Можно пример если не сложно, пожалуйста
|
|||
20
mpv-faq
11.08.17
✎
12:25
|
Ладно вроде получилось
Процедура ОбходДерева(перДерево) Сч = 0; Для Каждого тСтр Из перДерево.Строки Цикл Если Сч = 0 И НЕ тСтр.Категория.Наименование = "Товары" Тогда // Товары это верхнаяя категория перДерево.Строки.Удалить(тСтр); Иначе тСтр.Выгружать = ЛОЖЬ; Если тСтр.Строки.Количество() > 0 Тогда ОбходДерева(тСтр); КонецЕсли; КонецЕсли; Сч = Сч + 1; КонецЦикла; КонецПроцедуры |
|||
21
mpv-faq
11.08.17
✎
13:45
|
МассивУдалСтрок = Новый Массив;
ОбходДерева(РезДерево, "", МассивУдалСтрок); Для Каждого ЭлМассива Из МассивУдалСтрок Цикл ЭлМассива.Дерево.Строки.Удалить(ЭлМассива.тСтр); КонецЦикла; Процедура ОбходДерева(перДерево, удалРодитель, МассивУдалСтрок) Для Каждого тСтр Из перДерево.Строки Цикл Если удалРодитель = тСтр.Категория Тогда СтруктураУдаления = Новый Структура; СтруктураУдаления.Вставить("Дерево", перДерево); СтруктураУдаления.Вставить("тСтр", тСтр); МассивУдалСтрок.Добавить(СтруктураУдаления); //Сообщить("Удалено " + удалРодитель + " | " + тСтр.Категория.Наименование + " | Количество = " + тСтр.Строки.Количество()); //перДерево.Строки.Удалить(тСтр); Иначе Сообщить("НЕ Удалено " + удалРодитель + " | " + тСтр.Категория.Наименование + " | Количество = " + тСтр.Строки.Количество()); тСтр.Выгружать = ЛОЖЬ; Если тСтр.Строки.Количество() >= 0 Тогда локУдалРодитель = тСтр.Категория; ОбходДерева(тСтр, локУдалРодитель, МассивУдалСтрок); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |