![]() |
|
v7: Прямой запрос: аналог WITH ROLLUP для dbf-базы | ☑ | ||
---|---|---|---|---|
0
DCKiller
27.07.11
✎
17:49
|
Существует ли таковой? Т.е. необходимо получить результат запроса в виде таблицы
Склад Товар ИтогПоСкладам ИтогПоТоварам Количество 1 1 220 Основной 1 100 Основной Товар1 60 Основной Товар2 40 Вспомогательный 1 120 Вспомогательный Товар1 90 Вспомогательный Товар2 30 Еще раз: речь о dbf-базе. |
|||
1
DCKiller
27.07.11
✎
19:03
|
алё?
|
|||
2
kiruha
27.07.11
✎
19:08
|
Выгружаешь в Индексированную таблицу,и там группируешь
|
|||
3
runoff
27.07.11
✎
19:09
|
(2) а если измерения и строки, и колонки, а не только строки как в ROLLUP? -)
|
|||
4
DCKiller
27.07.11
✎
19:14
|
(2) не айс, долго слишком
|
|||
5
kiruha
27.07.11
✎
19:16
|
(4)
группировать надо с тэгом * - тогда не происходит обращение к БД Где то 100 000 - меньше сек |
|||
6
Ёпрст
гуру
27.07.11
✎
19:19
|
..или, использовать класс.ИтогиПоГруппировкам от A'dirks & сотоварищи..
|
|||
7
DCKiller
27.07.11
✎
19:19
|
(5) ОК, попробуем.
|
|||
8
DCKiller
27.07.11
✎
19:20
|
(6) А мона ссылку?
|
|||
9
Ёпрст
гуру
27.07.11
✎
19:23
|
||||
10
DCKiller
27.07.11
✎
19:30
|
(9) Благодарствуем-с.
|
|||
11
DCKiller
28.07.11
✎
06:50
|
(5) Вид строки группировки д.б. таким? К примеру, если таблица группируется по 4 колонкам.
"Покупатель: *Покупатель; Поставщик: *Поставщик; Номенклатура: *&Номенклатура; Единица: Единица" Собираю в ИТЗ данные за месяц по одной фирме, записей получается меньше той цифры, что названа вами. Время группировки ИТЗ - 2 мин. 16 сек. Мож я где чего напутал? |
|||
12
kiruha
28.07.11
✎
07:04
|
(11)
Замеры http://www.1cpp.ru/forum/YaBB.pl?num=1196866345/0 в Единицу тоже "Покупатель: *Покупатель; Поставщик: *Поставщик; Номенклатура: *&Номенклатура; Единица: *Единица" а вообще структура группировки весьма странная. Детальные записи не обязательно группировать - 1 добавить в 3 параметр ИТЗ |
|||
13
DCKiller
28.07.11
✎
07:08
|
(12) Добавил к Единице звездочку - скорость та же самая...
Без звездочек, правда, еще медленнее получается - 3 с копейками минуты... "Детальные записи не обязательно группировать" - т.е. можно единицы в строке группировок не указывать? |
|||
14
DCKiller
28.07.11
✎
07:16
|
Ну вот, сделал без единиц - получил выигрыш в скорости. Аж целых 7 секунд :)))
|
|||
15
kiruha
28.07.11
✎
07:24
|
А без иерархии номенклатуры, типа
"Покупатель: *Покупатель; Поставщик: *Поставщик;" |
|||
16
kiruha
28.07.11
✎
07:28
|
>>При группировке возможно также подсчитывать суммы по группам справочников - для этого в списке модификаторов индекса нужно указать '&'. Если в таблице есть колонка с именем '<ИмяКолонкиСправочника>_Родитель', то родитель для элемента будет браться из этой колонки - это уменьшает количество обращений к базе, и заметно увеличивает производительность.
у тебя при каждом Покупателе и поставщике идет обращение к базе , причем полный скан спр Номенклатура |
|||
17
DCKiller
28.07.11
✎
07:35
|
(15) Ну, в этом случае время выполнения 4,6 сек. Вместе с запросом...
(16) Тут дело в том, что может (и очень вероятно!) потребоваться группировка номенклатуры по группам. Как-то можно оптимизировать? Какой вид должна будет иметь строка группировки в таком случае? |
|||
18
DCKiller
28.07.11
✎
07:37
|
+17 А, все увидел в (16) :) Т.е. надо, чтобы в ИТЗ был еще непосредственный ParentID конкретного элемента номенклатуры?
|
|||
19
kiruha
28.07.11
✎
07:38
|
Ага
Как Номенклатура_Родитель |
|||
20
DCKiller
28.07.11
✎
07:57
|
(19) 1 мин. 40 сек. Быстрее, я так понял, сделать не получится?
|
|||
21
kiruha
28.07.11
✎
08:07
|
а без иерархии ?
"Покупатель: *Покупатель; Поставщик: *Поставщик; Номенклатура: *Номенклатура" |
|||
22
DCKiller
28.07.11
✎
08:16
|
(21) Фигассе... 21,4 сек. всего О_о
|
|||
23
DCKiller
28.07.11
✎
08:20
|
+22 а без Номенклатура_Родитель вообще за 16 сек. группируется
|
|||
24
kiruha
28.07.11
✎
08:27
|
Значит проблема в иерархии
Можно или вручную разруливать или поэксперементировать с ИТ Типа попробовать только с одним уровнем "Покупатель: *Покупатель; Поставщик: *Поставщик;Номенклатура_Родитель: *Номенклатура_Родитель; Номенклатура: *Номенклатура" или может ей в ТЗ не хватает сведений о всех родителях и надо группы в ИТ кидать ? |
|||
25
kiruha
28.07.11
✎
08:40
|
И кстати(это уже не к иерархии и не к ИТ) - при выводе отчета в ТабДок
надо уже иметь Номенклатура_Наименование и т.п., и выводить в отчет Номенклатура_Наименование, а Номенклатура ставить в расшифровку только - иначе чтобы отобразить Номенклатуру на каждой строке будет обращение к базе |
|||
26
DCKiller
29.07.11
✎
08:22
|
(25) Учтем, спасибо.
|
|||
27
DCKiller
29.07.11
✎
08:24
|
(24) Если в ИТ кидать все группы, то как быть с названиями колонок? Номенклатура_Родитель1, Номенклатура_Родитель2 и т.д.?
|
|||
28
DCKiller
29.07.11
✎
08:26
|
Иерархия это вообще ж*па.
В том плане, что при группировке ИТЗ и гемор со скоростью группировки создает, и пользователю без нее в большинстве случаев отчет неинтересно смотреть. |
|||
29
Salimbek
29.07.11
✎
09:07
|
(20) А Замер производительности в отладчике не смотрел? Может тормоза уже не в запросе и ИТЗ, а в не оптимальном остальном коде?
|
|||
30
DCKiller
29.07.11
✎
09:10
|
(29) После выполнения запроса и группировки ИТЗ идет только вывод на печать. Замерялась именно скорость выполнения запроса и скорость группировки ИТЗ на соответствующем участке кода.
|
|||
31
DCKiller
29.07.11
✎
12:09
|
Ахтунг, проблема! Выяснилос, что если группировки ИТЗ выводятся по порядку
Покупатель Поставщик Номенклатура (в иерархии! оч. важно) Документ то в этом случае один и тот же документ (да и любой нижестоящий уровень группировки) за период выводится ровно столько раз, сколько было предварительно выведено уровней номенклатуры (иерархия групп+элемент). Если номенклатура выводится без иерархии, то тут все нормально. Как-то можно это исправить? |
|||
32
DCKiller
29.07.11
✎
12:49
|
Товарищи, ау? У кого какие идеи? До конца рабочего дня чуть больше часа, поможите, пли-из! :) Смотрю список методов ИТЗ в СП, нутром чую, что истина где-то рядом, но вот где - никак поймать не могу :(
|
|||
33
Salimbek
29.07.11
✎
15:24
|
(32) Я, обычно, не делаю все в одной группировке.
Т.е. делаю ИТЗ.Группировать(Группировки,Суммы,1); Далее перебираю верхний уровень групп, а если надо внутри что-то более подробно, то использую: ТЗПотомки = ИТЗ.ТЗПотомки; ТЗПотомки.ВыбратьСтроки(); //или группировать, и т.д. Применительно к твоему случаю - делаешь группировку без документа, далее в обходе из ТЗПотомки вытаскиваешь детализацию по документам. |
|||
34
DCKiller
31.07.11
✎
12:42
|
(33) Спасибо, проблема уже решена :)
Кстати, чисто ради интереса, хотелось бы узнать: имеются ли случаи перевода отчетов типовых конфигураций (той же ТиС, к примеру) полностью на прямые запросы? |
|||
35
DCKiller
31.07.11
✎
12:43
|
+34 в смысле, перевода ВСЕХ типовых отчетов конфы на прямые запросы. Т.е. по сути, полноценный пакет решений.
|
|||
36
Mikeware
31.07.11
✎
12:48
|
(35) У Тойпауля нечто такое есть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |