Имя: Пароль:
1C
1С v8
ЕРП 2.4. Попытка вывести дерево себестоимости в таблицу
,
0 1cv78
 
07.10.19
13:11
Хелп, плиз! Уже месяц пытаюсь добить сабж.
В отчете выходит здоровое дерево с множеством ветвей и листьев, а при рекурсивном переборе строк, только верхний уровень. При рекурсивном проваливании в нижние дает одну пустую сроку, хотя там их дофига.
Пробовал разными путями, из клиента и из сервера - результат один. Вот фрагмент кода:

С сервера:

&НаСервере
Процедура ПечатьДереваТест(Строки)
    
    Для Каждого стр Из Строки Цикл
        Сообщить("Выводим строки: " + Стр.Номенклатура);
        ПечатьДереваТест(Стр.Строки);
    КонецЦикла;
    
КонецПроцедуры

&НаСервере  
Процедура СформироватьТест()
    
    Дерево = РеквизитФОрмыВЗначение("ПолноеДеревоСебестоимости");
    ПечатьДереваТест(Дерево.Строки);
    
КонецПроцедуры

ЗЫ: Тут пробовал и не из формы брать, а в момент построения отчета перехватывать, когда из хранилища передает. Но результат тот же.

На клиенте вот так брал:

&НаКлиенте
Процедура ОбойтиДеревоЗначений(Элемент)
    
    ПодчиненныйЭлемент=Элемент.ПолучитьЭлементы();
    Для Каждого Строка из ПодчиненныйЭлемент Цикл
    Сообщить("Выводим строки: " + Строка.Номенклатура);
        ОбойтиДеревоЗначений(Строка);
    КонецЦикла;
    
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьТаблицу(Команда)
    ОбойтиДеревоЗначений(ПолноеДеревоСебестоимости)
КонецПроцедуры

В итоге та же фигня. ЧЯДНТ?

Спасибо, если кто прольет свет...
1 1cv78
 
07.10.19
14:40
ап
2 aleks_default
 
07.10.19
14:47
А отладчик у тебя в поставку не входит?
3 1cv78
 
07.10.19
15:59
Да я ж сообщения вывожу, все видно, что тут еще смотреть.
На всех уровнях рекурсии показывает, какие строки обходит.
В результате первый уровень нормально, а когда проваливается, по одной пустой строке проходит, хотя их там сто штук.
4 1cv78
 
07.10.19
16:00
Думал, может, глюк платформы, если кто сталкивался...
5 shuhard
 
07.10.19
16:02
(4) [может, глюк платформы]
Дерево себестоимости работает в ERP  на всех платформах последние лет 5
6 1cv78
 
07.10.19
16:18
А в коде-то все нормально? Косяков не видно?
вроде ж сложно ошибиться..
7 shuhard
 
07.10.19
17:07
(6) [А в коде-то все нормально? Косяков не видно?]
форум  не смотрит на код, есть отладчик - зачем мозг нагружать
8 1cv78
 
09.10.19
01:30
Насиделся в отладчике, ничего нового не узнал, да и раньше все выводил в сообщениях.
Видит дерево, как верхний уровень, плюс по одной подчиненной строке с пустыми значениями, хотя визуально, там их дофига.
Заколдованное дерево, как и все в этом ЕРП.
Пробовал на демо базе - та же фигня.
Кстати, народу очень нужно дерево распечатывать. Кто разгадает тайну мистического дерева, скину доработанный отчет на почту.
Не ахти, какой шедевр, но хоть что-то.. просто уже крыша едет...
9 1cv78
 
17.10.19
17:10
На всякий случай пишу, кому интересно в рамках ликбеза...
Только не смейтесь: оказывается, свернутое дерево не читается из программы.
Развернуть типо надо, тогда ветки читаются))
10 SergeyKB
 
17.10.19
18:07
(0)
Чтобы получить результаты разузлования нужно типо
    ПараметрыВыборки = Справочники.РесурсныеСпецификации.ПараметрыВыборкиДанных();
    
    РезультатРазузлования = Справочники.РесурсныеСпецификации.ДанныеСпецификацииПоПотребности(ВходящиеПотребности, ПараметрыВыборки);

параметры можете посмотреть в описании функций

(9) Если дерево читается на клиента, то там используется оптимизация (передачи большого объема данных на тонкого клиента, через http медленно, нежели раньше в 8.2 через tcp) поэтому придумывают костыли, передать только видимую часть дерева, далее подкачивать по мере разворачивания строк дерева
Сами данные в той форме ERP что вызывается из спецификации хранятся во временном хранилище
11 HeKrendel
 
17.10.19
18:35
(0) чем тебя типовой отчет  не устраивает?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.