Имя: Пароль:
1C
1С v8
Заполнение дерева значений
,
0 MMMan
 
16.09.21
12:18
Я еще в школе так что строго не судите)

Для решения некоторой задачи требуется заполнить дерево значений случайными значениями.
Процедура рекурсивная, в параметр подается ДеревоЗначений(ну или СтрокаДереваЗначений) и Глубина - число, означающее насколько длинная должна получиться иерархия.

Код, который я написал

Процедура ЗаполнитьГраф(ТекущийУзел, Знач Глубина)
    
  ГСЧ = Новый ГенераторСлучайныхЧисел();
  Глубина = Глубина - 1;
    
  Если НЕ Глубина > 0 Тогда
    Возврат;
  КонецЕсли;
    
  Для Каждого Узел Из ТекущийУзел.Строки Цикл
            
  Для Счетчик = 1 По 2 Цикл                
    НовыйУзел = Узел.Строки.Добавить();
    НовыйУзел.Значение = ГСЧ.СлучайноеЧисло(1, 100);        
    ЗаполнитьГраф(Узел, Глубина);                
  КонецЦикла;
            
КонецЦикла;
        
КонецПроцедуры

Вывод должен быть следующего вида(Глубина = 3)

3      3
2    2   4
1  2  3 4  6

Что же происходит не так, если вывод происходит в таком виде? В чем ошибка?

3         6
2      2      3
1   2 3 2 3  4 5
1 Дремучий
 
16.09.21
12:45
Чтобы лучше разобраться, что происходит, нужно добавить в процедуру счетчик, который будет всегда увеличиваться на единицу, отражая номер шага.
Процедура ЗаполнитьГраф(ТекущийУзел, Знач Глубина, НомерШага)
    ...
    НовыйУзел.Значение = НомерШага;
    НомерШага = НомерШага + 1;
    ЗаполнитьГраф(Узел, Глубина, НомерШага);
    ...
КонецПроцедуры

Скорее всего неправильно организована проверка на глубину вложенности, думаю она срабатывает (а не должна) на добавлении второй ветки на том же уровне вложенности.
2 MMMan
 
16.09.21
13:06
Да, вижу. Дело в глубине.

3               0

2       83            71

1   83 71 83 71    80    15

Додумал вывести себе как шел код. В отладчике, пока что, для меня как-то непонятно:
Значение: 83 Счетчик: 1 Глубина: 1
Значение: 71 Счетчик: 2 Глубина: 1
Значение: 83 Счетчик: 1 Глубина: 2
Значение: 83 Счетчик: 1 Глубина: 1
Значение: 71 Счетчик: 2 Глубина: 1
Значение: 80 Счетчик: 1 Глубина: 1
Значение: 15 Счетчик: 2 Глубина: 1
Значение: 71 Счетчик: 2 Глубина: 2
3 Веселый собака
 
16.09.21
13:30
(0) а тупо вывести в табличное поле и увидеть наглядно? )
4 Kassern
 
16.09.21
13:33
(0) уже со школьной скамьи 1ску изучают?
5 1Сергей
 
16.09.21
13:37
(4) ничего удивительного
6 MMMan
 
16.09.21
13:39
(3) А я и не додумался! Да, удобнее для глаза, но вот смысл в этом)))
(4) Неа, у нас паскаль там в школе и то на уровне простых циклов. Я типо проекта делаю
7 Kassern
 
16.09.21
14:08
(6) а к 1ске то как пришел?
8 Веселый собака
 
16.09.21
14:13
(7) наверно папа 1сник укусил.
9 MMMan
 
16.09.21
14:27
(7) (8) Да ладно вам! Тут же вот справочники, документы, формы все эти. Все на своем месте, все как надо. Все по порядку. Красиво
10 Веселый собака
 
16.09.21
14:29
(9) молод ты еще в это.. наступать.
Лучше яву там учи какую, будешь свободный птиц- по миру кататься, под пальмами кодить.

Это наша, стариковская ниша.
11 Kassern
 
16.09.21
14:31
(10) да ладно вам, пускай молодое поколение подрастает. Итак с кадрами большие проблемы
12 ДенисЧ
 
16.09.21
14:42
(11) С кадрами проблемы нет. Вот без кадров...
13 ДенисЧ
 
16.09.21
14:43
(10) "Лучше яву там учи какую"
Что тебе этот молодой человек сделал плохого?