![]() |
|
Скажите как выгрузить товары в произвольной иерархии? | ☑ | ||
---|---|---|---|---|
0
rikodroo
26.07.13
✎
07:46
|
Что-то все не получается. Есть справочник Номенклатура, есть справочник ГруппыПрайсЛиста. Во втором расположены в иерархии группы - так группы должны быть расположены в выходном файле.
Когда выполняю запрос вида: ВЫБРАТЬ Номенклатура.ГруппаПрайсЛиста КАК ГруппаПрайсЛиста, Номенклатура.Ссылка КАК Товар ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ГруппаПрайсЛиста = ЗНАЧЕНИЕ(Справочник.ГруппыПрайсЛиста.ПустаяСсылка) ИТОГИ ПО ГруппаПрайсЛиста ИЕРАРХИЯ Выводится результат содержащий дубли некоторых строк: Запчасти <NULL> Глушители <NULL> Глушители Глушак-1 Глушители Глушак-2 Двигатели <NULL> Двигатели Двиган-1 Двигатели Двиган-2 Запчасти <NULL> Запчасти Колесо-1 Запчасти Колесо-2 Ну, а необходимо получить так: Запчасти <NULL> Глушители <NULL> Глушители Глушак-1 Глушители Глушак-2 Двигатели <NULL> Двигатели Двиган-1 Двигатели Двиган-2 Запчасти Колесо-1 Запчасти Колесо-2 Что-то так и не смог найти как такое сделать. Нашел как такую задачу решить с использованием СКД и хранением иерархии в регистре сведений (пара измерений - Элемент и Родитель). Правда там сначала приходится выводить результат в дерево значений, а уже только потом еще раз его обходить и формировать колонки отчета. Хочется же делать все за один проход - сразу получать результат - выборку. |
|||
1
rikodroo
26.07.13
✎
07:48
|
(0) блин, форматирование что-то опять неочень..
Строки: Глушители <NULL> Двигатели <NULL> Запчасти Колесо-1 Запчасти Колесо-2 на одном уровне |
|||
2
cw014
26.07.13
✎
07:49
|
(1) Что то не понятно что ты хочешь. Правильно он все выводит - группа и иерархия
|
|||
3
cw014
26.07.13
✎
07:50
|
(1) Если надо, как у тебя, тогда отключай итоги и выводи по порядку
|
|||
4
rikodroo
26.07.13
✎
07:52
|
(3) не понял, а иерархию как получить?
|
|||
5
rikodroo
26.07.13
✎
07:53
|
+ (4) группы тоже нужно выводить
|
|||
6
cw014
26.07.13
✎
07:58
|
У тебя в (1) нету иерархии. У тебя два столбца - Группа и номенклатура
|
|||
7
rikodroo
26.07.13
✎
08:00
|
(6) Ок, а как в иерархическом порядке данные получить?
|
|||
8
rikodroo
26.07.13
✎
08:00
|
+ (6) в (1) это комментарий к (0), т.к. форматирование неочень ровное
|
|||
9
Афоня
26.07.13
✎
08:05
|
(1) То ли я не проснулся, то ли автор)))) найди 10 отличий в том что хочу получить и что выходит
|
|||
10
rikodroo
26.07.13
✎
08:07
|
(9) дублируется строка: Запчасти <NULL>
|
|||
11
rikodroo
26.07.13
✎
08:09
|
+ (10) а ее поидее вообще ненадо. Притом, все элементы и группы одного уровня должны располагаться так - сначала группы, потом элементы. Если делать как в (0) то оно так располагаться тоже не всегда будет.
|
|||
12
Афоня
26.07.13
✎
08:23
|
(10) так это самая верхняя твоя группа
|
|||
13
rikodroo
26.07.13
✎
08:32
|
(12) ага, это она. Но ее нужно убрать. В (0) последняя табличка - это как нужно.
|
|||
14
Афоня
26.07.13
✎
08:55
|
ну напиши доп условие Где родитель не пустой
|
|||
15
cw014
26.07.13
✎
08:57
|
Сдается мне, что в группе "Запчасти" есть еще одна группа "Запчасти"
|
|||
16
rikodroo
26.07.13
✎
09:00
|
(14) не ну это же относится не только к самому верхнему уровню, а на более глубоких уровнях проблема остананется, но родитель буден непустым.
|
|||
17
rikodroo
26.07.13
✎
09:01
|
(15) нет. Попробуйте сделать реквизит как в (0) описано и увидите.
|
|||
18
cw014
26.07.13
✎
09:03
|
(17) Ты хоть структуру групп дай что ли
|
|||
19
rikodroo
26.07.13
✎
09:03
|
Еще вот есть вариант, но он дикий и медленный. Выгрузить все товары (где реквизит ГруппаПрайса непустой) в табличку вида (Товар, ГруппаПрйса). Затем обходя по иерархии - дергать товары из этой таблички.
|
|||
20
Мимохожий Однако
26.07.13
✎
09:04
|
Покажи как обрабатываешь результат запроса
|
|||
21
rikodroo
26.07.13
✎
09:05
|
(18)
Структура групп имеет вид (вложенность - неограниченная): Запчасти Глушители Брак Глючные Двигатели Роторные двигатели Прочее Краска Свечи |
|||
22
rikodroo
26.07.13
✎
09:08
|
(20) да пока никак не обрабатываю. Но поидее стандартно -Выборка.Следующий() и т.п. Ну может с обходом по группировкам.
|
|||
23
cw014
26.07.13
✎
09:17
|
(22) Сейчас присмотрелся, так то правильно выводит по идее
|
|||
24
cw014
26.07.13
✎
09:22
|
(22) У тебя поле не является непосредственным родителем, поэтому верхний уровень показывает все, что у тебя находится в иерархии верхней группы, далее группировка идет по группам, в которых находятся элементы непосредственно
|
|||
25
rikodroo
26.07.13
✎
09:26
|
(24) угу.
|
|||
26
cw014
26.07.13
✎
09:28
|
(25) Переноси на СКД, там можно свою иерархию замутить. Или программно обрабатывай результат
|
|||
27
rikodroo
26.07.13
✎
09:37
|
(26) попробавал на СКД, но там выводом как таковым я не понял как управлять. Приходится сначала все выгрузить в ТЗ или ДеревоЗначений, а уже потом снова проходить по дереву и заполнять остальные колонки.
У меня там так: ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; мДЕрево = Новый ДеревоЗначений; ПроцессорВывода.УстановитьОбъект(мДЕрево); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда Прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных); КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); По моему, с СКД не лучше чем в (19) или чем например так (чтобы без отборов как в 19): Формируем дерево значений из нужных групп, затем за одну выборку из таблицы товаров - дозаполняем ветви дерева и прочие колонки. Только после этого выгружаем дерево в файл.. Хз. А у вас есть на СКД примеры подобных реализаций посмотреть? |
|||
28
rikodroo
26.07.13
✎
14:20
|
прьрьп
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |