Имя: Пароль:
1C
1С v8
Рекурсия в СКД
,
0 PR
 
06.11.12
15:04
Как вывести отчет с рекурсией средствами СКД?

Предположим, у меня есть номенклатура.

Группа 1
Группа 1.1
 Товар 1.1.1
 Товар 1.1.2
Группа 1.2
 Товар 1.2.1


Я хочу вывести для номенклатуры "Товар 1.1.1" вывести следующее:

Товар 1.1.1
Группа 1.1
 Группа 1

Это делается с помощью такого вот отчета http://www.asbins.ru/skdrek.rar, в котором задано начальное значение связи на закладке связи наборов данных.

А если я хочу вывести такое для всей номенклатуры, являющейся элементами, тогда как?
То есть должно получиться

Товар 1.1.1
Группа 1.1
 Группа 1
Товар 1.1.2
Группа 1.1
 Группа 1
Товар 1.2.1
Группа 1.2
 Группа 1


Вводная:
1. Количество уровней иерархии неизвестно.
2. Хрусталева идет лесом, у нее описано построение собственной иерархии, но в данном случае мы говорим об обратной иерархии.
3. Тем, кто считает задачу нереальной, предлагаю другую, вывод подчиненности документов. А вообще речь о принципиальной возможности.
1 mzelensky
 
06.11.12
15:11
(0) когда задался похожей проблемой мне один чувак с форму кинул это:

http://www.codenet.ru/db/other/trees/

Сразу скажу ,что этот бред я реализовывать не стал и обошелся меньшей кровью, но может ты замахнешься?!
2 PR
 
06.11.12
15:20
(1) Текст по ссылке не располагает, думаю, что не взлетит.
3 mzelensky
 
06.11.12
15:22
(2) да, меня тоже не расположил :)
4 mzelensky
 
06.11.12
15:23
(2) я обошелся меньшей кровью:

v8: v8: Как по элементу спр найти группу, которой он принадлежит

У тебя же, чисто на СКД, такой вариант не прокатит :(
5 mzelensky
 
06.11.12
15:24
(4) + ты же кажется записывал "хотелка" на 8.3 ... лично моя хотелка по ссылке в посте (20)
6 ДемонМаксвелла
 
06.11.12
15:26
строишь дерево своим алгоритмом (это самое простое), преобразуешь в ТЗ (главное, не забыть про КлючСтроки и КлючРодителя), скармливаешь СКД, в СКД заново строишь иерархию, соединяя набор данных самого с собой.
7 GomerSimpson
 
06.11.12
15:35
может проще просто сформировать дерево, а потом вывести его в табличный документ, используя НачатьГруппуСтрок(), ЗакончитьГруппуСтрок() и рекурсию
8 ДемонМаксвелла
 
06.11.12
15:36
(7) в условиях задачи "с помощью СКД"
9 ДемонМаксвелла
 
06.11.12
15:36
непроверенный набор данных скармливать СКД для рекурчии не советую
10 Chin
 
06.11.12
15:40
(0) А если в качестве начального значения установить пустое значение номенклатуры - у меня работало!
11 Chin
 
06.11.12
15:40
(10) Сорри - не вник - иерархия обратная - такое не делал!
12 samozvanec
 
06.11.12
15:43
монитор перевернуть не предлагать?
13 GomerSimpson
 
06.11.12
15:57
СКД не подходит для этой задачи.
можно конечно передать ТЗ и программно установить уровни группировок, но зачем такое извращение.
Уметь забивать гвозди плоскогубцами круто, только если молотка нет.
14 ДемонМаксвелла
 
06.11.12
16:04
(13) С помощью одной лишь СКД эту задачу не решить. Но СКД вполне можно использовать для вывода табличного документа.

А можно и не использовать.
15 PR
 
09.11.12
10:18
Странно. Неужели в начальный параметр нельзя передать список ссылок?
Или может еще одно соединение сделать?
16 GANR
 
09.11.12
12:01
(0) Перефразируем вопрос:

В качестве первого уровня необходимо выбрать всё, что не являющиеся родителем по отношению к чему-то ещё в справочнике

ВЫБРАТЬ
   Ссылка
ИЗ
   Справочники.МойСправочник
ГДЕ
   НЕ Ссылка В (ВЫБРАТЬ
           Родитель
       ИЗ
           Справочники.МойСправочник)

Потом это необходимо рекурсивно соединить с остальным содержимым справочника по условию Родитель = Ссылка .

Возможно это или нет посредством СКД (без кода)???
17 PR
 
12.11.12
20:26
(16) Спасибо, Кэп.
Ты спросил то же самое :))
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.