Вывести ТЗ с итогами по группам, получается медленно.... #155065


#0 by Мартын
Есть ТЗ в которой порядка 3000 строк, с колонками Справочник.Номенклатура и числовыми. Нужно вывести эту ТЗ в отчет, при этом выводя все итоги по группам справочника Номенклатура. Может есть какой-нибудсь способ быстро сделать вывод? А то как я ни делал все получается очень медленно, из-за того что медленно работает обращение к родителю. Итоги нужны по всем группам, в справочнике 7 уровней.
#1 by По идее так 2
Чего в числовых колонках хранишь-расчитываешь то ?
#2 by Мартын
Колонки уже рассчитаны, ТЗ получена из запроса скл (1c++). Так что там больше ничего кроме итогов считать не надо, просто вывести.
#3 by Морозов Александр
А как считаеш то?
#4 by По идее так 2
А как сейчас выводишь? Примерно в двух словах ...
#5 by NS
// тормоза в найтиЗначение!!!! Чтоб их убрать - нужно обе таблицы скинуть в темповый индексированный XBase.
#6 by NS
У тебя ТЗ остортирована в порядке иерархии?
#7 by NS
(+6) Если да, то всё намного проще.
#8 by Мартын
Пробовал копировал эту тз в другую, там создавал колонки для родителей ее сворачивал, а при выводе 1 тз, искал нужные итоги. Еще пробовал сворачивать 2 тз по полному наименованию.
#9 by NS
Как в Пробовал? Без колонок по родителям.
#10 by NS
(+9) Замер производительности где дыру показывает?
#11 by Мартын
2 NS Ну а если ее отсортировать по иерархии, то как проще?
#12 by Морозов Александр
Не знаю как в 1С++ но простом запросе при выгрузке в ТЗ итоги для групп расчитаны
#13 by NS
Надо думать... А ТЗ остортирована по иерархии или нет?
#14 by Мартын
Нет как в 5 не пробовал, попробую. Замер производительности в моем варианте вывода показывал что основные тормоза там где я обращался к родителю.
#15 by По идее так 2
Расчитаны то расчитаны .... а если нужно специфич. вычисления производить? Тогда ой, тогда нужно извращаться ....
#16 by NS
Попробуй в замере цикл по заполнению ТЗ1 из прогнать - будет ли быстрее.
#17 by Мартын
2 NS Нет не отсортирована, но кажется когда я добавлял колонку с полноым наименованием и сортировал по ней, это было не особо долго. 2 Морозов Александр - нет там на выходе просто тз с элементами без групп и итогов по ним.
#18 by Морозов Александр
например?
#19 by NS
Можно так. После цикла слить ТЗ и ТЗ1 (через Заполнить) А в процессе заполнения заполнять полноенаименование... Но что будет если на одном уровне есть группы с одинаковым наименованием? Беда выйдет... Или разделитель в наименовании...
#20 by Мартын
19 Да я помню какие-то грабли у меня из-за этого вылезали. Справочник Номенклатура ~45000 элементов.
#21 by NS
Хотя можно и не сливать....
#22 by NS
Там в конце только перед "сортировать" - ТЗ.свернуть("Номенклатура","Сумма");
#23 by NS
(+22) Блин, ТЗ.Свернуть("Номенклатура,ПН","Сумма");
#24 by Мартын
Спасибо, NS. Сейчас другой работой озадачили, вечером дома попробую, о результатах отпишусь.
#25 by NS
Если тормозит, то я знаю, как (21,22) при семи уровнях в справочнике ускорить более чем в пять раз. Меня осенило. ;-)
#26 by NS
(+25) У каждого родителя родитель получать только один раз, и исключить сворачивание по родителям (и соответственно дублирование добавления родителей, без всяких XBase, и найтиЗначение и его аналогов ;-))))
#27 by Мартын
Не понял. ((
#28 by NS
Привожу пример. У тебя иерархия Папка1 1ур.   Папка2 2ур.     Папка3 3ур.       Папка4 4ур.         Элемент1 100 руб. 5ур.         Элемент2 200 руб. 5ур       Папка5 4ур.         Элемент3 300 руб. 5ур.         Элемент4 400 руб. 5ур. Тем способом что я привел - в ТЗ будет добавлено 16 строк, и 20 раз будет искаться родитель... А достаточно - 9 раз искать родителя, и добавить 8 строк в ТЗ, то есть я могу написать алгоритм, который так будет работать. На данном примере ускорение в два раза, на реальных примерах есно ускорение намного больше.
#30 by NS
Опять косячу. ПолноеНаименование есно нужно заполнить после полной обработки таблицы. Всяко быстрее будет.
#31 by Истину
Пит знает!
#32 by NS
Я для кого старался?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С